Hallo Wouter en anderen,

Op 28-05-2023 om 19:53 schreef Wouter Verhelst:
On Sun, May 28, 2023 at 10:39:45AM +0200, Paul van der Vlis wrote:
Hallo,

Een klant vroeg me iets te doen via initramfs. Ik vertelde hem dat ik daar
weinig verstand van had. En dat ik dat ook wel kon via een chroot.

Toch wou hij graag dat ik eens ging kijken naar initramfs.
En dat blijkt leuk ;-)

Al vrij snel kon ik wat ik wou, maar dat doe ik door de initrd uit te
pakken, het script "init" aan te passen, en de boel weer in te pakken. En
dan rebooten. Dat hacken in "init" lijkt me niet echt de bedoeling.

Ik heb geprobeerd mijn scriptje in /etc/initramfs-tools/conf.d/ te stoppen,
maar het wordt dan uitgevoerd tijdens het maken van de initrd en dat is niet
wat ik wil. Wat ik wil is dat mijn scriptje uitgevoerd wordt na een reboot
voordat het filesystem gemount wordt.

Wie weet een goede manier?

Je moet een script aanmaken in /usr/share/initramfs-tools/hooks dat de
nodige bestanden kopiƫert naar de "staging area" die mkinitramfs
aanmaakt.

Een voorbeeld (met uitgebreide commentaar als documentatie) vind je op
https://salsa.debian.org/kernel-team/initramfs-tools/-/blob/master/docs/example_hook

Ik wou in elk geval hartelijk bedanken voor de tips. Ik heb het gelezen en er ook wel wat aan gehad. Maar uiteindelijk heb ik het (deze keer) toch gedaan op een iets minder nette manier. De initrd is namelijk maar voor eenmalig gebruik (een migratie). Normaal draaien de systemen zonder initrd.

Het gaat om een hele vloot raspberry Pi's die op afstand moeten worden geupgraded van een 32-bit systeem naar een 64-bit systeem.

Ik maak een mapje /new in het systeem, en vervang /boot (met daarin een initrd). Dan, tijdens de initrd, vervang ik het root filesystem, zoiets:

mount -t ext4 /dev/mmcblk0p2 /mnt
mv /mnt/* /mnt/old/
mv /mnt/old/new/* /mnt/
umount /mnt

Daarna boot ik door naar het nieuwe systeem en ruim nog wat dingen op, zoals die initrd zodat hij niet nogmaals actief wordt.

Werkt heel mooi ;-)

Groet,
Paul


--
Paul van der Vlis Linux systeembeheer Groningen
https://vandervlis.nl/

Antwoord per e-mail aan