ブートローダー

2021年4月9日

日ごろはWindowsマシンしか触ってませんが、
サーバー用途としてLinuxマシンも常時動かしてます(このサイトのネットラジオの配信もLinux)

現在Windows3台(うち1台ノート)、Linux1台、WindowsとLinux混同1台)の計5台のPC構成になります。
WinとLinuxの混同機は最近までWindowsのみで、WindowsServer2003が入ってるのですが、
Linux機がもう1個必要だけどWindows2003も消すわけにはいかない
ということでcolinuxでubuntu10.04serverを導入してました。
しかし、動かしたいプログラムがどうしてもカーネルエミュレーション上では重くて
直接ubuntuを起動させないといけないことにw
colinuxでubuntu入れた時に仮想ディスクは使わず実パーティション作ってインストールしてたし、
Windows2003は最近はOSすらあまり起動させてないので直接ubuntu起動でもいいかと思い
colinux用のubuntuをデュアルブートできるようにしようと(あまり使ってないにしてもWin2003は消すわけにはいかないので)
「デュアルブート設定なんてすぐ終わるだろう」
で設定をやり始めると、
Grubなんかが必要なんですがSwap領域もcolinuxで動かしてた時は1Gbしか取ってなかったので
どうせ環境作って2週間くらいでたいしてバックアップが必要なものも無いので

「なんだよ結局ubuntuクリーンインスコの方が楽じゃん」

と思いクリーンインスコw
Swapもアホみたいにたくさんで10Gb取りましたw
メモリ3GのPCでなんでそんなにいるかっていうと、
動かしたいプログラムがハンパなくメモリ食うんですw
既存のLinux機でもそのプログラム動かしてるけどメモリ使用量がやばいw
32bitなのでメモリ4G積んでるんですが(認識されてる分はもうちょっと少ない)
メモリの9割そのプログラムで使われててswapが6Gくらいだったかな?もほぼ空きが無い状態で24時間動いてます。
さすがにこれではまずいので今回Linuxを追加することになったのでSwapは多めに取ってるんです

で、話が折れたのでubuntuのインストールの話に戻りますが
まずubuntuインストール時のパーティション作成時に/bootを作ります。
元々HDDが2台載ってるPCで1台はCドライブ、2台目がDドライブとubuntu用に用意された空き容量なのでパーティション構成は
sda1 WindowsのCドライブでWindows2003(NTFS)
sdb1 WindowsのDドライブ(NTFS)
sdb2 / (ext4)
sdb3 swap
sdb4 /boot(ext3)
となります。

んでインストール最後のブートローダーのインスコでMBRへの上書きはしませんでした。
これはWindowsにあとあと変更があったりって時に困るからです
理由はここでは割愛するので知りたければ「Linux MBR上書き」でググってちょw
なのでWindowsのntldrからロードする方法が最善なのですが、
何通りか方法あったなと思い出しながらググります。

するといくつか方法が出てきて試したのが
1.ブートローダーのインスコ先に指定したsdb4の512バイトをddでファイル化してboot.iniで読ます
2.Grub4dosを使ってsdb4をロード
3.grub24dosをインストールする

結果は全部ダメwww
1の方法はGrub2では既にダメっぽいと書かれた記事を何件か見かけたのでまあわかる
2の方法はまずgrub4dosをダウンロードし、grldrとgrldr.mbrの2つのファイルをC:\ (Cドライブ直下)にコピー
チェインロードのためのメニューmenu.lstをC:\に作成
menu.lstの内容は
title ubuntu 10.04 server
root (hd1,3)
kernel /boot/grub/core.img

C:\boot.iniにc:\grldr="ubuntu 10.04 server"を追記
hd1,3の部分はWindowsでは0から数えるので-1した数値を書く為sda→hd0でsdb→hd1のようになる
パーティション番号も0からなのでsdb4なら3になる
これでやってみたけどGrubのOS選択で ubuntu 10.04 server を選んでもfile not foundとなる
パーティション指定が間違っててubuntuインスコパーティションじゃないとダメなのかと
title ubuntu 10.04 server
root (hd1,1)
kernel /boot/grub/core.img

これでやっても同じw
しゃーないので参考にしたブログ記事のコメント欄にあった方法で
title ubuntu 10.04 server
find --set-root /boot/grub/core.img
kernel /boot/grub/core.img

