Исходные данные: FreeBSD 7.2, Asus Eee PC 900, одна флешка, одна карта памяти
Задача: Установить систему на нетбук с минимальными временными затратами
Недавно появилось дикое желание заменить ОС на нетбуке. До текущего момента там стояла Windows 7. Решил поставить FreeBSD. Я уже экспериментировал с openSUSE и мне не понравилась производительность системы. Думаю, что с FreeBSD все будет иначе.
Первым делом я стал искать в интернете советы как поставить систему. Наткнулся на следующую статью «Ставим FreeBSD на Asus Eee PC» на сайте lissyara.su. Идею установки я понял, но хотелось что-то более простого, без всякого редактирования файлов и т.д. Я нашел три метода поставить FreeBSD на ноутбук без сидюка.
Метод 1
Купить внешний cd-rom
Метод 2
Сетевая установка. Как? PXE! Выдержка из wikipedia:
PXE (англ. Preboot Execution Environment, произносится пикси) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Для организации загрузки системы в PXE используются протоколы IP, UDP, DHCP и TFTP.
PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по DHCP) исполняемый файл, после чего передаёт ему управление.
Спецификация PXE ограничивает размер загрузчика 32 килобайтами, поэтому иногда используется двухстадийная загрузка, когда первый загрузчик получает и запускает вторичный, который уже получает и запускает образ операционной системы.
Одна из реализаций загружаемого по PXE файла — pxelinux из комплекта программ syslinux. pxelinux умеет показывать пользователю меню, похожее на меню syslinux и загружать по сети и передавать управление ядру Linux и программам, имеющим идентичный формат загрузки (например, Memtest86).
Как сказано выше, для установки по сети нам понадобится сервер с DHCP и TFTP. Такой сервер есть у меня. Суть данной установки заключается в том, что в ноутбуке в биосе необходимо включить опцию, которая позволяла бы грузиться через сетевую карту. Далее, надо настроить dhcp. А именно, указать в настройках, чтобы ноутбуку с таким-то MAC-адресом выдавался такой-то IP-адрес и подгружался указанный файл, который в свою очередь грузил бы загрузчик FreeBSD. На примере это выглядит вот так:
....
# объявляем хост
host setup_server {
# указываем корневую директорию с нашим загрузчиком и необходимыми файлами
option root-path "/usr/tftpboot";
# файл, который надо загружать (относительно корневой директории)
filename "boot/pxeboot";
# название сервера
server-name "192.168.1.1";
# какой сервер использовать, если текущий не сработал
next-server "192.168.1.1";
# mac-адрес сетевой карты ноутбука
hardware ethernet "00:22:1c:8b:fa:11";
# присваиваем вот этот адрес ноутбуку
fixed-address "192.168.1.4";
}
....
Все! Вот это часть конфига DHCP, отвечающая за подгрузку файла pxeboot указанной нами машине. Далее, необходимо активировать TFTP. TFTP — Trivial File Transfer Protocol — протокол, который используется как раз для загрузки бездисковых машин. TFTP висит на 69 порту и не имеет никакой защиты (авторизации пользователей). Активируем его в файле /etc/inetd.conf
, раскомментируем строку:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /usr/tftpboot
добавляем в /etc/rc.conf
строчки:
inetd_enable="YES"
nfs_server_enable="YES"
в файл /etc/exports
строчку:
/usr/tftpboot -alldirs -ro
и запускаем
# /etc/rc.d/inetd start
Ах да, чуть не забыл! Нам же еще нужно создать необходимые файлы!!! А их и не надо создавать. Просто скопируйте содержимое диска с дистрибутивом FreeBSD в папку /usr/tftpboot
. Файл pxeboot можно создать на уже имеющейся системе:
# rm -rf /usr/obj/*
# cd /usr/src/sys/boot
# make
# cp /usr/src/sys/boot/i386/pxeldr/pxeboot /usr/tftpboot
Метод 3
Данный метод чуть более ресурсоемок, но не требует никаких серверов. Суть примерно та же, что и в статье с сайта lissyara.su. Но, используем мы две флешки. Первое, что необходимо сделать — это создать загрузочную флешку. Опять же, есть два варианта:
Вариант 1. Делаем все сами.
Создаем загрузочную флешку:
# fdisk -I /dev/ad2
# fdisk -B /dev/ad2
# bsdlabel -w /dev/ad2s1 auto
# bsdlabel -B /dev/ad2s1
# newfs -U /dev/ad2s1a
# mount /dev/ad2s1a /mnt
Вариант 2. Используем утилиты.
Существует утилита, которая называется UNetbootin (http://unetbootin.sourceforge.net/). Она позволяет создать загрузочную флешку для многих дистрибутивов, в том числе и FreeBSD. Очень удобная утилита. Скачиваем ее, выбираем в качестве дистрибутива FreeBSD версии 7.0, тип USB диск, диск I (в моем случае). Дальше там все происходит автоматически.
После любого из этих двух вариантов надо создать еще одну флешку, отформатированную в FAT32. На ней должен быть диск FreeBSD. Все что останется сделать — это загрузиться с первой флешки, начать установку, а в качестве источника установки выбрать DOS-раздел (если дистрибутив находится на SD-карточке, то раздел будет da1s1). Все, установка медленно, но верно завершиться.
Полезные ссылки
1. Информация по настройке оборудования в FreeBSD на EeePC (ссылка)
2. Дистрибутив UNetbootin (ссылка)
3. Инструкция с сайта lissyara.su (ссылка)