субота, 15 лютого 2014 р.

Як встановити FreeBSD на логічний диск з завантаженням через grub2

Тема виникла несподівано. Обговорюючи вади і плюси Linux і BSD-шних систем, стикнувся з твердженням користувачів останніх, що BSD в принципі неможливо встановити на логічні диски.
Відомо, що стандартна розбивка диску дає можливість зробити 4 основні (primary) розділи і логічні підрозділи. Це так зване MBR розбиття, чудово описане в вікі.  Саме таке розбиття і було в мене, три основні розділи і розширений (extended), розбитий на кілька логічних розділів, де стоїть Archlinux, Salix, і на одному з них я страшно бажав встановити BSD систему:

 Проби в VirtualBox показали, що дійсно, PC-BSD, FreeBSD і OpenBSD не давали можливості встановлення на логічні розділи, а вимагали повного розбиття цілого диску своєю схемою, або встановлення тільки на основний розділ. Кінець кінцем я зупинився на FreeBSD в якості тестової системи. Два дні читання документації, проби з різними дисками і версіями таки дали свій результат. Я не є спеціаліст, і метод встановлення можна назвати "через задницю", але кінцевий результат є результатом :-).
Читання документації про FreeBSD показало, що дійсно, нема на то ради, треба встановлювати на основний розділ. Однак ще існує режим , названий Fixit, в якому можна поміняти кореневу теку / на іншу. І ще треба, щоб перед цим система була завантажена з livefs. На жаль, чомусь після версії 8.4 образи livefs перестали випускати. Що, відповідно, розтягнуло процедуру встановлення останньої версії FreeBSD. Вся процедура виглядала таким чином.

1. Виділення одного логічного диску для цих цілей. В моєму випадку це був диск sda9.
2. Завантаження LiveFS 8.4 FreeBSD. Мені не вдалося запустити Fixit при завантаженні цього диску з флешки (через Unetbootin), ні з з Grub2, тому я просто випалив диск DVD і завантажував з нього
3. Коли запуститься sysinstall (прога встановлення FreeBSD), вибрати там Fixit->CDROM/DVD. Це перекине в режим командного рядка.
4. Запустити ls /dev/ . Задача - знайти розділ, який назначено для FreeBSD. Оскільки FreBSD це не Linux, нумерація відрізняється, тому головне не помилитися. Шукати треба щось з ad , в моєму випадку це був розділ ad4s9 (чому 4, я не зрозумів, бо мало б бути ad0s9, можливо в мене таблиця розділів не по порядку)
5. Сформатувати розділ в UFS2: newfs -U /dev/ad4s9
6. Змонтувати розділ. Я його монтував просто в /mnt: mount /dev/ad4s9 /mnt
7. Тепер треба поміняти доцільову теку встановлення. Для цього виходимо з режиму Fixit за допомогою команди exit . Знову завантажиться меню sysinstall. Переходимо до Configure->Options->Install Root, тиснемо клавішу пробілу і вписуємо у віконечку /mnt . Тиснемо q (вихід), вертаємося до меню, ідемо тепер до Distributions. Треба вибрати base і kernel (GENERIC). Вертаємося, нас перекидає до вибору джерела встановлення. Тут появилися проблеми. Оскільки сітки в мене не було, то ж я зробив простіше: стягнув на образ диску DVD, розпакував його на флешку, вставив в комп, вернувся знову в Fixit,  створив теку mkdir /mnt/install, змонтував флешку mount_msdosfs /dev/da0s1/mnt/install, вернувся знову sysinstall де вибрав встановлення з існуючої файлової системи, де вказав просто шлях до розпакованих файлів з DVD диску. Якщо б була сітка, тоді простіше встановлювати через ftp/http.
8. Встановлюємо систему. Вона встановиться в /mnt. Далі треба знову вернутися в Fixit і проробити деякі правки.
9. mv /mnt/boot/GENERIC /mnt/boot/kernel (переносимо ядро в правильне місце)
10.  ee /mnt/etc/fstab (правимо fstab) і вписуємо стрічку:
/dev/ad4s9   /   ufs   rw   0  0
Записуємо, виходимо.
11. Мені не вдалося встановити пароль суперкористувача через sysinstall, тому довелося встановлювати його через chroot в режимі Fixit:
 /mnt/usr/sbin/chroot    /mnt    /usr/bin/passwd   root 
12. Це практично все. Маємо систему і суперкористувача. Тепер як її запустити? Я перезапустив Linux, і відредагував файл /etc/grub.d/40_custom наступним:
menuentry "FreeBSD" {
    insmod ufs2
    insmod part_gpt
    set root='(hd0,msdos9)'
#    search --no-floppy --fs-uuid --set 4c65971a375a3875
    kfreebsd             /boot/kernel/kernel
    kfreebsd_loadenv     /boot/device.hints
    set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ad4s9
    set kFreeBSD.vfs.root.mountfrom.options=rw
}

Оновлення конфігурація Grub2 і вуаля - перший запуск FreeBSD пішов. Далі настройка інтернету, оновлення до 9.2, а потім вже до 10.0.

Можливо мої сумбурні записки стануть в пригоді комусь :-) А на разі в мене повністю встановлена система, допасована до моїх потреб, лиш щось я так бачу, що недовго вона буде в мене стояти...

17.02.2014 Можна було все робити зовсім по іншому, використавши конвертацію MBR->GPT і встановлення на GPT-диск (http://daemonforums.org/showthread.php?t=2666).

3 коментарі:

Slavik сказав...

Востаннє FreeBSD була у мене на ПК мабуть років 5-6 тому. Даний допис викликав бажання знову спробувати BSD.

Переглядаю вимоги до системи для 9.х:
FreeBSD/i386 requires a 486 or better processor and at least 64 MB of RAM.

Невжевона дійсно піде на 486? :-O

Yarema сказав...

Піде спокійно.

Sergij Marchenko сказав...

Жесть :-)

Google Analytics