Skip to content

danissomo/pipa-ubuntu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Сборка окружения Ubuntu под Xiaomi Pad 6 (pipa)

Проект базируется на ядре, модулях из другой инструкции. Для начала советую поставить arch по ней, чтобы проверить, что все работает. Для тех кому не интересно собрать что-то свое можно сразу качать образ и переходить сюда.

Установка зависимостей

Ubuntu/Debian

sudo apt update
sudo apt install -y debootstrap qemu-user-static binfmt-support android-tools-fastboot android-tools-fsutils p7zip-full gdown

Arch

sudo pacman -Syu --needed debootstrap qemu-user-static qemu-binfmt android-tools p7zip
yay -Sy gdown

Подготовка

Проверить binfmt

Для работы с chroot окружением arm64 нам потребуется онлайн трансляция байткода в нашу материнскую архитектуру (и наверное это amd64). Поэтому нам потребуется binfmt.

cat /proc/sys/fs/binfmt_misc/qemu-aarch64

Вывод должен быть примерно таким:

enabled
interpreter /usr/bin/qemu-aarch64-static
flags: ...

Список всех зарегистрированных интерпретаторов можно посмотреть так:

ls /proc/sys/fs/binfmt_misc/

Главное чтобы там было qemu-aarch64

Kernel modules, firmware

Скачать и распаковать модули

gdown 11vbhryMM5gqvH5VtXBEU2jdGErm7kEwd #https://drive.google.com/file/d/11vbhryMM5gqvH5VtXBEU2jdGErm7kEwd/view
7z e arch-v0.2.7z && rm arch-v0.2.7z

gdown 1EBjFueV5KI_8MHIzE0qkxejkCGMQpkMG #https://drive.google.com/file/d/1EBjFueV5KI_8MHIzE0qkxejkCGMQpkMG/view?usp=drive_link
unzip arch_modules_v3_0_0.zip  -d arch_modules_v3_0_0 && rm arch_modules_v3_0_0.zip

Должны скачаться и распаковаться файлы:

./
├── arch_modules_v3_0_0
├── arch_rootfs_fastboot_v02.img
└──boot_arch_domin746826.img

Chroot окружение

Будем собирать Ubuntu 24.04 (noble)

sudo debootstrap \
  --arch=arm64 \
  --foreign \
  --variant=minbase \
  --components=main,universe \
  --include=systemd-sysv,dbus,ca-certificates,locales,netbase,iproute2,iputils-ping,wget,curl,man-db,sudo,passwd,login \
  noble \
  ubuntu-aarch64-noble \
  http://ports.ubuntu.com/ubuntu-ports
sudo cp /usr/bin/qemu-aarch64-static ubuntu-aarch64-noble/usr/bin/
sudo chroot ubuntu-aarch64-noble /debootstrap/debootstrap --second-stage

Далее нужно:

  1. Добавить sbin в PATH
  2. Создать пользователя
  3. Установить дополнительные пакеты
    • ubuntu-desktop
    • locales
    • dialog
    • apt-utils
    • vim
    • less
    • net-tools
    • iproute2
    • systemd-sysv
    • nano
    • ssh
    • pulseaudio
  4. Сконфигурировать локали
  5. Задать хостнейм и добавить его в /etc/hosts
sudo chroot ubuntu-aarch64-noble #заходим в окружение
export PATH="$PATH:/sbin:/usr/sbin:usr/local/sbin"
adduser pipa
usermod -aG sudo pipa
apt update
apt install -y ubuntu-desktop
apt install -y locales dialog apt-utils vim less net-tools iproute2 systemd-sysv nano ssh pulseaudio
dpkg-reconfigure locales
hostname pipa
echo "pipa" > /etc/hostname
echo "127.0.0.1       pipa" >> /etc/hosts 

Фикс звука

Pipewire на планшете работает некорректно - звук очень тихий, поэтому заменяем на pulseaudio.

sudo chroot ubuntu-aarch64-noble #не забываем заходить в окружение
apt install -y pulseaudio pulseaudio-utils pavucontrol
systemctl --user mask pipewire-pulse.service pipewire-pulse.socket wireplumber.service
systemctl --user unmask pulseaudio.service pulseaudio.socket
systemctl --user enable --now pulseaudio.service pulseaudio.socket

Нужно отключить глобально pipewire, wireplumber, pipewire-pulse

sudo chroot ubuntu-aarch64-noble #не забываем заходить в окружение
sudo systemctl --global mask pipewire.service pipewire.socket wireplumber.service pipewire-pulse.service pipewire-pulse.socket
systemctl --global  unmask pulseaudio.service pulseaudio.socket
systemctl --global enable pulseaudio.service pulseaudio.socket

Также нужно пропатчить ucm конфиги, в стандартных MultiMedia2 и PlaybackPCM "hw:${CardId},1"

sudo chroot ubuntu-aarch64-noble #не забываем заходить в окружение
tee /usr/share/alsa/ucm2/Qualcomm/sm8250/HiFi2.conf > /dev/null <<'EOF'
Syntax 3

SectionVerb {
    EnableSequence [
        cset "name='TERT_TDM_RX_0 Audio Mixer MultiMedia1' 1"
    ]

    DisableSequence [
        cset "name='TERT_TDM_RX_0 Audio Mixer MultiMedia1' 0"
    ]

    Value {
        TQ "HiFi"
    }
}

SectionDevice."Speaker" {
    Comment "Speaker playback"

    Value {
        PlaybackPriority 200
        PlaybackPCM "hw:${CardId},0"
    }
}
EOF

tee /usr/share/alsa/ucm2/conf.d/sm8250/Xiaomi\ Pad\ 6.conf > /dev/null <<'EOF'
Syntax 3

SectionUseCase."HiFi" {
  File "/Qualcomm/sm8250/HiFi2.conf"
  Comment "HiFi quality Music."
}

SectionUseCase."HDMI" {
  File "/Qualcomm/sm8250/HDMI.conf"
  Comment "HDMI output."
}
EOF

Фикс ориентации монитора

По дефолту и на экране блокировки и на рабочем столе монитор будет повернут на бок, это нужно исправлять.

sudo chroot ubuntu-aarch64-noble #не забываем заходить в окружение
tee /var/lib/gdm3/.config/monitors.xml > /dev/null <<'EOF'
<monitors version="2">
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <scale>2</scale>
      <primary>yes</primary>
      <transform>
        <rotation>right</rotation>
        <flipped>no</flipped>
      </transform>
      <monitor>
        <monitorspec>
          <connector>DSI-1</connector>
          <vendor>unknown</vendor>
          <product>unknown</product>
          <serial>unknown</serial>
        </monitorspec>
        <mode>
          <width>1800</width>
          <height>2880</height>
          <rate>120.000</rate>
        </mode>
      </monitor>
    </logicalmonitor>
  </configuration>
</monitors>
EOF

mkdir -p /home/pipa/.config
cp /var/lib/gdm3/.config/monitors.xml /home/pipa/.config/monitors.xml
chown -R pipa /home/pipa

Закидываем kernel modules и firmware

В прошлых шагах мы скачали образы системы и модули ядра. Теперь нужно перенести /lib/firmware и /lib/modules в наше chroot окружение.

firmware:

mkdir arch_img
simg2img arch_rootfs_fastboot_v02.img arch_img.img
sudo mount ./arch_img.img ./arch_img
sudo cp -r ./arch_img/lib/firmware/* ./ubuntu-aarch64-noble/lib/firmware/
sudo umount ./arch_img

Kernel modules:

sudo rm -rf ./ubuntu-aarch64-noble/lib/modules/*
sudo cp -r ./arch_modules_v3_0_0/lib/modules/* ./ubuntu-aarch64-noble/lib/modules/

Создание образа

Для загрузки fastboot образ должен быть формата sparse image. Наше ядро от arch ищет метку arch_rootfs, по которой и монтирует rootfs.

mkdir mnt
dd if=/dev/zero of=userdata.ext4 bs=1M count=5500
mkfs.ext4 -F -L arch_rootfs -O ^metadata_csum,^64bit userdata.ext4
sudo mount userdata.ext4 mnt
sudo cp -a ubuntu-aarch64-noble/* mnt/
sudo umount mnt
img2simg userdata.ext4 pipa-ubuntu-noble.img

Заметка, для пересборки после изменений в окружении:

sudo mount userdata.ext4 mnt
sudo cp -a ubuntu-aarch64-noble/* mnt/ 
sudo umount mnt
img2simg userdata.ext4 pipa-ubuntu-noble.img

Прошивка

Если вы еще не прошивали boot от инструкции с arch.

gdwon 1E7-n2ziHckgW60yp4GjVcoTpSGJgsPXt #https://drive.google.com/file/d/1E7-n2ziHckgW60yp4GjVcoTpSGJgsPXt/view
# перевести планшет в fastboot, подключить к компу и грузить
fastboot flash boot_a arch_boot_v3_0_0.img
fastboot flash boot_b arch_boot_v3_0_0.img

Готово! Теперь можно подключать планшет к компу в режиме fastboot и грузить.

fastboot flash userdata pipa-ubuntu-noble.img
fastboot reboot

После установки нужно обязательно поставить правильную дату и все обновить (apt upgrade), там пофиксили многие проблемы (например многие пункты меню нельзя было нажать с тачскрина). После апдейта может отрыгнуть звук и тогда советую повторить пункт Фикс звука, но уже на самом планшете.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors