[gelöst] kernel installation führt merkwürdigerweise boot scripts in initramfs init-bottom aus

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
wuxel
Beiträge: 3
Registriert: 24.03.2019 23:16:47

[gelöst] kernel installation führt merkwürdigerweise boot scripts in initramfs init-bottom aus

Beitrag von wuxel » 24.03.2019 23:33:17

Ich habe ein initramfs boot script gemacht , wie hier beschrieben, http://manpages.ubuntu.com/manpages/xen ... ols.8.html , das noch before systemd started das filesystem modfiziert. Das script liegt in /etc/initramfs-tools/scripts/init-bottom.
Das funktioniert so weit auch, beim booten wird das script ausgführt und mein filesystem sieht aus wie gewünscht.

Was ich jedoch nicht verstehe, auch beim installieren eines Kernel packages mit dpkg -i wird genau dieses script auch ausgeführt.
Warum? Das ist doch ein boot script.
Zuletzt geändert von wuxel am 26.03.2019 20:05:52, insgesamt 1-mal geändert.

JTH
Moderator
Beiträge: 3015
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: kernel installation führt merkwürdigerweise boot scripts in initramfs init-bottom aus

Beitrag von JTH » 25.03.2019 13:39:10

Hast du folgenden Abschnitt beachtet?

Code: Alles auswählen

Header
       In order to support prereqs, each script should begin with the following lines:

              #!/bin/sh
              PREREQ=""
              prereqs()
              {
                   echo "$PREREQ"
              }

              case $1 in
              prereqs)
                   prereqs
                   exit 0
                   ;;
              esac

              . /usr/share/initramfs-tools/hook-functions
              # Begin real processing below this line
update-initramfs/mkinitramfs führen die Skripte anscheinend einmal mit prereqs als erstem Argument aus, beim Boot dann ohne das Argument. Wenn du prereqs nicht beachtest, macht dein Skript während update-initramfs/mkinitramfs natürlich dasselbe wie beim Boot.
Manchmal bekannt als Just (another) Terminal Hacker.

wuxel
Beiträge: 3
Registriert: 24.03.2019 23:16:47

Re: kernel installation führt merkwürdigerweise boot scripts in initramfs init-bottom aus

Beitrag von wuxel » 25.03.2019 19:42:46

Danke für den Hinweis, ich hätte das jetzt nicht so interpretiert als das man unbedingt ein prereqs braucht. In meinem script gibt es kein prereqs weil in dem init-bottom Verzeichnis gibt es ja auch nur das eine file und deswegen brauche ich keine Reihenfolge festlegen. Aber ich werde mal damit experimentieren.

Code: Alles auswählen

Header
       Like  for  hook  scripts,  there  are no guarantees as to the order in which the different
       scripts in one subdirectory (see "Subdirectories" below) are executed. In order to  define
       a certain order, a similar header as for hook scripts should be used:

              #!/bin/sh
              PREREQ=""
              prereqs()
              {
                   echo "$PREREQ"
              }

              case $1 in
              prereqs)
                   prereqs
                   exit 0
                   ;;
              esac

       Where PREREQ is modified to list other scripts in the same subdirectory if necessary.

JTH
Moderator
Beiträge: 3015
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: kernel installation führt merkwürdigerweise boot scripts in initramfs init-bottom aus

Beitrag von JTH » 25.03.2019 20:23:52

Aus der manpage hab ich das auch nicht als zwingend rausgelesen. Sah beim schnellen Ausprobieren dann aber so aus, dass die Skripte bei update-initramfs einmal mit prereqs als erstem Argument aufgerufen werden.
Manchmal bekannt als Just (another) Terminal Hacker.

wuxel
Beiträge: 3
Registriert: 24.03.2019 23:16:47

Re: [gelöst] kernel installation führt merkwürdigerweise boot scripts in initramfs init-bottom aus

Beitrag von wuxel » 26.03.2019 20:09:29

In der Tat funktionert das so. Das sortieren der scripts in einem Verzeichnis passiert offenbar nicht zur boot runtime sondern zur inintrd build time. Wenn man beim kernel installieren deswegen keine Fehlermeldungen haben will, dann muss man die prereqs section im script haben.
Danke JTH.

Antworten