Wichtig, nach der Installation!
Schritt 1
SSD an anderen Rechner anschließen
Image vom Kamil -> buster-minimal-rockpro64-0.10.12-1184-arm64.img lokal einhängen!
Dateien kopieren!
Von Kamils Boot-Partition werden die zwei Ordner auf die Boot-Partition der SSD kopiert.
- /boot/dtbs
- /boot/extlinux
Damit die Installation startet, müssen wir jetzt auf der SSD in der Boot-Partition folgende Datei bearbeiten.
/boot/extlinux/extlinux.conf
Original Inhalt vom Kamil
timeout 10
menu title select kernel
label kernel-5.6.0-1137-ayufan-ge57f05e7bf8f
kernel /vmlinuz-5.6.0-1137-ayufan-ge57f05e7bf8f
initrd /initrd.img-5.6.0-1137-ayufan-ge57f05e7bf8f
devicetreedir /dtbs/5.6.0-1137-ayufan-ge57f05e7bf8f
append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=linux-root rootwait rootfstype=ext4
label kernel-5.6.0-1137-ayufan-ge57f05e7bf8f-memtest
kernel /vmlinuz-5.6.0-1137-ayufan-ge57f05e7bf8f
initrd /initrd.img-5.6.0-1137-ayufan-ge57f05e7bf8f
devicetreedir /dtbs/5.6.0-1137-ayufan-ge57f05e7bf8f
append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=linux-root rootwait rootfstype=ext4 memtest
Das müssen wir jetzt an die Installation anpassen. Je nachdem auf welchem Device wir das Debian installiert haben, muss das entsprechend angepasst werden.
Devices
Erster Fall wäre eine PCIe NVMe SSD, zweiter Fall wäre eine SSD, die an einer PCIe SATA Karte angeschlossen ist.
root=/dev/nvme0n1p2 (unverschlüsselt)
root=/dev/mapper/debian--vg-root (verschlüsselt)
root=/dev/sda2 (unverschlüsselt)
root=/dev/mapper/debian--vg-root (LVM verschlässelt)
Beispiel für eine Installation auf sda (unverschlüsselt)
timeout 10
menu title select kernel
label kernel-5.7.0-1-arm64
kernel /vmlinuz-5.7.0-1-arm64
initrd /initrd.img-5.7.0-1-arm64
devicetreedir /dtbs/5.6.0-1137-ayufan-ge57f05e7bf8f
append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=/dev/sda2 rootwait rootfstype=ext4
label kernel-5.6.0-1137-ayufan-ge57f05e7bf8f-memtest
kernel /vmlinuz-5.6.0-1137-ayufan-ge57f05e7bf8f
initrd /initrd.img-5.6.0-1137-ayufan-ge57f05e7bf8f
devicetreedir /dtbs/5.6.0-1137-ayufan-ge57f05e7bf8f
append rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=${ethaddr} eth1addr=${eth1addr} serial=${serial#} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 root=LABEL=linux-root rootwait rootfstype=ext4 memtest
Kurzerklärung
Wir passen den kernel und die initrd.img an die Daten der Debian Installation an. Da wir von Debian keinen devicetree haben, benutzen wir den von Kamil. Da funktioniert ja auch das Meiste
Das zweite label kernel-5.6.0-1137-ayufan-ge57f05e7bf8f-memtest soll uns jetzt hier mal nicht interessieren.
Nach dieser Änderung, können wir die SSD wieder aushängen und an den ROCKPro64 hängen. Danach booten.
Bitte beachten, wenn ihr eine verschlüsselte Installation gewählt habt, könnt ihr das Passwort NUR über die UART-Schnittstelle eingeben. Für mich kein Problem, die gehört bei mir zur Standardausstattung Es kann aber da draußen welche geben, die keine haben. Dann bitte keine verschlüsselte Installation wählen!
Jetzt sollte der ROCKPro64 mit dem Debian Bullseye starten
root@debian:/boot/extlinux# uname -a
Linux debian 5.7.0-1-arm64 #1 SMP Debian 5.7.6-1 (2020-06-24) aarch64 GNU/Linux
und
root@debian:/boot/extlinux# cat /etc/debian_version
bullseye/sid
Schritt 2
Wir wollen es etwas bequemer haben, wenn ein neuer Kernel auftaucht. Dann müsste man ständig das File anfassen. Ok, wir sind faul Wir kopieren ein paar Dinge vom Kamil.
In /etc/default/ die Datei extlinux erzeugen.
# Configure timeout to choose the kernel
# TIMEOUT="10"
# Configure default kernel to boot: check all kernels in `/boot/extlinux/extlinux.conf`
# DEFAULT="kernel-4.4.126-rockchip-ayufan-253"
# Configure additional kernel configuration options
APPEND="$APPEND root=LABEL=linux-root rootwait rootfstype=ext4"
In /usr/local/sbin das Script update-extlinux.sh erzeugen
#!/bin/bash
TIMEOUT=""
DEFAULT=""
APPEND="rw"
APPEND="$APPEND panic=10"
APPEND="$APPEND init=/sbin/init"
APPEND="$APPEND coherent_pool=1M"
APPEND="$APPEND ethaddr=\${ethaddr} eth1addr=\${eth1addr} serial=\${serial#}"
APPEND="$APPEND cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1"
set -eo pipefail
. /etc/default/extlinux
echo "Creating new extlinux.conf..." 1>&2
mkdir -p /boot/extlinux/
exec 1> /boot/extlinux/extlinux.conf.new
echo "timeout ${TIMEOUT:-10}"
echo "menu title select kernel"
[[ -n "$DEFAULT" ]] && echo "default $DEFAULT"
echo ""
emit_kernel() {
local VERSION="$1"
local APPEND="$2"
local NAME="$3"
echo "label kernel-$VERSION$NAME"
echo " kernel $MOUNT_PREFIX/vmlinuz-$VERSION"
if [[ -f "/boot/initrd.img-$VERSION" ]]; then
echo " initrd $MOUNT_PREFIX/initrd.img-$VERSION"
fi
if [[ -f "/boot/dtb-$VERSION" ]]; then
echo " fdt $MOUNT_PREFIX/dtb-$VERSION"
else
if [[ ! -d "/boot/dtbs/$VERSION" ]]; then
mkdir -p /boot/dtbs
cp -au "/usr/lib/linux-image-$VERSION" "/boot/dtbs/$VERSION"
fi
echo " devicetreedir $MOUNT_PREFIX/dtbs/$VERSION"
fi
echo " append $APPEND"
echo ""
}
if findmnt /boot >/dev/null; then
# If we have `/boot` the files are in `/`
MOUNT_PREFIX=
else
# If we don't have `/boot` mount the files are in `/boot`
MOUNT_PREFIX=/boot
fi
linux-version list | linux-version sort --reverse | while read VERSION; do
emit_kernel "$VERSION" "$APPEND"
emit_kernel "$VERSION" "$APPEND memtest" "-memtest"
done
exec 1<&-
echo "Installing new extlinux.conf..." 1>&2
mv /boot/extlinux/extlinux.conf.new /boot/extlinux/extlinux.conf
Danach
chmod +x /usr/local/sbin/update-extlinux.sh
Danach
cd /boot/extlinux/
Zur Sicherung der Datei, falls was schief geht.
cp extlinux.conf extlinux.conf_BAK
Dann Script ausführen
/usr/local/sbin/./update-extlinux.sh
Ich wollte jetzt eigentlich davon schreiben, wie man das Devicetree austauscht.
---ALT--
Jetzt müssen wir was austauschen. Da Debian kein devicetree ausliefert (?) passen wir das an Kamils an.
Und zwar muss das -> /dtbs/5.7.0-1-arm64 gegen das -> devicetreedir /dtbs/5.6.0-1137-ayufan-ge57f05e7bf8f getauscht werden.
Wir tauschen das dtbs aus!!
sed /devicetreedir/s/5.7.0-1-arm64/5.6.0-1137-ayufan-ge57f05e7bf8f/g extlinux.conf > extlinux.conf_NEW
mv extlinux.conf_NEW extlinux.conf
Das sollte soweit alles kein Problem sein. Ich hatte beim Testen einmal den Fall, das ein neuer Kernel ausgeliefert wurde. Ich bin mir nicht 100% sicher, aber ich meine mich erinnern zu können, das ich danach einen Debian Devicetree hatte. Also aufpassen, sollte das der Fall sein, dann machen wir das o.g. nur einmal! Danach nicht mehr. Ich werde das beobachten und dann hier ergänzen.
---ALT---
Da ich aber immer beim Schreiben meistens alles noch mal kontrolliere, fällt mir gerade auf das ein 5.7er dtbs File vorhanden ist.
root@debian:/boot/dtbs# ls -lha
insgesamt 4,0K
drwxr-xr-x 4 root root 1,0K Jul 9 17:22 .
drwxr-xr-x 5 root root 1,0K Jul 8 19:22 ..
drwxr-xr-x 3 root root 1,0K Apr 15 13:15 5.6.0-1137-ayufan-ge57f05e7bf8f
drwxr-xr-x 16 root root 1,0K Jul 8 18:13 5.7.0-1-arm64
Und NEIN, ich habe im Moment keine Ahnung woher das kommt!? OK, also kein Handlungsbedarf
Update Anfang
Die dtbs findet man unter /usr/lib/linux-image-5.7.0-1-arm64/. Wenn man jetzt Kamils Script aufruft, wird das dtbs auch entsprechend eingebunden. Also alles richtig und wieder was gelernt
Update Ende
Wenn wir jetzt den ROCKPro64 neustarten würden, dann würde er nicht mehr starten. Zur Erinnerung, wir hatten am Anfang folgendes eingestellt.
/dev/sda2
Kamil nennt in /etc/default/extlinux die Partition aber
root=LABEL=linux-root
Wir können jetzt die Partition entsprechend umbenennen. Wir setzen das Label für eine verschlüsselte Installation mit
e2label /dev/mapper/debian--vg-root linux-root
Kontrolle mit
root@debian:/boot/extlinux# blkid
/dev/sda1: UUID="ec5b47cc-37d3-4e9b-ad20-5cba17359bfb" BLOCK_SIZE="1024" TYPE="ext2" PARTUUID="7dd28db4-64aa-436e-ace8-7a38f677a8ef"
/dev/sda2: UUID="6a2c0191-e203-4aa8-a495-6782446be221" TYPE="crypto_LUKS" PARTUUID="1ac7e6d5-9011-4ca0-b513-ca5dec17b37f"
/dev/mapper/sda2_crypt: UUID="Rehnyo-b7ts-y1pZ-Wm9L-31jO-ujMl-bgay2L" TYPE="LVM2_member"
/dev/mapper/debian--vg-root: LABEL="linux-root" UUID="dada87c3-0f80-4c0a-af54-ba41f5a0baea" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/debian--vg-swap_1: UUID="de58befb-d63f-49d0-ba62-fc2738430dab" TYPE="swap"
Man könnte aber auch in die extlinux.config einfach folgendes eintragen
root=/dev/debian-vg/root
Es kommt hier jetzt etwas drauf an, wie man die Installation gemacht hat usw. Als Gedankenstütze, in die extlinux.config muss die Rootpartion rein, das könnte z.B. folgendes sein
/dev/sda2
/dev/root=LABEL=linux-root
/dev/mapper/debian--vg-root
Kommt jetzt ein neuer Kernel, muss man danach nur noch kurz das Script ausführen.
/usr/local/sbin/./update-extlinux.sh
ROCKPro64 - Debian Bullseye Teil 1