としてみたがやっぱり同じ(´ヘ`;)

最終手段で3のgrub24dosをインストールしてみたけどダメw
なんなんだよおおおおおおおおおお

boot-repairを使うにはLiveCDで起動して
#sudo add-apt-repository ppa:yannubuntu/boot-repair
#sudo apt-get update && sudo apt-get install -y boot-repair && boot-repair

#update-initramfs
#update-grub
とかもいろいろ試してみる

http://wikiwiki.jp/disklessfun/?grub2_and_grub1#additional_work
このページがすごくgrubに関しては参考になるんだけど、このWiki見てると
そもそもgrub1(grub-legacy)とgrub2でディスクの表現が違ってるせいで
MBRのntldrからgrub4dosでPBRのgrub2へのチェーンロードをしてるともう・・・
ディスク指定ですら頭がごちゃごちゃに・・・
grub4dosではgrub1と同じなので
一般的な表現 grub1上での表記 Linux上でのSATA接続の場合のデバイス名
1番目のハードディスク※ (hd0) /dev/sda
1番目のハードディスク※の第1パーティション (hd0,0) /dev/sda1
1番目のハードディスク※の第2パーティション (hd0,1) /dev/sda2
1番目のハードディスク※の第3パーティション (hd0,2) /dev/sda3
1番目のハードディスク※の第4パーティション (hd0,3) /dev/sda4
1番目のハードディスク※の第5パーティション (hd0,4) /dev/sda5
1番目のハードディスク※の第6パーティション (hd0,5) /dev/sda6
1番目のハードディスク※の第7パーティション (hd0,6) /dev/sda7
2番目のハードディスク※ (hd1) /dev/sdb
2番目のハードディスク※の第1パーティション (hd1,0) /dev/sdb1
2番目のハードディスク※の第2パーティション (hd1,1) /dev/sdb2
2番目のハードディスク※の第3パーティション (hd1,2) /dev/sdb3
2番目のハードディスク※の第4パーティション (hd1,3) /dev/sdb4
2番目のハードディスク※の第5パーティション (hd1,4) /dev/sd

と、なるんだけどチェーンロード先のgrub2では

一般的な表現 grub2上での表記 Linux上でのSATA接続の場合のデバイス名
1番目のハードディスク※ (hd0) /dev/sda
1番目のハードディスク※の第1パーティション (hd0,1) /dev/sda1
1番目のハードディスク※の第2パーティション (hd0,2) /dev/sda2
1番目のハードディスク※の第3パーティション (hd0,3) /dev/sda3
1番目のハードディスク※の第4パーティション (hd0,4) /dev/sda4
1番目のハードディスク※の第5パーティション (hd0,5) /dev/sda5
1番目のハードディスク※の第6パーティション (hd0,6) /dev/sda6
1番目のハードディスク※の第7パーティション (hd0,7) /dev/sda7
2番目のハードディスク※ (hd1) /dev/sdb
2番目のハードディスク※の第1パーティション (hd1,1) /dev/sdb1
2番目のハードディスク※の第2パーティション (hd1,2) /dev/sdb2
2番目のハードディスク※の第3パーティション (hd1,3) /dev/sdb3
2番目のハードディスク※の第4パーティション (hd1,4) /dev/sdb4
2番目のハードディスク※の第5パーティション (hd1,5) /dev/sdb5

と、なるからなんですw

なんでこんなにやっかいなんだとwww

で、何してもダメなんでWindowsのシステム(Cドライブ)が入ってるHDDをはずして、
2番目だったHDDを1番目として接続しubuntuインストールしてみました。

∑( ̄□ ̄;)ナント!!
それでも起動しないwwww

古いBIOSではマスタースレーブのジャンパなしSATAがダメなのか(本来はSATAはジャンパいらない)
BIOSの設定でまずい部分があるのか原因はまだ不明だけどこのHDDではubuntuが起動できないとわかりましたw

んで次は1番目のHDDのWin2003領域を削ってLinux用領域作ってubuntu入れてみましたw
それでも起動しないwwww

こうなると完全に原因は

チ ッ プ セ ッ ト の B I O S が そ の カ ー ネ ル に 対 応 し て な い

くらいしか思いつきません・・・古いPCでやんなやって話しですかね(´ヘ`;)

Linux

Posted by boomboom