linuxの後にwindowsをインストール
以前,ミスってwindows領域を消してしまったことがあったが,
(d:id:pneumaster:20080219:1203356562)
必要に迫られて再インストール.
Linuxの後にwindowsをインストールするのは(ある意味)初なので,
メモしておく.
今回,想定しているのは次の状態.
# というか後付け.
# grubからNTLDRを呼び出すようにしたかったがよく分からず諦めた.
起動 -> NTLDR -+-> windows | `-> GRUB -> linux
ちなみに以前はよくある構成.
起動 -> GRUB -+-> windows | `-> linux
現在の状態.
# fdisk -l Disk /dev/sda: 163.9 GB, 163928604672 bytes 255 heads, 63 sectors/track, 19929 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 3824 30716248+ 7 HPFS/NTFS /dev/sda2 3825 3837 104422+ 83 Linux /dev/sda3 3838 19929 129258990 8e Linux LVM
$ LANG=C df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 123187084 75365780 41462676 65% / /dev/sda2 101105 16605 79279 18% /boot tmpfs 1037408 0 1037408 0% /dev/shm
現行のgrub関連ファイルを/root/grub.backup以下にバックアップとっておく
# cp /boot/grub/grub.conf /root/grub.backup/ # cp /boot/grub/device.map /root/grub.backup/
その中身.
grub.conf (menu.lst)
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,1) # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=0 timeout=7 splashimage=(hd0,1)/grub/splash.xpm.gz hiddenmenu title Fedora Core (2.6.22.14-72.fc6) root (hd0,1) kernel /vmlinuz-2.6.22.14-72.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb q uiet initrd /initrd-2.6.22.14-72.fc6.img title Fedora Core (2.6.22.7-57.fc6) root (hd0,1) kernel /vmlinuz-2.6.22.7-57.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb qu iet
本件とは関係ないが,
ファイルシステムのルートがdfの結果と違うことに気づいた.
dfでは/dev/mapper/VolGroup00-LogVol00だったのに,
grub.confでは/dev/VolGroup00/LogVol00になってる.
/boot以下と/boot/grub以下のファイルと,そのタイムスタンプをメモっておく.
# ls -l /boot/ total 10750 -rw-r--r-- 1 root root 996318 Nov 22 2007 System.map-2.6.22.14-72.fc6 -rw-r--r-- 1 root root 998929 Sep 22 2007 System.map-2.6.22.7-57.fc6 -rw-r--r-- 1 root root 80079 Nov 22 2007 config-2.6.22.14-72.fc6 -rw-r--r-- 1 root root 80133 Sep 22 2007 config-2.6.22.7-57.fc6 drwxr-xr-x 2 root root 1024 Jun 30 2008 grub -rw------- 1 root root 2332933 Jun 30 2008 initrd-2.6.22.14-72.fc6.img -rw------- 1 root root 2332327 Sep 26 2007 initrd-2.6.22.7-57.fc6.img drwx------ 2 root root 12288 Apr 26 2007 lost+found -rw-r--r-- 1 root root 2057300 Nov 22 2007 vmlinuz-2.6.22.14-72.fc6 -rw-r--r-- 1 root root 2059764 Sep 22 2007 vmlinuz-2.6.22.7-57.fc6 # ls -l /boot/grub/ total 218 -rw-r--r-- 1 root root 63 Apr 26 2007 device.map -rw-r--r-- 1 root root 7616 Apr 26 2007 e2fs_stage1_5 -rw-r--r-- 1 root root 7456 Apr 26 2007 fat_stage1_5 -rw-r--r-- 1 root root 6720 Apr 26 2007 ffs_stage1_5 -rw------- 1 root root 897 Jun 30 2008 grub.conf -rw-r--r-- 1 root root 6720 Apr 26 2007 iso9660_stage1_5 -rw-r--r-- 1 root root 8192 Apr 26 2007 jfs_stage1_5 lrwxrwxrwx 1 root root 11 Apr 26 2007 menu.lst -> ./grub.conf -rw-r--r-- 1 root root 6880 Apr 26 2007 minix_stage1_5 -rw-r--r-- 1 root root 9248 Apr 26 2007 reiserfs_stage1_5 -rw-r--r-- 1 root root 17127 Sep 25 2006 splash.xpm.gz -rw-r--r-- 1 root root 512 Apr 26 2007 stage1 -rw-r--r-- 1 root root 104924 Apr 26 2007 stage2 -rw-r--r-- 1 root root 7040 Apr 26 2007 ufs2_stage1_5 -rw-r--r-- 1 root root 6272 Apr 26 2007 vstafs_stage1_5 -rw-r--r-- 1 root root 8864 Apr 26 2007 xfs_stage1_5
ところで,sda(MBR??)とsda1の先頭512バイトは異なるという認識でよいのだろうか?
# dd if=/dev/sda of=./grub_mbr_sda.br bs=512 count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 8.5036e-05 seconds, 6.0 MB/s # dd if=/dev/sda1 of=./grub_mbr_sda1.br bs=512 count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.0110187 seconds, 46.5 kB/s # cmp grub_mbr_sda* grub_mbr_sda.br grub_mbr_sda1.br differ: char 2, line 1
sdaとsda1の先頭512バイトは異なるようだ.
MBRにインストールされているgrubを/bootパーティション内にインストール
どちらもバックアップはとっておいたので,MBRにインストールされているものとして
話を進めることにしよう.
まず,grub.confからwindowsの部分を消去する.
default=0 timeout=7 splashimage=(hd0,1)/grub/splash.xpm.gz hiddenmenu title Fedora Core (2.6.22.14-72.fc6) root (hd0,1) kernel /vmlinuz-2.6.22.14-72.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.22.14-72.fc6.img title Fedora Core (2.6.22.7-57.fc6) root (hd0,1) kernel /vmlinuz-2.6.22.7-57.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.22.7-57.fc6.img
MBRにインストールされていたgrubを/dev/sda1にインストール
http://www.itmedia.co.jp/help/tips/linux/l0556.html
http://okwave.jp/qa4332276.html
http://www.gnu.org/software/grub/manual/grub.txt
ここを参考にした.
# grub-install --root-directory=/ /dev/sda1
としてみた.
これをファイル化.
# dd if=/dev/sda1 of=/root/grub.backup/grub_sda1.br bs=512 count=1
windowsをインストール.
windowsインストール時にMBRが書き換えられて,従来のGRUBが使えなくなるはず.
インストール完了後,再起動するとwindowsが起動した.OK.
次に,
http://www.nina.jp/server/redhat/grub/dualboot_ntldr.html
に書かれている通りに先ほどUSBメモリに入れておいたgrub_sda1.brを
C:\grub_sda1.brとしてコピー.
そして,BOOT.INIを編集してNTLDRからGRUBが起動するようにする.
通常では,BOOT.INIが見えない状態なので,
「システムフォルダとファイルを見えるようにする」にチェックを入れたが,
残念ながら見えなかった.
仕方がないので,「ファイル名を指定して実行」からmsconfigを呼び出し,
BOOT.INIを編集しようと考えたが,チェックボックスのみであって,
文字列は入力できない.
試しに復元ポイントを作ってみると,
これのおかげなのか,C:\WINDOWS\pss\にBOOT.INI.backupができた.
# もしかしたら復元ポイントを作らなくても,
# backupファイルは作成されるのかもしれない.
# これは確認してない.
このBOOT.INI.backupをC:\にコピーして以下を追加.
(http://www.nina.jp/server/redhat/grub/dualboot_ntldr.html)
c:\grub.br="Linux"
再起動すれば,NTLDRでOSの選択画面が表示される.
参考
http://nobumasa-web.hp.infoseek.co.jp/multi_boot/linux.html#lilo_win_linux
http://www.nina.jp/server/redhat/grub/dualboot_ntldr.html
http://www.itmedia.co.jp/help/tips/linux/l0556.html
http://okwave.jp/qa4332276.html
http://www.gentoo.org/doc/ja/grub-error-guide.xml
http://www.gnu.org/software/grub/manual/grub.txt