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をインストールしたくなかったのです。
そこで、ごそごそしていたら、なんと。WindowsGentooも起動しなくなりました。
自分自身、GRUBやPCのブートシーケンス、パーティション諸々について
はっきりと分かっていない部分が多かったので、この機会に調べました。
(いろいろと間違って解釈してるところはあるかもしれません。)

ブートシーケンス

  1. 前略。
  2. MBRが読み込まれる。
  3. アクティブな基本パーティションが検索される。
  4. そこのブートセクタを読み込む。
  5. 後略。


さらに、各パーティション(基本パーティション、論理パーティション)には、
ブートセクタがあり、そこに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に書き換えます。
すると、見事にデュアルブートができました。

両方とも、ちゃんと起動する!やった!

今回のまとめ