ThinkPad X30 に Gentoo をインストールしてみた。
最近、常時起動してるX30が微妙に活躍しなくなってしまいました。
というのも、今まではTwitterのTLを垂れ流していたのですが、
前のアカウントは削除してしまったので、
前のアカウントでフォローしてた方々をリストにして垂れ流してたのですが、
やはり、以前と比べると見る機会が減ってしまいました。
そこで、Linuxのデスクトップ環境をインストールしてみることにしました。
鳥ですが、以前に id:r_takaishi さんがお勧めしてくれたGentooを入れることにしました。
ArchLinuxのデスクトップ環境は、2年ほど前に一度構築したことがあるので、
きっと、なんとかなるだろう、というノリです。
念のため、Windows環境も残しつつ、リカバリ領域も残しつつのデュアルブート環境を構築します。
Gentoo X86 Handbook - Gentoo Wiki
上記のサイトを参考にインストールを進めました。
CDからブート
ここでいきなり躓きました。
Detecting 云々 の後、Unpacking firmware... [OK] と出て、
その後に Process swapper とやらが出てきて、スタックのダンプが表示されます。
後は、ずっとこの調子。一向にシェルが起動しない。
ぐぐっても情報が全く出てこず、USB接続のCDドライブがだめなのか、
それともHDDやメモリがおかしいのか、全く分からず、
1時間ほど四苦八苦したところで、ようやく解決。
hoge [OK] bar [OK] foo [OK]
みたいな表示が出ている最中に、I(大文字のアイ)を押してEnterキーを押します。
すると、Interactive modeになるので、そこで
About to start the service autoconfig 1) Start service 3) Continue boot process 2) Skip service 4) Exit to shell Enter your selection: 2
ここで2を入れて、autoconfigをスキップします。
すると、やった!うまくシェルが起動しました。
livecd ~ #
ネットワークモジュールを読み込む
livecd ~ # ls /lib/modules/`uname -r`/kernel/drivers/net hogehogehogehog e100.ko hoghogehogehoghog livecd ~ # modprobe e100 livecd ~ # ifconfig eth0 eth0 hogehoghoge livecd ~ # net-setup eth0
これでなんとかネットにつながった!
パーティションの設定
あらかじめ、Windowsの入っているパーティションをリサイズしておきます。
これを用いて、今回は、Windowsのパーティションを7GBに、残りをGentooに充てました。
(sdaじゃなくてなぜかhdaでした。)
livecd ~ # ls /dev/sd* ls: cannot access /dv/sd*: No such file or directory livecd ~ # ls /dev/hd* /dev/hda /dev/hda1 /dev/hda2 livecd ~ # fdisk /dev/hda Command (m for help): p Disk /dev/hda: 20.0 GB, 20003880960 bytes 240 heads, 63 sectors/track, 2584 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xac1bac1b Device Boot Start End Blocks Id System /dev/hda1 * 1 971 7340728+ b W95 FAT32 (LBA) /dev/hda2 2420 2584 1247400 1c Hidden W95 FAT32 (LBA)
まず、拡張領域を作成する。(n → e → Enter → Enter)
これで残りが拡張領域に割り当てられる。
後は、拡張領域上でパーティションを区切る。
この辺はマニュアル通り。ただし、アクティブにするのはExtended。
結果、次のような構成になった。(結果的に、これではうまくいかない。)
Device Boot Start End Blocks Id System /dev/hda1 * 1 971 7340728+ b W95 FAT32 (LBA) /dev/hda2 2420 2584 1247400 1c Hidden W95 FAT32 (LBA) /dev/hda3 * 972 2419 10946880 5 Extended /dev/hda5 972 976 37768+ 83 Linux /dev/hda6 977 1046 529168+ 82 Linux swap / Solaris /dev/hda7 1047 2419 10379848+ 83 Linux
ファイルシステムなどはマニュアル通り。
mirrorselect
/mnt/gentoo/etc/make.conf を設定する際に、mirrorselect が利用可能ですが、
一覧から選んで、Spaceでチェックを入れずにEnter押しちゃって、
「あれ?追記されない??」とかバカやってました。
mirrorselect は、Spaceキーでチェックを入れてからEnterですね。
GRUBの設定
特に詰むこともなく、最後のGRUBの設定まで行き着きました。
ThinkPadに入っているリカバリ領域はそのままにしておきたいので、
MBRにはGRUBをインストールしたくなかったのです。
そこで、ごそごそしていたら、なんと。WindowsもGentooも起動しなくなりました。
自分自身、GRUBやPCのブートシーケンス、パーティション諸々について
はっきりと分かっていない部分が多かったので、この機会に調べました。
(いろいろと間違って解釈してるところはあるかもしれません。)
ブートシーケンス
さらに、各パーティション(基本パーティション、論理パーティション)には、
ブートセクタがあり、そこにGRUBなどをインストールすることができる。
もちろん、MBRにインストールすることもできる。
基本パーティションや拡張パーティションは、合わせて4つしか存在できず、
拡張パーティション内には、複数の論理パーティションを持つことができる。
参考サイト: OS のブートシーケンス
要するに、GentooのBoot用パーティションにGRUBをインストールしてあげればよいのではないか、という結論に至りました。
しかしこれは間違いです。今回、Boot用パーティションは論理パーティションにあるので、
基本パーティションにGRUBをインストールしないと読んでくれません。
Windows2000のリカバリ
一度パーティションをさらぴんぴんにして、Windows2000を入れなおします。
その後、SP4にアップデートして、パーティションをリサイズします。
構成は前述の通りにやりました。
パーティションの整理
リカバリすると、WindowsのパーティションとD2D用パーティションだけになっているので、
Windows用のパーティションを縮めて、次のような感じにしました。
(GRUBインストール用パーティションを無駄に大きくしてしまった・・・。)
Device Boot Start End Blocks Id System /dev/hda1 1 948 7166848+ c W95 FAT32 (LBA) ← リカバリしたWindowsが入ってるパーティション /dev/hda2 971 2419 10954440 f W95 Ext'd (LBA) ← 拡張パーティション(hda5,hda6,hda7が乗っかってる) /dev/hda3 2420 2584 1247400 1c Hidden W95 FAT32 (LBA) ← リカバリ領域 /dev/hda4 * 949 970 166320+ 83 Linux ← GRUBインストール用パーティション /dev/hda5 971 975 37768+ 83 Linux ← Gentooブート用パーティション /dev/hda6 976 1045 529168+ 82 Linux swap / Solaris ← GentooのSwapパーティション /dev/hda7 1046 2419 10387408+ 83 Linux ← Gentooパーティション
Gentooのインストール
この時点で3回目のGentooインストール。流石に慣れた感じで、さくさくと入れます。
- GRUBは当然、手動でインストール。
- root (hd0,4) ← /dev/hda5 を指定
- setup (hd0,3) ← /dev/hda4 を指定
- quit
- こうすることで、起動時は MBR → /dev/hda4(GRUBをインストールした基本パーティション) の順で読み込まれ、grub.confに設定したブートメニューが表示される。
インストールが完了して再起動すると、何故かhdaがsdaに変わっていてエラーを吐いてたので、
再びCDから起動して、fstabとgrub.confをsdaに書き換えます。
すると、見事にデュアルブートができました。
両方とも、ちゃんと起動する!やった!
今回のまとめ
- 各パーティションにはブートセクタがあり、ブートセクタはパーティションの先頭にある。
- ファイルシステムとは別のところにあるので、OSが乗ってるパーティションやファイルが置いてあるパーティションのブートセクタにGRUBをインストールしても、問題ない。
- ブートの流れは、(前略) → MBR → アクティブな基本パーティション → (後略)
- アクティブな基本パーティションにGRUBを乗せれば、それを読み込んでブートメニューを表示してくれる。
- 基本パーティションと拡張パーティションは合わせて4つまで。
- よく分かっていない状態で挑むのは大変危険
- 「そんなデュアルブートで大丈夫か?」→「大丈夫だ、問題ない。」→ (Windowsはブルースクリーン、Gentooはカーネルパニック) → 神は言っている・・・ここで青くなる運命ではないと・・・ → 再インストール → 「そんなデュアルブートで大丈夫か?」→ 「一番いいGRUBを頼む。」→「Windows2000ノカタキヲトルノデス!」