PinePhone e PineTab kernel#

Questo documento descrive come costruire e installare il kernel PinePhone o PineTab. Prima si spiega il sistema di recupero. Poi l’attuale costruzione e l’installazione. In fondo ci sono alcuni riferimenti.

Recupero (recovery)#

L’immagine Ubuntu Touch contiene un `recupero <https:// github.com/ubports/jumpdrive >`_ modalità di avvio basato su «jumpdrive». Per entrare nella stampa di recupero e tenere i pulsanti di potenza e volume-up fino a quando il led si accende.

Il recupero presenta il PinePhone come dispositivo di rete su USB ed esegue un server telnet. Quando si collega il PinePhone al desktop tramite USB, si vedrà il dispositivo rndis apparire nel dmesg del desktop:

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

È possibile accedere al sistema di recupero con telnet 172.16.42.1.

Il recupero espone anche l’eMMC e la scheda microSD su USB. Supponendo di aver già installato Ubuntu Touch sulla vostra scheda microSD vedrete qualcosa come questo nel desktop 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

L’eMMC con jumpdrive contiene due partizioni: pmOS_boot e pmOS_root.

La scheda microSD con Ubuntu Touch contiene 10 partizioni: loader, scr, persist, boot_a, boot_b, recovery_a, recovery_b, cache, sistema e userdata. Per aggiornare il kernel si desidera montare boot_a. Controllare quale dispositivo è la scheda SD nel sistema operativo e montare boot_a. Nell’esempio sopra questo è sdc4. All’interno di quella partizione vedrai il kernel vmlinuz e i relativi file:config-5.6.0-pine64 dtb initrd.img modules/ System.map-5.6.0-pine64 vmlinuz.

Costruire il kernel#

Per installare dipendenze, ottenere il codice sorgente,configurare e costruire il kernel, eseguire le seguenti operazioni:

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

Installare il kernel#

Riavviare in recupero e montare boot_a. Fai un backup se necessario. Quindi copiare sul vostro kernel di nuova costruzione e se necessario moduli:

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]

Successivamente essere sicuri di smontare la partizione così è scritta in modo pulito. Ora puoi riavviare il PinePhone. Una volta avviato, è possibile verificare che il kernel sia stato aggiornato correttamente controllando la data di compilazione con uname -a sul dispositivo.

Riferimenti#