0から作るソフトウェア開発
日々勉強中。。。 |
Follow @Nina_Petipa |
0から作るOS開発 GRUBその2 GRUBのインストール |
ソースコードをダウンロードしてコンパイルしていきますので、事前にCygwinの
diffutils、lex、bisonなどをインストールしておいてください。必要な
ツールが無ければ、configureコマンドが途中で止まりますので、その都度
インストールされていただいてもいいかと思います。
GRUBを使用するにはGRUB 2と、そしてISOイメージを作成するためにxorrisoを
インストールします。この2つのソースコードの最新版を下記サイトよりダウンロード
してください。どちらもGNUのサイトからダウンロードできます。
それではコンパイルしていきます。
ダウンロードしたソースコードを次の例のように展開します。
この例ではgrub2.0のソースコードとなります。
$ tar xvf grub2.0.tar.xv
展開が終わるとカレントディレクトリにgrub2.0ディレクトリができています。
(バージョンは最新版により異なります)。
コンパイルを始める前に環境変数を次の例のようにセットしておきます。
$ export TARGET_CFLAGS="-Qn"
展開されたソースディレクトリに移動してから、configureコマンドを実行します。
$ ./configure --disable-werror
configureコマンドが途中で止まってしまった場合は、必要なツールをインストールして
もう一度configureコマンドをやり直してください。
makeしてmake installします。
$ make
$ make install
コンパイルが終わりましたら、コマンドが正常に動作するか確認してみてください。
コマンドが正常に動作しない場合は、一度grubのソースコードが格納されている
ディレクトリを削除してから、もう一度ソースコードの展開からやり直してみてください。
xorrisoも同様に次の例のように展開します。
$ tar zxvf xorriso-1.4.2.tar.gz
この例ではxorriso-1.4.2ディレクトリにソースコードが展開されます。
展開されたディレクトリに移動して、同じようにconfigureコマンドします。
そしてmakeコマンドでコンパイラしてインストールします。
$ ./configure
$ make
$ make install
これでインストールが終わりました。
configureコマンドが途中で止まった場合、Cygwinパッケージの
Libs→libiconv-develをインストールしてからやり直してみてください。
GRUB 2のツール詳細 | ||
---|---|---|
Cygwin上のパス | ツール | 説明 |
/usr/local/bin | grub-bin2h | バイナリファイルをC言語のヘッダーファイルに変換します。GRUBをソースから ビルドするとき以外は使用しません。 |
grub-editenv | 環境ブロックの編集、変数の表示、変数の設定、変数の削除を行います。 | |
grub-fstest | GRUBで使用するファイルシステムのデバッグします。 | |
grub-mkelfimage | GRUBのELF形式の起動イメージを作成します。 | |
grub-mkfont | GRUBで使用するフォントを作成します。 | |
grub-mkimage | GRUBの起動ディスクイメージを作成します。 | |
grub-mkisofs | GRUBの起動ディスクISOイメージを作成します。 | |
grub-mkpasswd-pbkdf2 | 入力したパスワードを暗号化(英数字の文字列)します。 GRUB 2でパスワードを使用するときに使います。 | |
grub-mkrelpath | 指定したパスを、システムが使用するルートディレクトリとします。 grub-mkconfigが使用します。 | |
grub-mkrescue | 起動レスキューディスクイメージを作成します。ソースで指定した ファイルやディレクトリをレスキューイメージに入れることができます。 | |
grub-script-check | GRUBの設定ファイル(デフォルトではgrub.cfg)の文脈チェックを 行います。 | |
/usr/local/sbin | grub-install | 指定したドライブにGRUBをインストールします。 |
grub-mkconfig | GRUBの設定ファイルを作成します。 | |
grub-mkdevicemap | 自動でデバイスマップファイルを作成します。 | |
grub-probe | 指定したパス(-dオプションがあればデバイス)のデバイス情報を検出します。 | |
grub-reboot | 指定したエントリーを次に起動するときだけデフォルトブートエントリーに設定します。 | |
grub-set-default | 指定したエントリーをデフォルトブートエントリーに設定します。 | |
grub-setup | 指定したデバイスから起動するブートイメージをセットアップします。 指定するデバイスはGRUBフォーマットで指定します。 (例、(hd0,1)など) | |
grub-setup.exe.manifest | grub-setupにXMLのマニフェストファイルを指定してます。 |
grub-bin2h [オプション] シンボル名
オプション:
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
grub-editenv [オプション] [ファイル名] コマンド
コマンド:
create
空の環境ブロックファイルを作成します。
list
現在の変数をリストアップします。
set [変数名=値...]
変数に値を設定します。
unset [変数名]
変数を削除します。
オプション:
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
[ファイル名]の指定が無い場合には、/boot/grub/grubenvを使用します。
grub-fstest [オプション]... イメージパス コマンド
コマンド:
ls パス
パスに含まれるファイルを表示します。
cp ファイル名 現在のパス
現在のパスにファイルをコピーします。
cmp ファイル名 現在のパス
現在のパスのファイルとファイルを比較します。
hex ファイル名
ファイルを16進数の値で出力します。
crc ファイル名
ファイルのCRCの値を取得します。
blocklist ファイル名
ファイルのブロックリストを表示します。
オプション:
-r, --root=デバイス名
ルートデバイスを設定します。
-s, --skip=Nバイト
出力ファイルのNバイトをスキップします。
-n, --length=Nバイト
出力ファイルのサイズを設定します。
-c, --diskcount=N数
入力ファイル数を指定します。
-d, --debug=S
デバッグ環境変数を設定します。
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
grub-mkelfimage -o ファイル名 [オプション]... [モジュール]
オプション:
-d, --directory=ディレクトリ名
指定したディレクトリ名のイメージとモジュールを使用します。
(デフォルトは/usr/lib/grub/i386-pc)
-p, --prefix=ディレクトリ名
grub_prefixディレクトリを指定します。
-m, --memdisk=ファイル名
メモリーディスクとしてファイルを埋め込みます。
-c, --config=ファイル名
GRUBの設定ファイルを埋め込みます。
-o, --output=ファイル名
指定したファイル名にイメージを書き込みます。
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
grub-mkfont [オプション] フォントファイル
オプション:
-o, --output=ファイル名
作成するファイル名を指定します。
--ascii-bitmapas
アスキービットマップのみ保存します。
-i, --index=N
フェイスインデックスを指定します。
-r, --range=A-B[,C-D]
フォントの範囲を指定します。
-n, --name=ファミリーネーム
フォントのファミリーネームを指定します。
-s, --size=フォントサイズ
フォントのサイズを指定します。
-d, --desc=N
フォントの下のサイズを指定します。
-c, --asce=N
フォントの上のサイズを指定します。
-b, --bold
ボールドフォントに変換します。
-a, --force-autohint
オートヒントの強制を有効にします。
--no-hinting
ヒントを無効にします。
--no-bitmap
ロード時にビットマップを無視します。
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
grub-mkimage -o ファイル名 [オプション]... [モジュール]
オプション:
-d, --directory=ディレクトリ名
指定したディレクトリ名のイメージとモジュールを使用します。
(デフォルトは/usr/lib/grub/i386-pc)
-p, --prefix=ディレクトリ名
grub_prefixディレクトリを指定します。
-m, --memdisk=ファイル名
メモリーディスクとしてファイルを埋め込みます。
-c, --config=ファイル名
GRUBの設定ファイルを埋め込みます。
-o, --output=ファイル名
指定したファイル名にイメージを書き込みます。
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
grub-mkisofs [オプション] ファイル名...
オプション:
-a, -all-files
全てのファイルを処理します。
(バックアップファイルもスキップしません。)
-abstract ファイル名
抽象ファイル名を指定します。
-A ID, -appid ID
アプリケーションIDを指定します。
-biblio FILE
ビブリオグラフィックファイルを指定します。
-copyright FILE
コピーライトファイルを指定します。
-G FILE, --embedded-boot FILE
ISOイメージに埋め込む
ブートイメージを指定します。
--protective-msdos-label
ISOイメージに保護MS-DOSラベルフラグ
を付けます。
-b FILE, -eltorito-boot FILE
El Toritoブートイメージを指定します。
-c FILE, -eltorito-catalog FILE
El Toritoブートカタログを指定します。
-boot-info-table
El Toritoブートイメージに
ブートインフォテーブルを追加します。
-no-emul-boot
旧バージョンとの互換性のための
ダミーオプションです。
-C PARAMS, -cdwrite-params PARAMS
マジックナンバーを指定します。
-d, -omit-period
拡張子のピリオドを削除します。
-D, -disable-deep-relocation
深いディレクトリ構成を無効にします。
-f, -follow-links
シンボリックリンクを辿ります。
-h, --help
ヘルプを表示します。
-hide GLOBFILE
ISO9660/RRファイルを見えなくします。
-hide-joliet GLOBFILE
Jolietファイルを見えなくします。
-i ADD_FILES
このオプションはサポートしていません。
-J, -joliet
Joliet形式のディレクトリ情報を作ります。
-l, -full-iso9660-filenames
ISO9660形式のファイル名として32バイトのファイル名が使えます。
-L, -allow-leading-dots
ISO9660形式のファイル名としてドット"."で 始まるファイル名が使えます。
-log-file LOG_FILE
LOG_FILEにログを記録します。
-m GLOBFILE, -exclude GLOBFILE
指定したファイル名を除きます。
-M FILE, -prev-session FILE
マージ(結合)したい前回のセッションのファイル名を指定します。
-N, -omit-version-number
ISO9660ファイル名からバージョン番号を削除します。
-no-split-symlink-components
シンボリックリンクのコンポーネントを分割することを禁止します。
-no-split-symlink
シンボリックリンクフィールドを分割することを禁止します。
-o FILE, -output FILE
出力するファイル名を指定します。
-p PREP, -prepare PREP
ボリュームのプリペアーフィールドを設定します。
-print-size
ファイルシステムのサイズを計算して表示し、
終了します。
-P PUB, -pulisher PUB
ボリュームのパブリッシャーフィールドを設定します。
-quiet
メッセージを表示しないようにします。
-r, -rational-rock
Rationalized Rock Ridge形式のディレクトリ情報を作成します。
-R, -rock
Rock Ridge形式のディレクトリ情報を作成します。
-split-output
出力ファイルを約1GBに分割します。
-sysid ID
システムIDを設定します。
-T, -translation-table
ロングファイル名を扱えないシステム用に変換テーブルを作成します。
-v, --verbose
メッセージを極力表示します。
-V ID, -volid ID
ボリュームIDを設定します。
-volset ID
ボリュームIDを設定します。
-volset-size #
ボリュームサイズを設定します。
-volset-seqno #
ボリュームにシークエンス番号を設定します。
-x FILE, -old-exclude FILE
ファイル名を除きます。
(廃止予定のオプション)
--creation-date
作成日を上書きします。
--modification-date
修正日を上書きします。
--expiration-date
有効期限を上書きします。
--effective-date
有効期間を上書きします。
grub-mkpasswd-pbkdf2 [オプション]...
オプション:
-c number, --iteration-count=number
PBKDF2の試行回数を指定します。
-l number, --buflen=number
生成するハッシュコードのサイズを指定します。
-s number, --salt=number
ランダムデータのサイズを指定します。
grub-mkrelpath [オプション] パス
オプション:
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
grub-mkrescue [オプション] ソース...
オプション:
-h, --help
ヘルプを表示します。
-v, --version
バージョンを表示し、終了します。
--modules=モジュール名
事前にロードしておくモジュールを指定します。
--output=ファイル名
指定したファイル名にイメージを出力します。
grub-script-check [パス]
オプション:
-h, --help
ヘルプを表示します。
-v, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
grub-install [オプション] インストールデバイス
オプション:
-h, --help
ヘルプを表示します。
-v, --version
バージョンを表示し、終了します。
--modules=モジュール名
事前にロードするモジュールを指定します。
--root-directory=ディレクトリ
ルートディレクトリとして指定したディレクトリに
GRUBのイメージをインストールします。
--grub-setup=ファイル名
grub-setup実行時にファイル名で指定したファイルを使用します。
--grub-mkimage=ファイル名
grub-mkimage実行時にファイル名で指定したファイルを使用します。
--grub-mkdevicemap=ファイル名
grub-mkdevicemap実行時にファイル名で指定したファイルを使用します。
--grub-probe=ファイル名
grub-probe実行時にファイル名で指定したファイルを使用します。
--no-floppy
フロッピーディスクドライブを検出しないようにします。
--recheck
デバイスマップに載っているデバイスについても検出処理を行います。
--force
エラーを検出しても、強制的にインストールを続行します。
--disk-module=モジュール名
使用するディスクモジュールを指定します。
インストールデバイスはGRUBが認識できるデバイス名かシステムデバイスファイル名を
指定します。grub-installはGRUBのイメージを/boot/grub(またはNetBSD、
OpenBSDでは/grub)にインストールのに使用します。
--root-directoryオプションが指定されている場合、grub-installは
GRUBイメージをOSがインストールされているルートディレクトリにコピーします。
grub-mkconfig [オプション]
オプション:
-o, --output=ファイル名
指定したファイル名に作成された設定ファイルを出力します。
(デフォルトは標準出力です)。
-h, --help
ヘルプを表示します。
-v, --version
バージョンを表示し、終了します。
grub-mkdevicemap [オプション]...
オプション:
-n, --no-floppy
フロッピーディスクドライブを検出しません。
-s, --probe=second-floppy
2番目のフロッピーディスクドライブを検出します。
-m, --device-map=ファイル名
指定したファイル名をデバイスマップとして使用します。
(デフォルトは/boot/grub/device.map)
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
grub-probe [オプション]... [パス|デバイス]
オプション:
-d, --device
指定されたデバイスをパスではなくシステムデバイスとします。
-m, --device-map=ファイル名
指定したファイル名をデバイスマップとして使用します。
(デフォルトは/boot/grub/device.map)
-t, --target=(fs|fs_uuid|drive|device|partmap|abstraction)
ファイルシステムモジュール、GRUBドライブ、システムドライブ、
パティションマップモジュール、抽象モジュールを表示します。
(デフォルトはfsとなります)
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
grub-reboot [オプション] エントリー
エントリー:
数字またはメニュー項目のタイトル
オプション:
--root-directory=ディレクトリ
ルートディレクトリではなく指定したディレクトリの下に、
GRUBイメージがあるものとします。
-h, --help
ヘルプを表示します。
-v, --version
バージョンを表示し、終了します。
grub-set-default [オプション] エントリー
エントリー:
数字またはメニュー項目のタイトル
オプション:
--root-directory=ディレクトリ
ルートディレクトリではなく指定したディレクトリの下に、
GRUBイメージがあるものとします。
-h, --help
ヘルプを表示します。
-v, --version
バージョンを表示し、終了します。
grub-setup [オプション]... デバイス
オプション:
-b, --boot-image=ファイル名
ブートイメージとして指定したファイル名を使用します。
(デフォルトはboot.img)
-c, --core-image=ファイル名
コアイメージとして指定したファイル名を使用します。
(デフォルトはcore.img)
-d, --directory=ディレクトリ
指定したディレクトリのGRUBファイルを使用します。
(デフォルトは/boot/grub)
-m, --device-map=ファイル名
指定したファイル名をデバイスマップとして使用します。
(デフォルトは/boot/grub/device.map)
-r, --root-device=デバイス
指定したデバイスをルートデバイスとして使用します。
(デフォルトはプログラムが自動検出します)
-f, --force
エラーが発生してもインストールを継続します。
-s, --skip-fs-probe
デバイスに格納されているファイルシステムの検出を行いません。
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示し、終了します。
-v, --verbose
メッセージを極力表示します。
grub-install [オプション] インストールデバイス
grub-install /dev/hda
grub-install /dev/sda
grub-mkconfig /boot/grub/grub.cfg
mkdir -p rescue/boot/grub/i386-pc
cp grub.cfg rescue/boot/grub/i386-pc
grub-mkrescue --output=rescue.iso rescue
grub-mkrescue --output=rescue.iso