Ubuntu 16.04 загружается как init = / root / init.sh и exec init 3 в оболочке, но почему X11 запущен?

Ubuntu 16.04.5 среда по умолчанию.

Я хочу сделать пользовательскую работу до инициализации. grub.cfg as

linux /boot/vmlinuz ... ro init=/root/init.sh

init.sh:

#!/bin/bash
# do some task
exec init 3

после загрузки, X запустился.

Если grub linux /boot/vmlinuz ... ro init=/root/init.sh 3, может успешно загрузиться в текстовом режиме.

Согласно https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html , 3 не является параметрами командной строки ядра, ядро ​​будет проходить это как аргумент для init, здесь /root/init.sh.

изменить /root/init.sh на:

#!/bin/bash
# do some task
echo $1
sleep 3s
exec init 3

Я вижу значение, переданное из ядра.

В моем представлении matter независимо от того, какое значение grub -> kernel -> /root/init.sh, я откажусь от значения и выполню init как уровень запуска 3. почему оно не работает.

0
задан 13 November 2018 в 09:57

1 ответ

в соответствии с ответом поэтаринга на мою проблему в systemd: https://github.com/systemd/systemd/issues/10752

мы обычно читаем / proc / cmdline , а не argv [], поскольку ядро ​​удаляет из него некоторые биты, которые нам нужно знать. По сути, мы полностью игнорируем argv [].

Следовательно, то, что вы пытаетесь сделать, не работает, вам придется вместо этого монтировать / proc / cmdline с каким-то файлом с новыми аргументами.

о «перемонтировании», согласно https://unix.stackexchange.com/questions/364442/cant-mount-on-proc-cmdline/364448 ,

[ 1113]
  • сделать копию /proc/cmdline в /root/cmdline
  • добавить 3 в конце /root/cmdline
  • запустить команду mount -n --bind -o ro /root/cmdline /proc/cmdline
  • команда run exec init
    1. теперь система будет загружаться с уровнем запуска 3.

      Таким образом, измените /root/init.sh на

      #!/bin/bash
      # do some task
      cp /proc/cmdline /root/cmdline
      sed -i.bck '$s/$/ 3/' /root/cmdline
      mount -n --bind -o ro /root/cmdline /proc/cmdline
      exec init
      

      система загрузится в текстовом режиме после завершения пользовательского задания, как я, за исключением.

    0
    ответ дан 13 November 2018 в 09:57

    Другие вопросы по тегам:

    Похожие вопросы: