
Ubuntu日本語フォーラム

ログインしていません。
ubuntu10.10をクリーンインストールし、
grubの「40_customファイル」をカスタマイズをしようと思って /etc/grub.d/ を開けたら、
「41_custom」という新しいファイルがありました。
10.04の時にはなかったものですが、
10.10インストール時にできたものだと思います、
(このファイルを作成した記憶がないので)
内容は以下の通りです。
------------------------------------------------------
#!/bin/sh
cat <<EOF
if [ -f \$prefix/custom.cfg ]; then
source \$prefix/custom.cfg;
fi
EOF
------------------------------------------------------
40_custom は以前からありましたが、
41_custom は初めて見ました。
これはどのようなファイルでしょうか?
オフライン
追伸
41_custom はそのままで、
/etc/default/grub 40_custom 05_debian_theme 00_header 等の修正をし、
sudo update-grub2 で 問題なく作業は終了します。
41_customについての情報は、web上でも少なく、よくわかりません。
オフライン
どのようなファイルかは知らないんですが、 http://packages.ubuntu.com/ja/ で検索すると grub-common パッケージがインストールするようです。
オフライン
ご回答ありがとうございます。
ファイル内のスクリプトに書いてある
custom.cfg ですが、
/boot/grub/ 内には custom.cfg なるファイルは存在しませんでした。
「\$prefix/custom.cfg」でググってみると
http://www.mail-archive.com/[email protected]/msg15806.html
なるページが存在しました。
ファイル内のスクリプトに書いてある
custom.cfg ですが、やはりよく解りません。
/boot/grub/ 内には custom.cfg なるファイルは存在しませんでした。
41_custom はもしかすると最初からあったファイルではなく、
update-grub2 でできたファイルでしょうか?
スクリプトが読めないのでよく解りませんが、勉強して見ようと思います。
オフライン
Ubuntu 10.10 をインストールしていないんで、推測の部分があるんですが、
ファイル内のスクリプトに書いてある
custom.cfg ですが、
/boot/grub/ 内には custom.cfg なるファイルは存在しませんでした。
#!/bin/sh cat <<EOF if [ -f \$prefix/custom.cfg ]; then source \$prefix/custom.cfg; fi EOF
は実行されると標準出力は、
if [ -f $prefix/custom.cfg ]; then source $prefix/custom.cfg; fi
となります。これが /boot/grub/grub.cfg に書きこまれるのだと思います(推測)。
シェルスクリプト的に解釈すると、
1行目の '[ -f $prefix/custom.cfg ]' は コマンド '[' (コマンド test) で、 $prefix/custom.cfg が存在するなら返り値が 0 になり then 後が実行されます。存在しないなら返り値が 1 になり else 以下(今回は存在しないので何も実行されない)が実行されます。2行目の source は $prefix/custom.cfg を読み込み実行するというものです。おそらく $prefix/custom.cfg を作れば、grub.cfg に書いたのと同じように実行されるようになるのだと思います。
41_custom はもしかすると最初からあったファイルではなく、
update-grub2 でできたファイルでしょうか?
http://packages.ubuntu.com/maverick/grub-common のファイル一覧を見てもらうと分かるように grub-common パッケージのインストールによってインストールされたものと思われます。
オフライン
回答いただきありがとうございます。
ご指摘の通り、
if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
はgrub.cfgの仕様通り、
41_customの後にファイルが存在しないので、
/boot/grub/grub.cfg の「40_custom」の記述の後、つまり一番最後に書きこまれています。
then else のスクリプトの解説よくわかりました。ありがとうございます。感謝です。
custom.cfgを作れば何かが起きるということですね。
ただ、何を記述し、何を実行するためのファイル何でしょうか?調べてみたいと思います。
わかりましたら、ご報告いたします。
また、41_customは、
別PCで、パッケージのインストールによってインストールされたものであると確認できました。
オフライン
コメントは無いんですね。コレが.....
シェルスクリプトの記述だけです
以下の内容です。
------------------------------------
#!/bin/sh
cat <<EOF
if [ -f \$prefix/custom.cfg ]; then
source \$prefix/custom.cfg;
fi
EOF
-------------------------------------
オフライン