понеділок, 8 червня 2009 р.

Відновлення GRUB у Ubuntu після встановлення Windows

Це допис ніяким боком не стосується основної теми блогу.
Більше того, про відновлення GRUB в інтернетах не писав мабуть тільки лінивий. Тому я не буду стояти осторонь і додам свої 5 копійок :).
Між іншим Ubuntu Linux перейшов на використання завантажувача Grub2.
На моїй машині в дуалбуті постійно мешкають Windows(зараз Windows 7) і Linux(зараз kubuntu 9.04). Сьогодні встановав Windows 7 build 7100. Як на мене система досить непогана і на перший погляд працює значно стабільніше свого попередника. Хоча я більше надаю перевагу Linux. Але це тема іншої історії.
Так от встановлювач Windows перезаписує завантажувальний розділ жорсткого диску, і встановлює туди свій завантажувач. Як тепер відновити grub, щоб можна було при старті машини звично обирати ОС для завантаження?
Розписую покрокову інстукцію для свої системи:


1. Завантажуємо графічний інсталятор kubuntu 9.04 і відкриваємо консоль.
2. Дивимось таблицю розділів:
ubuntu@ubuntu:~$ sudo fdisk -l /dev/sda

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x64920a32

Device Boot Start End Blocks Id System
/dev/sda1 * 1 2550 20482843+ 7 HPFS/NTFS
/dev/sda2 5101 30401 203230282+ f W95 Ext'd (LBA)
/dev/sda5 5101 11534 51681073+ 7 HPFS/NTFS
/dev/sda6 11535 18036 52227283+ 7 HPFS/NTFS
/dev/sda7 18037 19252 9767488+ 83 Linux
/dev/sda8 19253 19374 979933+ 82 Linux swap / Solaris
/dev/sda9 19375 30389 88477956 83 Linux
/dev/sda10 30390 30401 96358+ 83 Linux

де:
sda1 - розділ з windows.
sda5, sda6 - розділи де зберігається всякий хламу для windows.
sda7 - кореневий розділ ubuntu(fs ext4).
sda8 - розділ підкачки(swap) для linux.
sda10 - розділ boot.
sda9 - розділ файлосмітник для linux.

3. Далі необхідно примонтувати кореневий розділ ubuntu. Наприклад в /mnt/root.
ubuntu@ubuntu:~$ sudo mkdir /mnt/root/
ubuntu@ubuntu:~$ sudo mount -t ext4 /dev/sda7 /mnt/root/
ubuntu@ubuntu:~$ sudo mount /dev/sda10 /mnt/root/boot/
ubuntu@ubuntu:~$ sudo mount -t proc none /mnt/root/proc/
ubuntu@ubuntu:~$ sudo mount -o bind /dev/ /mnt/root/dev


4. Змінюємо кореневий розділ за допомогою chroot:
ubuntu@ubuntu:~$ sudo chroot /mnt/root/ /bin/bash
root@ubuntu:/#


5. Далі переходимо до командного рядка grub і встановлюємо завантажувач на /dev/sda:
root@ubuntu:/# grub
grub> root (hd0,9)
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+17 p (hd0,9)/grub/stage2 /grub/menu
.lst"... succeeded
Done.

grub>
Зверніть увагу! (hd0,9) == /dev/sda10.
Це повязане з тим, що номера розділів в Linux починаються з 1, тоді як Grub нумерує їх з 0.

6. Якщо все пройшло без помилок, то можна перевантажувати комп'ютер.

7. ???

8. PROFIT

Немає коментарів: