PinePhone и ядро PineTab#

В этом документе описывается, как собрать и установить ядро для устройств PinePhone или PineTab. Сначала рассказывается системе recovery. Затем про подготовку сборки ОС и установку. В конце документа приводятся справочные материалы.

Recovery (Система восстановления)#

Образ Ubuntu Touch содержит режим загрузки recovery, основанный на «jumpdrive». Чтобы попасть в recovery, нажмите и удерживайте кнопки питания и увеличения громкости, пока не загорится светодиод.

Режим Recovery позволяет подключить PinePhone как сетевое устройство через USB, а так же использовать подключение через telnet-сервер. Когда PinePhone подключается к настольному ПК через USB, можно увидеть, что устройство rndis отображается в dmesg на настольном ПК:

usb 1-7.2: Product: PinePhone
usb 1-7.2: Manufacturer: Pine64
usb 1-7.2: SerialNumber: Jumpdrive
rndis_host 1-7.2:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-7.2, RNDIS device

В систему recovery можно зайти командой telnet 172.16.42.1.

В режиме «Recovery» также через USB доступны eMMC и карта microSD. Если вы уже установили Ubuntu Touch на карту microSD, то на десктопе будет примерно такая картинка `` dmesg``:

usb-storage 1-7.2:1.2: USB Mass Storage device detected
scsi host3: usb-storage 1-7.2:1.2
scsi 2:0:0:0: Direct-Access     JumpDriv e eMMC                PQ: 0 ANSI: 2
scsi 2:0:0:1: Direct-Access     JumpDriv e microSD             PQ: 0 ANSI: 2
sd 2:0:0:0: Attached scsi generic sg1 type 0
scsi 2:0:0:1: Attached scsi generic sg2 type 0
sd 2:0:0:0: [sdb] 30785536 512-byte logical blocks: (15.8 GB/14.7 GiB)
sd 2:0:0:1: [sdc] 124735488 512-byte logical blocks: (63.9 GB/59.5 GiB)
  sdb: sdb1 sdb2
sd 2:0:0:0: [sdb] Attached SCSI removable disk
  sdc: sdc1 sdc2 sdc3 sdc4 sdc5 sdc6 sdc7 sdc8 sdc9 sdc10

На карте eMMC с jumpdrive есть два раздела: pmOS_boot и pmOS_root.

Карта microSD с Ubuntu Touch есть 10 разделов: loader, scr, persist, boot_a, boot_b, recovery_a, recovery_b, cache, system и userdata. Чтобы обновить ядро, нужно смонтировать раздел boot_a. Проверьте, какое устройство является SD-картой в системе, и смонтируйте раздел boot_a. В приведенном выше примере это устройство sdc4. На него записано ядро vmlinuz и связанные с ним файлы: `` config-5.6.0-pine64`` dtb` initrd.img`` modules/ `` System.map-5.6 .0-pine64`` vmlinuz.

Сборка ядра#

Чтобы установить файлы зависимостей, скачайте исходный код <https://gitlab.com/pine64-org/linux/-/tree/pine64-kernel-ubports> _, настройте и соберите ядро, выполните следующую команду:

sudo apt install build-essential flex bison gcc-aarch64-linux-gnu libssl-dev
git clone -b pine64-kernel-ubports https://gitlab.com/pine64-org/linux.git
cd linux
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KBUILD_VERSION=arm64 LOCALVERSION=-pine64 make pine64_defconfig
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KBUILD_VERSION=arm64 LOCALVERSION=-pine64 make -j18 bindeb-pkg

Установка ядра системы#

Загрузитесь в recovery и смонтируйте раздел boot_a. При необходимости сделайте резервную копию. Затем скопируйте новое ядро и, если необходимо, модули:

cp -v linux/debian/linux-image/boot/vmlinuz-5.6.0-pine64 [MOUNT POINT BOOT_A]/vmlinuz
cp -v linux/debian/linux-image/boot/config-5.6.0-pine64 [MOUNT POINT BOOT_A]
cp -v linux/debian/linux-image/boot/System.map-5.6.0-pine64  [MOUNT POINT BOOT_A]
sudo rm -rf [MOUNT POINT BOOT_A]/modules
sudo cp -rv linux/debian/linux-image/lib/modules [MOUNT POINT BOOT_A]

После этого не забудьте размонтировать раздел, чтобы он был чистым. Теперь можно перезагрузить PinePhone. После загрузки можно увидеть, что ядро было успешно обновлено с помощью команды uname -a.

Справка и помощь#

  • В Pine64 wiki есть общая информация об аппаратном обеспечении, ссылки на другие проекты ОС PinePhone, схемы подключения последовательного интерфейса UART через разъем для наушников (готовое устройство доступно в официальном магазине), справочные таблицы со спецификациями, известные проблемы с оборудованием и так далее

  • В Основном репозиторий UBports есть инструкция по установке образов UT на PinePhone

  • Баг-трекер UBPorts

  • Официальный форум PinePhone <https://forum.pine64.org/forumdisplay.php?fid=120> _ - это место, где общаются многие группы пользователей и поклонников PinePhone

  • В сообществе sunxi <https://linux-sunxi.org> _ занимаются адаптацией ядра <https://linux-sunxi.org/Linux_mainlining_effort> _ для устройств Allwinner, включая PinePhone. Обратите внимание на их инструкции по сборке <https://linux-sunxi.org/Mainline_Kernel_Howto> `_.

  • Прошивка Crust <https://github.com/crust-firmware/crust> _ реализует состояние глубокого сна и работает на выделенном процессоре управления системой (System Control Processor) вне основного процессора и DRAM.