起動パラメータを使用して起動後に特定のタスクを実行する

起動パラメータを使用して起動後に特定のタスクを実行する

私はGrub 2を使って、起動後に何をすべきかをオペレーティングシステムに伝えることができるかどうか私に尋ねました。

背景:
Debian WheezyがインストールされたHTPCがあります。時にはシステムを普通のデスクトップとして使いたいが、時にはシアンBMCここです。

デュアルブートをしてみましたオープンエレクトロニクスOpenElecではRAID-1をインストールできないため、あまり便利ではありません。

次の試みは、XBMCで2番目の最小Debianインストールを使用することでした。このソリューションを使用すると、Grubで通常のデスクトップとHTPCを使用できるようになります。

しかし、今はすでにDebianをインストールしているので、これは時間とディスクスペースの無駄になる可能性があると思います。一般的な Debian インストールについて知らせるために使用できる一種のブートパラメータがあれば、簡単になります。

  • 「デスクトップから起動」または
  • 「XBMCで起動」

その後、この起動パラメータを処理するには、Grubの2番目のエントリが必要です。

これは可能ですか?

答え1

Linuxカーネルのすべてのコマンドライン引数は/proc/cmdline。たとえば、クールなグルーブメニューを使用してビルドし、起動スクリプトでそれを使用して/etc/rc.local何をするかを決定できます。

たとえば、次を追加します/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

関連情報