Используйте параметр начальной загрузки для выполнения определенных действий после начальной загрузки

Для оболочки я настоятельно рекомендую Портативное Программирование Shell и Портативные Сценарии Shell. Первое запустило Вас быстро; это кратко с превосходными примерами. Второе копается намного более глубоко в запутанности оболочки; почему вещи прокладывают себе путь, они делают. Хотя оба фокусируются на оболочке POSIX, они дадут Вам серьезное основание для любой оболочки, которую Вы принимаете решение использовать (например, удар).

4
26.12.2013, 22:55
1 ответ

Любой параметр командной строки к ядру Linux обнаружится в /proc/cmdline. Можно поместить что-либо, что Вы любите там (как долго, это не параметр, распознанный ядром или любым из драйверов или initrd системы). Например, Вы могли создать его с необычными меню личинки и затем использовать это в сценарии запуска как /etc/rc.local решить, что сделать с ним.

Например, добавьте a /etc/grub.d/09-xcmd с:

#! /usr/bin/tail -n+2
menuentry 'XMBC' {
  set xcmd='xcmd=xmbc'
  echo 'Now select a kernel'
  sleep 1
}

Затем добавьте к /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \${xcmd}"

Выполненный update-grub.

В /etc/rc.local, Вы могли иметь:

case $(cat /proc/cmdline) in
  (*xcmd=*) exec sudo -Hu marcel startx;;
esac

И в Вашем ~/.xinitrc:

cmdline=$(cat /proc/cmdline)
case $cmdline in
  (*xcmd=*)
    xcmd=${cmdline##*xcmd=}
    xcmd=${xcmd%% *}
    "$xcmd" &
esac
3
27.01.2020, 20:58
  • 1
    похож на очень чистое решение!Спасибо! –  Marcel 31.03.2013, 11:37

Теги

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