Show page source of インストール/ブートローダ #104283

[インストール] /
= ブートローダ
パソコンを起動する際に動作するのがブートローダです。[[BR]]
複数の OS がインストールされている場合はメニューを表示したり、[[BR]]
プロンプト表示になって、起動オプションを指定できたりします。

Puppy Linux をハードディスク・SSD などにインストールする場合、[[BR]]
Puppy Linux は GRUB4DOS をブートローダに採用しますが、[[BR]]
GRUB4DOS は最近のパソコンで採用されている UEFI・GPT に対応していません。[[BR]]
そのため、他の OS から GRUB 2を経由して起動したり、[[BR]]
UEFI 対応のブートローダで起動する必要があります。[[BR]]
自動で行える手段は今のところ存在せず、手作業での追加が必要です。

{{{
ブートローダは設定を誤ると起動できなくなります。
しかしこれはハードディスク・SSD からなくなってしまったわけではありません。
他の OS が起動できる場合は起動できた OS から正しく設定します。
それができなかった場合でも CD や USB メモリから Puppy Linux を起動して
正しく設定しなおす事で起動できるようになります。慌てる事はありません。
}}}

Puppy Linux から Frugal Installer でインストールを行った場合、[[BR]]
Note for manual configuation という表示がでている事に気がつくかもしれません。[[BR]]
これは最新だと /root/my-documents/tmp/menuentry.txt にファイルとしても置かれます。[[BR]]
下記で記載する記述例がいくつかあります。

== 設定オプション
GRUB ではカーネル vmlinuz を読み込む行の行末に値を加える事で、[[BR]]
Puppy Linux の動作を変化させる事ができます。
 * '''pfix=ram''' - RAM モードで起動します。[[BR]]個人情報ファイルを読み込まずに起動します。初期状態の起動になります。[[BR]]これは個人情報ファイルが存在するパーティションをロックしません。
 * '''pfix=fsck''' - 個人情報ファイルの破損調査・修復を行います。[[BR]]通常起動ではこれを付けておくと良いでしょう。
 * '''psubdir''' - 起動場所を指定指定します。[[BR]]最近の Puppy ではフォルダを指定していますが、デバイスの記載も可能です。
 * '''pmedia''' - 起動する媒体を指定します。[[BR]]種類は usbflash usbhd usbcd ideflash idehd idecd idezip satahd satacd scsihd です。
特に pfix=ram はよく使う事が多いので、通常起動とは別にメニューに加えておいても良いでしょう。

他のオプションも知りたい場合は下記を参照して下さい。

http://puppylinux.org/wikka/BootParametersPuppy

== GRUB4DOS
最新の Puppy Linux では GRUB4DOS(GRUB for DOS)がブートローダとして含まれています。
しかし '''UEFI・GPT には対応していません。'''
これは Intel 搭載 Mac や Windows 7 以降がプリインストールされたパソコンが該当します。

=== Puppy Linux の GRUB4DOS に任せるメリット
複数の OS をパソコンに入れている場合、[[BR]]
Puppy Linux から GRUB4DOS を用いて OS の選択を制御するようにするのは良い選択肢かもしれません。[[BR]]
いくつか理由があります。
 * GRUB 2 は設定を記載を行った後に update-grub を実行する手間が発生します。[[BR]]GRUB4DOS は menu.lst を編集して即反映されます。
 * GRUB 2 は設定項目が多く混乱を招くかもしれません。[[BR]]GRUB4DOS の menu.lst はシンプルで分かりやすく編集しやすいです。
 * GRUB 2 はそれ単体で起動できず、GRUB4DOS 等を経由して起動します。(チェインロード)[[BR]]そのため GRUB4DOS を使った方が起動がはやいです。
 * 他のディストリビューションで自動生成すると Puppy Linux を検出しない事があります。[[BR]]Puppy Linux から生成させた場合はもちろん Puppy 自身を加えますし、[[BR]]多くの OS も検出してくれます。Ubuntu も Windows も自動追加してくれます。
 * Puppy Linux が生成する menu.lst および menu-advanced.lst  は[[BR]]多くのケースを想定した記載になっています。[[BR]]そのため、編集する際の見本としても完成度が高いです。

{{{
Puppy Linux から GRUB4DOS によるブートローダを設定する場合、多くの OS を検出してくれますが、
まれに OS を検出しない場合もあります。
例えば同じ Frugal を採用している Tiny Core Linux は検出してくれません。
これは手動で追加する必要があります。
また、まれに誤った認識と追記を行っている事もあります。起動しない場合は手動で修正を要します。
}}}

