私は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