おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2006年12月16日(Sat) 今日の雨は気合いが入ってるぞ [長年日記]

[grub] grub-installを読もうとしてまずshスクリプトをちゃんと知らないことに気づく

grub-installより

オプションの無いsetコマンドって初めて見たような気がする。おい。 えーと。引数が順に$1、$2、…に代入されるのか。

えーと。どうして下記じゃいけなのか。

んー。grub_shellが空文字列でも空白でもダブルクォーテーションでも期待通りに動くように見える。残念。わかりませんでした。まあ、これはこれで置いておこう。

[grub] grub-installからgrub shellの一度目の実行

copy_images関数の実行(一般ユーザーなのでコメントアウトして省略)のあと、 device.mapの作成に入ったみたいです。

info grubより、--device-mapがある時にはgrubシェルは device map fileを自動的に作る(上書きはしない)そうです。 一般ユーザーで実行してみたところ、できあがったdevice map fileは 下記の通り。

この場合、hd0あるいは/dev/hdaがありません。 rootになって実行すると、期待どおり

となった。デバイスファイルのパーミションの違いかな。

あれー。/dev/fd0はありませんでしたか。

本筋に戻ると、syncする以外は、 この段階ではgrubシェルから直接setup (hd0)するのと差は無さそうですよね。

この後のチェックが楽しみなのでしょう :)

[grub] device.mapの二重のエントリーの確認

grub-installより、

最初の一行がミソですね。えーと。 grubでのデバイス名のみをsedで表示して、順番に並べて。 おぉ、uniq-dオプションで、 同じもののある行だけを表示できるのですね。 で、とりあえず最初の1デバイスのみをtmpに代入する、と。

どういう時にgrubでのデバイス名が重複するのか、は、後々勉強しますです。

[grub] device.mapにハードディスクが含まれていることの確認

次はハードディスクが含まれていることを確認しているようです。 DocoMomoからフロッピーにインストールする場合は… そんなことは普段はしませんよね。

[grub] OS上でのデバイス名の確認

次にインストール先の確認をして、 それからgrubに関係するディレクトリが どのデバイス上にあるか確認しているようです。

find_deviceという関数が何度も出てくるので中身を見てきます。grub-installより、

また新発見。 dfにファイル名をわたすとそのファイルの存在する ファイルシステムについての情報のみを表示してくれるのだそうです。

あとはシンボリックリンクの処理をしたりmapper deviceを参照したりして より適切なOS上のデバイス名を得る。

mapper deviceについては…そのうちまた調べますです。

[grub] grub用各ディレクトリのデバイス名

で、確認しているのは、rootdir(デフォルトでは空文字列!?)、bootdir(Linuxでのデフォルトは/boot)、grubdir(/boot/grub)のようです。

デバイス名の確認のあとは、得られたOS上のデバイス名をgrubでのデバイス名に変換しているようですが、さて、ここで時間が来てしまいました。

続きはまた次の機会に、convert関数からはじめたいと思います。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>