PinePhone и ядро PineTab

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

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

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

The recovery presents the PinePhone as a network device over USB and runs a telnet server. When you connect the PinePhone to your desktop via USB, you will see the rndis device show up in your desktop’s 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.

The recovery also exposes the eMMC and the microSD card over USB. Assuming you have already installed Ubuntu Touch on your microSD card you will see something like this in your desktop’s 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.

The microSD card with Ubuntu Touch contains 10 partitions: loader, scr, persist, boot_a, boot_b, recovery_a, recovery_b, cache, system and userdata. To update the kernel you want to mount boot_a. Check which device is the SDcard in your OS and mount boot_a. In the example above this is sdc4. Inside that partition you’ll see the kernel vmlinuz and related files: config-5.6.0-pine64 dtb initrd.img modules/ System.map-5.6.0-pine64 vmlinuz.

Сборка ядра

To install dependencies, get the source code, configure and build the kernel, run the following:

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.

References

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

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

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

  • PinePhone forum from Pine64 is where many other communities gather that work with the PinePhone

  • sunxi community is where much of the mainlining effort for Allwinner devices including the PinePhone takes place. Note their build instructions.

  • Crust firmware implements a deep sleep state and runs on a dedicated System Control Processor outside the main CPU and DRAM.