Arch Linuxを入れたときのメモ
ログ
2012.03.03
いろいろ調べたところ、
あたりが面白そうだった。GentooとCRUXはパッケージ管理の際に、ソースからコンパイルするのが面倒そうだった。
Archはパッケージ管理はバイナリでやるらしいのでその辺は楽そう。
あとArchはドキュメントが豊富らしいので、Archをインストールすることにした。
というわけで、バージョン2011.08.19のx86-64 CPUのCore Imageをダウンロードした。
ネット無しでインストールできる方がいろいろ便利そうということでcoreの方にした。
設定は全部デフォルトのままとりあえずArchマシンを作成。/arch/setupスクリプトを実行してインストール開始。
愛しのviで編集した設定は
ホスト名
ネットワークインタフェース名
だけだった気がする。(忘れた)
パーティションは以下のように分けた。
sda5 * Logical Linux 100
sda6 Logical Linux swap 256
sda7 Logical Linux 5000
sda8 Logical Linux 3235(残り)
マウントポイントとファイルシステムは以下のようにした。
sda5 /boot ext3
sda6 /swap
sda7 / ext3
sda8 /home ext3
grubはMBRにインストールしないで終わり。(PBRにインストールする選択肢がなかった。MBRがインストールされてないからか?)
(インストール後の/bootにgrubがあるから、デフォルトでPBRにgrubがインストールされて、MBRにインストールするgrubはまた別物?)
(/bootにあるのはgrubの設定ファイルとかカーネルであって、grubのブートローダ本体ではなくてカーネルローダのみ)
したのリンクからgrub.isoをダウンロードして、Arch Linuxを起動してみる
root (hd0,4)
kernel /vmlinuz-linux root=/dev/sda7
initrd /initramfs-linux.img
boot
起動した。とりあえず今日はここまで。
2012.03.04
grubのインストール状況がよくわかっていないので調査する。
とりあえず現状ではgrub起動ディスクから
root (hd0,4)
chainload +1
で起動することはできない。(grubがPBRにインストールされていないため?)
つまりArchをインストールしたときにインストーラが求めてきたのは
MBRのgrub → パーティション内のプログラム
という起動処理であって、grubをインストールする候補はMBRしかなかったということ。
とりあえずgrubをPBRにインストールしてみる。/と/bootどっちにインストールすればいいんだ?インストールした方にブート可能フラグを立てればいい?いま/bootにはブート可能フラグが立っているけど、これはいらないのか?
とりあえず/bootのブート可能フラグをオフにしてみる。
grub>前と同じ
で起動して、
fdiskで/dev/sda5(/boot)にフラグがたってるのを確認。
cfdiskでBootableを選択して、/bootのFlagsをなしにする。wirte。
fdiskで見てみると確かに消えた。
rebootして、
grub>前と同じ
で起動した。やっぱり/bootのPBRにはgrubが入ってなくて、grub起動ディスクで/bootの中の設定ファイルとかカーネルとかを読んで起動してるだけという考え方でいいっぽい。
今の状態でHDDから起動しようとすると、ブート可能フラグがたってるパーティションが内的なことを言われて起動できない。ブート可能フラグが/bootにたってる時も同じ。MBRになにもインストールされていないため。
次に、/bootのPBRにgrubをインストールして、grub起動ディスクからチェーンロードしてみる。またgurb起動ディスクからブートして、/bootのPBRにgrubをインストール
grub-install /dev/sda5
Installation finished. No error reportedと表示された。rebootしてチェーンロードしてみる。
root (hd0,4)
chainload +1
してもなにも起きないしエラーも出ない。仕方がないのでgrubからコマンドで起動する。
grubがうまくインストールできてないのか?それともVirtualBoxのせい?
というわけでもうVirtualBoxはだいだいいいので、以降は古いノートPCにいろいろ入れてみる。パーティションは
| Device |
Boot |
Type |
File System |
Size |
Label |
| sda1 |
* |
Primary |
ext3 |
15G |
Ubuntu_root |
| sda2 |
* |
Primary |
ext3 |
15G |
Debian_root |
| sda3 |
* |
Primary |
ext3 |
15G |
Arch_root |
| sda4 |
|
Extended |
|
35G |
|
| sda5 |
|
Logical |
Linux Swap |
5G |
Linux_swap |
| sda6 |
|
Logical |
ext3 |
10G |
Ubuntu_home |
| sda7 |
|
Logical |
ext3 |
10G |
Debian_home |
| sda8 |
|
Logical |
ext3 |
10G |
Arch_home |
のようにする。/bootは分けない。sda1,2,3のPBRにはgrubをインストールして、MBRに何もインストールしないでとりあえずgrub起動ディスクからチェーンロードしてみることにする。
2012.03.05
とりあえず古いパソコンをgrub起動ディスクから起動してみる。
起動ディスクの作成は
grub-install --version # grub2であることを確認
sudo grub-install --force --root-directory=/media/usb /dev/sdc1
vaioのパーティションは下のようになっていた。初心者のころにしてはなかなかナイスなわけかたである。一生懸命調べた:)
| sda1 |
primary |
ntfs |
VAIOリカバリ領域 |
5G |
| sda2 |
primary |
ntfs |
Windows XP |
37G |
| sda3 |
primary |
ext3 |
/boot |
200M |
| sda4 |
extended |
|
|
|
| sda5 |
logical |
Linux swap |
スワップ領域 |
3G |
| sda6 |
logical |
fat32 |
共通データ領域 |
5G |
| sda7 |
logical |
ext3 |
/home |
12G |
| sda8 |
logical |
ext3 |
/ |
12G |
古いパソコンにusbをさして、hd0がusbメモリになるから、HDDはhd1になる。
まずVAIOリカバリ領域を起動するには、
insmod ntfs
root (hd1,1)
set root=(hd1,1)
drivemap -s (hd0) ${root}
chainloader +1
boot
Windows XPを起動するには、
insmod ntfs
root (hd1,1)
set root=(hd1,2)
drivemap -s (hd0) ${root}
chainloader +1
boot
もしくは
insmod ntfs
root (hd1,1)
次に、Ubuntuを起動するには
root (hd1,3)
linux /vmlinuxz-2.6.32-22-generic root=/dev/sda8
initrd /initrd.img-2.6.32-22-generic
boot
で、grub起動ディスクから直接Ubuntuを起動することができる。grub2になってるのでコマンドがややこしいが、
- root (hd1,1) でブートローダのある領域を指定
- set root=(hd1,2) して drivemap -s (hd0) ${root} でOSの/を指定
- chainloader +1 でPBRを読んできて、
- boot でブート開始となる
Windows XPはぶっ潰してしまおうかと思っていたが、久しぶりに起動したらやっぱり使いやすくていいと思ったので残すことにする。
疲れたので今日はここまで。
ちなみに
set root=(hd1,2)を飛ばすとroot (hd1,1)したときにroot=(hd1,1)されるので注意。drivemapはパーティション番号は無視するから、
リカバリ領域は
root (hd1,1)
drivemap -s (hd0) (hd1)
chainloader +1
boot
で起動できるし、Windows XPは
root (hd1,1)
drivemap -s (hd0) (hd1)
set root=(hd1,2)
chainloader +1
boot
で起動できる。set root=(hd1,2)の位置はとても重要で、chainloaderがPBRを読んでくる際に、ファイルシステムの/はどこなのかを、
${root}から読み取っているようなので、chainloaderより後ろでroot=(hd1,2)してもroot (hd1,1)したときに設定された(hd1,1)を/として
読んでしまうので、その場合はリカバリ領域が起動してしまう事に注意。
2012.03.06
Windows XPはやっぱり残すことにしたので、パーティションは以下のようにする。
| Device |
Bootable |
Part Type |
FS Type |
Mount Point |
Label |
Size |
| sda1 |
|
primary |
ntfs |
|
VAIOリカバリ領域 |
5G |
| sda2 |
boot |
primary |
ntfs |
|
Windows XP |
40G |
| sda3 |
boot |
primary |
ext3 |
/ |
Arch_root |
10G |
| sda4 |
|
extended |
|
|
|
|
| sda5 |
|
logical |
Linux swap |
|
Linux_swap |
4G |
| sda6 |
|
logical |
ext3 |
/home |
Arch_home |
5G |
| rest |
|
logical |
|
|
another OS |
16G |
MBRには現在grubが入っている。Archをとりあえず今のUbuntuの所にインストールして、MBRにはgrubをインストールしない。
こうするとMBRに居座っているgrubの本体があるUbuntuの/が消えるから起動しなくなるはず。
あとでsda3のPBRにgrubをインストールして、MBRにはマルチブートマネージャを入れる予定。
まずArchを入れる。パーティションはcfdiskが結構よさげなのでこれで区切る。
なんかwaitingどうたらというエラーが出た。どうやらArchのイメージの場所がわからないようである。
dmesg
ln -s /dev/USB外付けディスクのデバイス名 /dev/でてきたエラーメッセージのパス
kmですきなキーマップにしてから、(qwerityのemacs2とかにするとCaps LockがCtrlになっていい)
/arch/setup
でインストール開始。全部デフォルトでインストール。(あとで入れればいい)
設定するのは
HOSTNAME="Esthar"
interface=eth0
pacman.conf は全部のリポジトリをInclude (いろいろ使ってみたいので)
mirrorlist はとりあえず日本のサーバを指定
Root-Password
ホスト名はいつもFinal Fantasyの地名からとってる。今回は近代的なマシンを目指すという意味で8のエスタという街にした。
ミラーリストはあとで一番早いのに設定しなおす。
Install bootloaderはとりあえず設定ファイルの感じだけみてCancel。(PBRに入れたい人はあとで勝手に入れろということか)
Execution ReportでInstall bootloaderだけFailedになってるのみてインストール完了。
まちがってUSBドライブ抜いたらrebootできなくなったので電源プッチンする。
とりあえず現在、MBRにはgrubが入っていて、grubの設定ファイルとかがあったUbuntuの/(か/boot。どっちか忘れた)が消えたので
grub rescueシェルが起動する。とりあえずWindowsが氏んでいないことを確認する。
ls (hd0,x)/
すると中身が見れる。・・・けどntfsとかはモジュールが無いので読めない。grubのカーネルローダ本体はあるっぽい。(stage*とかはある)
なのでgrub起動ディスクからとりあえずWindowsとArchを起動する。Windowsは前と同じコマンドで起動する。
Archはまだ/のPBRにgrubがインストールされてないので、
root (hd1,3)
chainloader +1
boot
としてもだめなので、(chainloader +1でerror: invalid signature.)
root (hd1,3)
linux /boot/vmlinuz-linux root=/dev/sda3
initrd /boot/initramfs-linux.img
boot
で起動できる。とりあえずgrubを/のPBRにインストールすることにする。
grub-install /dev/sda3
でdrive.mapが合ってるか確認してreboot、grub起動ディスクから起動して、
root (hd1,3)
chainloader +1 (今度はエラーは出ない)
boot
とするとgrubのOS選択画面が出てくるから、てきとうに選んでみると
Booting 'Arch Linux'
root (hd0,2)
Error 22: No such partition
Press any key to continue..._
と言われてしまうので、Arch Linuxがハイライトされているgrubメニューでe(Edit)を押して、
root (hd0,2) => (hd1,2) に変更 (grub-legacyはsuffixが0オリジンだったりコマンドが違ったりする・・・)
b(Boot)を押すと起動する。(一時的な書き換え)
もしくはgrub rescureを起動させて、とおもったらnormal.modが無い。どうやらnormal.mod自体はgrub legacyには無いらしい。
(参考
https://forums.ubuntulinux.jp/viewtopic.php?id=10578 と )
今はMBRにgrubが入ってないから、grubのメニューとかシェルを実行することができる段階までgrub rescureから行く手段がない? (仕組みがgrub2で変わった)
みたいな感じらしいので(合ってるか知らんが)とりあえずMBMいれるしもういいやという感じ。
まあMBR(もしくはMBRの途中といってもいい?)から先が無い時点でかなり変な状況だししょうがない。
MBMを入れていく。したのサイトを参考にして作成。
れでMBM:ブートローダ(あんまり正確な表現ではないかも)、grub:カーネルローダとなっていい感じ。
参考文献
ブート関連
パーティション関連
最終更新:2013年11月28日 16:18