=== menu.lst の記述例
メニュー表示は通常 menu.lst を編集します。[[BR]]
Puppy Linux はこれ以外に menu-advanced.lst も生成します。これらは例題として優秀です。

先頭にあるいくつかのオプションは下記のとおりです。
 * '''timeout''' - メニューを表示する秒数。[[BR]]timeout=10 なら10秒間キーが押されなかれば default の内容が実行されます。
 * '''default''' - 初期値。0 からの連番。例えば default=0 で一番上がデフォルトとなります。

{{{
前回の実行をデフォルトにする事ができます。
GRUB4DOS のダウンロードから GRUB4DOS のアーカイブをダウンロードし、
中に入っている default というファイルをパーティッション番号0(sda1)のパーティションに入れて下さい。
default は書き込み可能な状態でなければいけません。
menu.lst の頭部分では default /default とし、次回デフォルトにしたい項目に savedefault を1行加えます。

GRUB4DOS ダウンロードサイト http://download.gna.org/grub4dos/
}}}

他にも color splashimage の装飾オプションもあります。

==== UUID
パーティションを生成した際はランダムな UUID が生成されます。
構成が変化しても UUID は変化しません。そのため UUID で指定しておくのが良いとされます。[[BR]]
UUID は blkid コマンドで取得できます。GParted でも確認可能です。[[BR]]
ファイルシステムによって UUID の桁数が変わります。ext ではないシステムに入っていれば、正常です。[[BR]]  
Puppy Linux から menu.lst を自動生成した時はこの形式で記載されています。

例: FAT32 の UUID 5BFF-F055 パーティションに入っている /precise 内の Puppy Linux を起動
{{{
title Puppy Linux
uuid 5BFF-F055
kernel /precise/vmlinuz
initrd /precise/initrd.gz
}}}

例: ext3・ext4 の UUID ad80b51d-d7a2-55aa-858c-95de03563fa1 パーティションの場合
{{{
title Puppy Linux
uuid ad80b51d-d7a2-55aa-858c-95de03563fa1
kernel /precise/vmlinuz psubdir=precise pmedia=atahd pfix=fsck
initrd /precise/initrd.gz
}}}
これは Puppy Linux が生成する menu.lst の例です。

==== root
ディスク番号とパーティション番号で指定する方法です。sda1 等のパーティション表記から記載が可能です。[[BR]]
 * ディスク番号: sda の a の部分。a=0、b=1、c=2、……
 * パーティション番号: sda1 の 1。GRUB4DOS は -1 した 0 からはじまります。

例: sda4(=(hd0,3))パーティションの /precise 内にある Puppy Linux を起動
{{{
title Puppy Linux
root (hd0,3)
kernel /precise/vmlinuz psubdir=precise pmedia=atahd pfix=fsck
initrd /precise/initrd.gz
}}}
この方法は GRUB の旧バージョンから存在する記載方法で、これに馴染んでいる方も少なくないかもしれません。

==== find
Windows .exe 形式はこの方法です。[[BR]]
パーティションを決め打ちしていないため、Puppy Linux のフォルダを他のパーティションに移しても[[BR]]
ブートローダの設定は変更せずに起動できるというメリットがあります。[[BR]]
よくパーティション構成を変更する場合はこの記載をすると Puppy Linux の移動がしやすく便利です。

例: /Puppy-Linux-571 内にある Puppy Linux を起動。
{{{
title Puppy Linux 571JP
find --set-root --ignore-floppies --ignore-cd /Puppy-Linux-571/initrd.gz
kernel /Puppy-Linux-571/vmlinuz psubdir="Puppy-Linux-571" pfix=fsck
initrd /Puppy-Linux-571/initrd.gz
boot
}}}
これは Windows .exe インストーラが生成する menu.lst の例です。[[BR]]
Puppy-Linux-571 フォルダを GROB4DOS を起動しているディスク内の[[BR]]
どのパーティションに移動させても起動できる事を確認してみましょう。

=== Ubuntu 等の例
Puppy Linux から自動生成した状態でも多くのディストリビューションは起動できます。[[BR]]
しかしその場合は CLI の起動画面になっているでしょう。[[BR]]
最近はスプラッシュ画面を出すディストリビューションが多くなってきました。[[BR]]
例えば Ubuntu・Debian では quiet splash を追加する事でスプラッシュ表示になります。

