Wir müssen uns nochmal was mit dem Kernelupdaten bei folgender Installation beschäftigen.
Installation
- ROCKPro64
- SD-Karte
- PCIe-NVMe-Adapter mit SSD
Bei dieser Installation nutzen wir die SD-Karte nur zum Booten und binden so früh wie möglich das Rootverzeichnis (/) ein. Dieses Rootverzeichnis liegt auf der SSD.
Verzeichnis Struktur
rock64@rockpro64v2_1_TEST:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 992M 0 992M 0% /dev
tmpfs 200M 448K 199M 1% /run
/dev/nvme0n1 229G 8,5G 209G 4% /
tmpfs 996M 0 996M 0% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 996M 0 996M 0% /sys/fs/cgroup
/dev/mmcblk0p6 112M 4,0K 112M 1% /boot/efi
tmpfs 200M 0 200M 0% /run/user/1000
Hier sieht man die Rootpartition /, die auf /dev/nvme0n1 verweist.
Und die Bootpartition /boot/efi, die auf /dev/mmcblk0p6 liegt.
SD-Karte
Device Start End Sectors Size Type
/dev/mmcblk0p1 64 8063 8000 3,9M Linux filesystem
/dev/mmcblk0p2 8064 8191 128 64K Linux filesystem
/dev/mmcblk0p3 8192 16383 8192 4M Linux filesystem
/dev/mmcblk0p4 16384 24575 8192 4M Linux filesystem
/dev/mmcblk0p5 24576 32767 8192 4M Linux filesystem
/dev/mmcblk0p6 32768 262143 229376 112M Microsoft basic data
/dev/mmcblk0p7 262144 124735454 124473311 59,4G Linux filesystem
SSD
rock64@rockpro64v2_1_TEST:~$ ls /
bin boot_BAK etc lib media opt root sbin sys usr
boot dev home lost+found mnt proc run srv tmp var
Was passiert jetzt, wenn man den Kernel updatet?
Ich mache das fast immer so, das ich mir vom Kamil alle Files runterlade und diese dann per
sudo dpkg -i *.deb
installiere. Dabei werden die neuen Files in /boot reingeschrieben.
rock64@rockpro64v2_1_TEST:~$ ls /boot
config-4.4.132-1075-rockchip-ayufan-ga83beded8524
config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
dtbs
efi
extlinux
filesystem.packages
filesystem.packages-remove
initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
Wir sehen hier, das es dort drei verschiedene Kernel gibt.
- 4.4.132-1075
- 4.4.154-1122
- 4.4.154-1124
Jetzt installieren wir mal einen Mainline Kernel.
Dazu laden wir die drei benötigten Files herunter.
Dann ein
sudo dpkg -i *.deb
Ausgabe
rock64@rockpro64v2_1_TEST:~$ sudo dpkg -i *.deb
Vormals nicht ausgewähltes Paket linux-headers-4.19.0-1073-ayufan-ga6e013135a6e wird gewählt.
(Lese Datenbank ... 101525 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von linux-headers-4.19.0-1073-ayufan-ga6e013135a6e_4.19.0-1073-ayufan_arm64.deb ...
Entpacken von linux-headers-4.19.0-1073-ayufan-ga6e013135a6e (4.19.0-1073-ayufan) ...
Vormals nicht ausgewähltes Paket linux-image-4.19.0-1073-ayufan-ga6e013135a6e wird gewählt.
Vorbereitung zum Entpacken von linux-image-4.19.0-1073-ayufan-ga6e013135a6e_4.19.0-1073-ayufan_arm64.deb ...
Entpacken von linux-image-4.19.0-1073-ayufan-ga6e013135a6e (4.19.0-1073-ayufan) ...
Vormals nicht ausgewähltes Paket linux-image-4.19.0-1073-ayufan-ga6e013135a6e-dbg wird gewählt.
Vorbereitung zum Entpacken von linux-image-4.19.0-1073-ayufan-ga6e013135a6e-dbg_4.19.0-1073-ayufan_arm64.deb ...
Entpacken von linux-image-4.19.0-1073-ayufan-ga6e013135a6e-dbg (4.19.0-1073-ayufan) ...
linux-headers-4.19.0-1073-ayufan-ga6e013135a6e (4.19.0-1073-ayufan) wird eingerichtet ...
linux-image-4.19.0-1073-ayufan-ga6e013135a6e (4.19.0-1073-ayufan) wird eingerichtet ...
update-initramfs: Generating /boot/initrd.img-4.19.0-1073-ayufan-ga6e013135a6e
Creating new extlinux.conf...
Installing new extlinux.conf...
linux-image-4.19.0-1073-ayufan-ga6e013135a6e-dbg (4.19.0-1073-ayufan) wird eingerichtet ...
Jetzt schauen wir uns das Verzeichnis von eben nochmal an.
rock64@rockpro64v2_1_TEST:~$ ls /boot
config-4.19.0-1073-ayufan-ga6e013135a6e
config-4.4.132-1075-rockchip-ayufan-ga83beded8524
config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
dtbs
efi
extlinux
filesystem.packages
filesystem.packages-remove
initrd.img-4.19.0-1073-ayufan-ga6e013135a6e
initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
System.map-4.19.0-1073-ayufan-ga6e013135a6e
System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
vmlinuz-4.19.0-1073-ayufan-ga6e013135a6e
vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
Wir sehen den neuen Kernel 4.19 Aktuell läuft folgender Kernel.
rock64@rockpro64v2_1_TEST:~$ uname -a
Linux rockpro64v2_1_TEST 4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1 #1 SMP Mon Oct 22 20:59:41 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
Wir starten mal neu!
sudo reboot now
Aufpassen! Aktuell geht der Reboot mit Kernel 4.4. so nicht. Mal bitte die Reset Taste auf dem ROCKPro64 betätigen!
Wir schauen mal nach dem Kernel.
rock64@rockpro64v2_1_TEST:~$ uname -a
Linux rockpro64v2_1_TEST 4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1 #1 SMP Mon Oct 22 20:59:41 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
Hoppla, was das? Er startet immer noch den Kernel 4.4.154 Warum?
Bootvorgang
Beim Booten von der SD-Karte wird von dort der Kernel geladen, erst später schalten wir dann auf die SSD um. Damit ist die Aktualisierung von oben erst mal wirkungslos. Aber das ist recht einfach, wir müssen die Verzeichnisse nur identisch halten.
SD-Karte mounten
Nochmal auf die SD-Karte zurück gehen. Die Struktur von oben sieht so aus.
Device Start End Sectors Size Type
/dev/mmcblk0p1 64 8063 8000 3,9M Linux filesystem
/dev/mmcblk0p2 8064 8191 128 64K Linux filesystem
/dev/mmcblk0p3 8192 16383 8192 4M Linux filesystem
/dev/mmcblk0p4 16384 24575 8192 4M Linux filesystem
/dev/mmcblk0p5 24576 32767 8192 4M Linux filesystem
/dev/mmcblk0p6 32768 262143 229376 112M Microsoft basic data
Die Partition
/dev/mmcblk0p6 112M 4,0K 112M 1% /boot/efi
ist schon gemountet. Die interessiert aber nicht. Wir brauchen das Rootverzeichnis der SD-Karte. Das ist die Partition
/dev/mmcblk0p7
Das Mounten wir jetzt mal eben nach /mnt
sudo mount /dev/mmcblk0p7 /mnt
Dort interessiert uns das Verzeichnis boot
rock64@rockpro64v2_1_TEST:~$ ls /mnt/boot
config-4.4.132-1075-rockchip-ayufan-ga83beded8524
config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
dtbs
efi
extlinux
filesystem.packages
filesystem.packages-remove
initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
Wer bis hierhin mitgekommen ist, weiß jetzt wo das Problem liegt Auf der SD-Karte muss ebenfalls der Mainline Kernel drauf. Also kopieren wir uns das mal eben rüber.
Quelle
rock64@rockpro64v2_1_TEST:~$ ls /boot
config-4.19.0-1073-ayufan-ga6e013135a6e
config-4.4.132-1075-rockchip-ayufan-ga83beded8524
config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
dtbs
efi
extlinux
filesystem.packages
filesystem.packages-remove
initrd.img-4.19.0-1073-ayufan-ga6e013135a6e
initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
System.map-4.19.0-1073-ayufan-ga6e013135a6e
System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
vmlinuz-4.19.0-1073-ayufan-ga6e013135a6e
vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
Ziel
rock64@rockpro64v2_1_TEST:~$ ls /mnt/boot
config-4.4.132-1075-rockchip-ayufan-ga83beded8524
config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
dtbs
efi
extlinux
filesystem.packages
filesystem.packages-remove
initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
Kopieren
sudo cp -r /boot/* /mnt/boot
Kontrolle Ziel
rock64@rockpro64v2_1_TEST:~$ ls /mnt/boot
config-4.19.0-1073-ayufan-ga6e013135a6e
config-4.4.132-1075-rockchip-ayufan-ga83beded8524
config-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
config-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
dtbs
efi
extlinux
filesystem.packages
filesystem.packages-remove
initrd.img-4.19.0-1073-ayufan-ga6e013135a6e
initrd.img-4.4.132-1075-rockchip-ayufan-ga83beded8524
initrd.img-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
initrd.img-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
System.map-4.19.0-1073-ayufan-ga6e013135a6e
System.map-4.4.132-1075-rockchip-ayufan-ga83beded8524
System.map-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
System.map-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
test
vmlinuz-4.19.0-1073-ayufan-ga6e013135a6e
vmlinuz-4.4.132-1075-rockchip-ayufan-ga83beded8524
vmlinuz-4.4.154-1122-rockchip-ayufan-g7859b9b904a9
vmlinuz-4.4.154-1124-rockchip-ayufan-ged3ce4d15ec1
Da ist der Kernel 4.19. Noch was Wichtiges, wir müssen die extlinux.conf wieder anpassen.
sudo nano /mnt/boot/extlinux/extlinux.conf
Ich setze voraus, das das bekannt ist. Ansonsten hier zum Nachlesen!
Wir entfernen den Mount.
sudo umount /mnt
sudo reboot now
Erinnerung! Reboot now ist in Kernel 4.4. aktuell kaputt
Und nachschauen!
rock64@rockpro64v2_1_TEST:~$ uname -a
Linux rockpro64v2_1_TEST 4.19.0-1073-ayufan-ga6e013135a6e #1 SMP PREEMPT Tue Oct 23 09:19:54 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
Yeah! Kernel 4.19 läuft. Ich hoffe das Prinzip ist verständlich und ihr könnt das gut nachbauen. Wir wollen mal hoffen, das wir in Zukunft einen u-boot sehen, der in der Lage ist direkt von der PCIe-NVMe-Karte zu booten. Das würde einiges vereinfachen, den u-boot in den SPI Flash und fertig! Ob es das mal gibt, weiß ich nicht. Im Moment müssen wir uns so behelfen. Da man den Kernel im Normalfall ja nicht jeden Tag aktualisiert, ist das eine praktikable Lösung!
Viel Spaß mit einem flotten ROCKPro64!