例:
{{{
title Ubuntu (sda3)
  savedefault
  uuid 1bc0f482-ddf9-44e4-ab58-d7141ba8ce9d
  kernel /vmlinuz root=/dev/sda3 ro quiet splash
  initrd /initrd.img
}}}

まれに Puppy Linux は Windows と勘違いして生成を行うケースがあります。[[BR]]
起動しない場合は該当する部分を参照してみて下さい。例えば initrd の行がないかもしれません。

=== Windows のブートローダから GRUB4DOS を起動する
Windows を使用している場合、起動が GRUB に切り替わる事のリスクを考える人がいるかもしれません。[[BR]]
Windows のブートローダから Puppy Linux の GRUB4DOS を起動させる方法があります。

実際 Windows .exe インストーラはこの方法を用いて Puppy Linux の項目を増やしています。[[BR]]
下記を手作業で行うよりも簡単に Puppy Linux をインストールできます。
手動で行いたい人のために手順も記載しておきます。

==== GRUB4DOS のダウンロード
http://download.gna.org/grub4dos/

grldr および grldr.mbr を C:¥ に入れます。

==== Windows Vista・7 で項目を追加する
下記のコマンドをコマンドプロンプトで実行します。
"Puppy Linux" の部分は GRUB4DOS の title です。
{{{
bcdedit /create /d "Puppy Linux" /application bootsector
}}}
これにより得られた ID を下記 (ID) に含めて下さい。
また、C: から他のドライブに変更している場合はそのドライブ名に変更します。
{{{
bcdedit /set (ID) device partition=C:
bcdedit /set (ID) path \grldr.mbr
bcdedit /displayorder (ID) /addlast
}}}

==== Windows XP で項目を追加する
シノバーさんがまとめています。

http://shino.pos.to/linux/grub4dos.html

=== スプラッシュ画像

GRUB4DOS で背景に表示できる画像は .xpm 形式で色数が 14 色以下の 640×480 ピクセルとなっています。[[BR]]
Puppy Linux では標準搭載の mtPaint が減色と .xpm 形式への変換・保存に対応しています。[[BR]]
また、Gimp でも同様に減色と .xpm 形式の変換・保存に対応しています。


== GRUB 2
Ubuntu 等、ブートローダとして GRUB 2 を採用するディストリビューションも増えてきました。[[BR]]
GRUB 2 から Puppy Linux を直接起動する事も可能です。GRUB 2 は UEFI・GPT 環境にも対応できます。

しかし多くの場合、update-grub は自動的に Puppy Linux を検出しません。手動で追加する必要があります。[[BR]]
/etc/grub.d の custom を含むファイル名を編集します。(例えば 40_custom )[[BR]]

編集した後、管理している Linux から GRUB の情報を更新して下さい。
 * Debian・Ubuntu - sudo update-grub 
 * Red Hat・Fedora (BIOS) - sudo grub2-mkconfig -o /boot/grub2/grub.cfg
 * Red Hat・Fedora (UEFI) - sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
これで grub.cfg が生成されます。GRUB 2 はこれを参照し、メニューを表示させます。[[BR]]
なお'''直接 grub.cfg は編集しないで下さい。'''[[BR]]
管理している Linux のカーネルが更新された際に自動更新され、削除されてしまうからです。

起動順やタイムアウトを変更したい場合は /etc/default/grub に項目があります。[[BR]]
もし前回起動の OS をデフォルトにしたい場合は setdefault を付け、下記のようにすると良いでしょう。
{{{
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true 
}}}

例: root での起動
{{{
menuentry "Precise Puppy Linux 571JP" { 
set root=(hd0,1) 
linux /puppy571jp/vmlinuz
initrd /puppy571jp/initrd.gz 
} 
}}}
GRUB 2 ではパーティション番号が 1 からはじまっている事に注意して下さい。[[BR]]
sda1 であれば、(hd0,1) です。( (hd0,0) ではありません)

例: UUID を加えた起動
{{{
menuentry "Precise Puppy Linux 571JP" { 
set root=(hd1,3)
search --no-floppy --fs-uuid --set fbf5a167-5351-4f37-925b-1c0806c167e2
linux /puppy/vmlinuz pmedia=atahd psubdir=puppy pfix=fsck
initrd /puppy/initrd.gz 
}
}}}
UUID を付加して場所をより確実にしても良いでしょう。多くの場合ここまで行う必要はないかもしれません。

例: find での起動
{{{
menuentry "Puppy Linux" { 
setdefault
search --file --set=root --no-floppy /Puppy-Linux-571/initrd.gz
linux /Puppy-Linux-571/vmlinuz psubdir="Puppy-Linux-571" pfix=fsck
initrd /Puppy-Linux-571/initrd.gz 
} 
}}}
Puppy の場所を移動する事が多ければこの記載が便利です。

== syslinux・extlinux
主に USB メモリで起動する時に syslinux で起動させるケースが多いです。[[BR]]
オリジナル版 Puppy Linux の .iso でも採用されています。[[BR]]
syslinux はメニューを出しませんが、[[BR]]
起動時にプロンプト待ちを行うので、起動オプションを付加するのに便利です。[[BR]]
ただし、ハードディスク・SSD 上では syslinux の使用をおすすめできません。

syslinux.cfg を編集します。isolinux.cfg のファイル名を変更して代用可能です。[[BR]]
extlinux も記載は一緒です。

例: puppy フォルダにある Puppy Linux を起動
{{{
default puppy
display boot.msg
prompt 1
timeout 10

label puppy
kernel puppy/vmlinuz
append initrd=puppy/initrd.gz pmedia=atahd psubdir=puppy
}}}
syslinux では initrd.gz が記載されている append の行に起動オプションが入っている事に注意が必要です。[[BR]]
上記では 10 秒プロンプトを表示させます。この時例えば '''puppy pfix=ram''' として RAM モード起動が可能です。[[BR]]
boot.msg にオプションを記載したファイルを生成する事ができます。(英語です)

== rEFInd
起動に UEFI を採用するパソコンで、グラフィカルなメニューを提供するブートマネージャーです。[[BR]]
OS X 向けに開発された rEFIt の派生ですが、Mac 以外のパソコンでも使用が可能です。[[BR]]
多くの Linux は自動検出され、一覧に表示されますが、Puppy Linux は手動で追加する必要があります。

Mac の場合、EFI パーティション内に設定ファイル refind.conf が存在している事があります。[[BR]]
ターミナルより次のコマンドを入れてみて下さい。
{{{
mkdir /Volumes/EFI
sudo mount -t msdos /dev/disk0s1 /Volumes/EFI
}}}
disk0s1 は Mac によって異なる場合があります。diskutil list として一覧表示が可能です。[[BR]]
作業を行った後は sudo umount /Volumes/EFI として下さい。

refind.conf のメニューエントリーとして Puppy Linux を追記します。

例: ラベル Puppy Linux パーティションの /precise 内にある Puppy Linux を起動
{{{
menuentry "Puppy Linux" {
icon /precise/puppy.png
volume "Puppy Linux"
loader /precise/vmlinuz
initrd /precise/initrd.gz
options "psubdir=precise pmedia=atahd pfix=fsck"
}
}}}

volume はドライブ番号(3:)や UUID も設定できます。

== 起動しない!?
もし正常に起動しない場合は、その状況に応じて編集を行います。[[BR]]
GRUB 2 では編集後に grub-update で反映が必要な事を忘れないで下さい。
=== 起動ロゴ直後に止まる
ブートローダ起動そのものに失敗しています。CD や USB メモリで Puppy Linux を起動し、確認して下さい。
 * 単なる設定ファイルのミスかもしれません。文字の記載ミス、改行コード、文字コードなどです。
 * 他の OS で GRUB 2 などから起動しようとしている場合は grub-install を忘れているかもしれません。これでブートローダを書き込みます。
 * メーカー製のパソコンでは特殊な MBR になっていて、正常に起動できない場合があります。[[BR]]Windows のブートローダを書き込み、Windows のブートローダから GRUB4DOS を起動しないといけないかもしれません。
=== 特定の OS が起動しない
起動できる OS から起動し、その OS が記載されている部分を確認し、修正します。困難な場合は CD・USB メモリ起動を行います。
 * Puppy Linux で Not Found とかが出てくる場合、UUID や番号、またはフォルダなどの誤りです。
 * 本体 .sfs をリマスターした場合は initrd.gz も更新して下さい。それぞれに ID が含まれていて、一致しないと起動しません。
 * 違うメッセージの場合、単純な文法ミスとかがありえます。
 * 他の OS で起動しかけて止まる場合は、initrd の行が抜けていないか確認して下さい。

== 参考ページ
 * !Grub4DosConfig ブートローダの設定[[BR]]http://shino.pos.to/linux/puppy/grub4dosconfig_ja.html
 * Grub4dos Guide[[BR]]http://diddy.boot-land.net/grub4dos/files/menu.htm
 * Grub 2 入門[[BR]]http://rionaoki.net/misc/ubuntu/grub-2-basics