Ручная установка FreeBSD на USB flash или HDD

Ручная установка FreeBSD на USB flash или HDD #

Данная статья подойдет как для ручной установки FreeBSD 10 на жесткий диск в целях повышения собственного skill, так и для ручной установки FreeBSD на USB flash накопитель, либо на любой другой накопитель, на который невозможно установить систему стандартными средствами.

Установочный образ диска или USB-стика можно скачать на FTP-серверах FreeBSD. Список Украинских зеркал. Для записи образа на USB-стик воспользуйтесь приложением Win32DiskImager.

Установка системы #

Загружаемся с установочного диска.

Нажимаем Enter.

В первом диалоговом окне «Welcome» выбираем < Shell >

После чего попадаем в оболочку

Далее необходимо определить, какие накопители имеются в нашей системе.

geom disk list

Из вывода следует, что у нас два устройства:

  • ada0 — жесткий диск (IDE Hard Drive)
  • cd0 — дисковод

Посмотрим, нет ли на жестком диске какой либо разметки:

gpart show ada0

Наш жесткий диск не размечен.

Создадим разметку GPT и посмотрим, что произошло:

gpart create -s gpt /dev/ada0
gpart show ada0

Теперь наш диск имеет разметку GPT. Начальный номер блока LBA, который мы можем использовать, = 34. Блоки LBA с 0 по 33 зарезервированы. Во второй колонке можно увидеть количество доступных блоков LBA. Размер блока LBA = 512 байт.

Если установка производится на современные жесткие диски, у которых размер сектора = 4 кб, то при создании разделов (партиций) необходимо использовать выравнивание. Можно поступить двумя способами: 1) если указываем параметры раздела в блоках, то номер блока вводить кратным 8, например: -b 40; 2) если указываем размер раздела в байтах, либо не указываем вообще начало и размер, использовать параметр -a 4k, который подгонит начало и конец раздела под секторы, размером 4 кб. Так как мы в данном примере производим тестовую установку на виртуальный жесткий диск либо на флеш-накопитель, то этого можно не делать. В любом случае перед созданием разделов нужно точно знать размер сектора вашего накопителя, иначе это выльется жуткими тормозами в работе.

Далее необходимо создать разделы (партиции). В минимальной системе должно быть три основные раздела: загрузочный, подкачка, корневой. При необходимости можно выносить отдельные части файловой системы (например /usr или /var) на отдельные разделы, но в данном примере делать этого мы не будем. При создании разделов их размер указывается в блоках. Вы вполне можете указывать размер в килобайтах / мегабайтах / гигабайтах, для этого достаточно использовать следующую запись: 64k, 128M, 2G, однако такой подход не совсем правильный, т.к. система ведет пересчет в LBA и, в конечном итоге, может получиться не совсем ожидаемый результат (например: пустой блок размером 1 LBA в конце диска). Выполним создание разделов, используя различные способы:

gpart add -b 34 -s 128 -t freebsd-boot /dev/ada0
gpart add -s 2G -t freebsd-swap /dev/ada0
gpart add -t freebsd-ufs /dev/ada0

Первая команда создает раздел типа freebsd-boot, начиная с LBA 34 и размером 128 LBA (64 кб). Вторая команда создает раздел типа freebsd-swap, начиная с первого свободного LBA и размером 2 Гб (кол-во LBA рассчитываются автоматически). Третья команда создает раздел типа freebsd-ufs, начиная с первого свободного LBA и до последнего возможного LBA.

Теперь установим загрузчик в первый раздел и отформатируем третий, затем проверим тип файловой системы на нем:

gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 /dev/ada0
newfs -U /dev/ada0p3
file -s /dev/ada0p3

После форматирования раздела /dev/ada0p3, на нем должна находиться файловая система UFS (Unix File System) версии 2.

Далее подмонтируем только что созданный и отформатированный раздел диска к нашей работающей системе, чтобы иметь возможность работать с ним:

mount -t ufs -o rw /dev/ada0p3 /mnt

Дальнейшие действия зависят от источника файлов установки.

Первый вариант #

Установка производится с образа bootonly, либо есть необходимость производить установку именно по сети. В этом случае необходимо настроить сетевое подключение (допустим, что мы используем DHCP) и загрузить файлы во временную папку, которую мы создадим на нашем диске.

Определим имена сетевых интерфейсов и включим на необходимом DHCP-клиент:

ifconfig
dhclient em0

Создадим временный каталог на жестком диске для файлов дистрибутива и загрузим в него минимально необходимые файлы для установки, затем извлечем их содержимое в корневой раздел диска, который мы примонтировали в каталог /mnt, затем удалим временный каталог:

mkdir /mnt/data/

fetch ftp://ftp.ua.freebsd.org/pub/FreeBSD/releases/amd64/10.1-RELEASE/base.txz -o /mnt/data

fetch ftp://ftp.ua.freebsd.org/pub/FreeBSD/releases/amd64/10.1-RELEASE/kernel.txz -o /mnt/data

cat /mnt/data/base.txz | tar -xpJf - -C /mnt

cat /mnt/data/kernel.txz | tar -xpJf - -C /mnt

rm -rf /mnt/data/

Второй вариант #

Установка производится с полного образа и файлы будут использованы именно с установочного диска. Выполним извлечение файлов из двух основных файлов дистрибутива:

cat /usr/freebsd-dist/base.txz | tar -xpJf - -C /mnt
cat /usr/freebsd-dist/kernel.txz | tar -xpJf - -C /mnt

На данном этапе базовая установка системы завершена. Осталось внести некоторые изменения в конфигурационные файлы, а именно в файл /etc/fstab внести информацию о разделах, которые необходимо автоматически монтировать при загрузке системы, в файл /etc/rc.conf внести информацию о настройках сети (в нашем примере DHCP) и настроить часовой пояс.

Выполним редактирование файла /etc/fstab. Т. к. наша устанавливаемая система примонтирована в /mnt, то соответственно это будет файл /mnt/etc/fstab

ee /mnt/etc/fstab

Добавим строки для монтирования раздела swap и корневого раздела:

/dev/ada0p2    none         swap      sw       0        0
/dev/ada0p3    /            ufs       rw       1        1

Выполним редактирование файла /mnt/etc/rc.conf по тому же принципу. Добавим в файл следующие строки:

hostname="myhostname"
ifconfig_em0="DHCP"
sshd_enable="YES"

Для настройки часового пояса достаточно скопировать файл, соответствующий ближайшему к вам населенному пункту:

cp /mnt/usr/share/zoneinfo/Europe/Zaporozhye /mnt/etc/localtime

На этом базовая установка завершена.

Установленная система не содержит пользователей. А для root не установлен пароль. Используйте команды adduser и passwd для создания пользователей и задания пароля root.

Перезагружаемся и наслаждаемся.

shutdown -r now

Установка системы на USB-флешку #

Установка системы на флешку ничем не отличается от установки на жесткий диск, за исключением того, что раздел swap крайне желательно создать на жестком диске. Установку на флешку не обязательно производить с установочного компакт-диска. Достаточно подключить флешку к компьютеру, на котором уже установлена ОС FreeBSD и выполнить все по приведенной выше инструкции, но только не с накопителем /dev/ada0, а с накопителем /dev/ad0 (либо подобным).

Исключением является лишь то, что после установки системы и после ее первой загрузки, когда сформированы и записаны на носитель все сертификаты и ключи, необходимо выполнить некоторые настройки, а именно: в файле fstab указать, что флешка должна монтироваться в режиме только чтение, указать объем монтируемых в ОЗУ разделов /tmp и /var, создать символические ссылки для тех каталогов, файлы в которых должны сохраняться после перезагрузки.

Если никаких жестких дисков, кроме USB-флешки, нет, то файл /etc/fstab должен выглядеть следующим образом:

/dev/ad0p2     none        swap       sw        0         0
/dev/ad0p3     /           ufs        ro        1         1

Если в системе имеется жесткий диск, то целесообразно создать раздел swap на нем. В этом случае на флешке будет только два раздела: загрузочный и корневой. Тогда файл /etc/fstab будет выглядеть примерно так:

/dev/ada0p1    none        swap       sw        0         0
/dev/ad0p2     /           ufs        ro        1         1

В файл /etc/rc.conf добавляем строки:

varmfs=true
varsize=96M
tmpmfs=true
tmpsize=48M

Для того, чтобы каталоги, находящиеся в /var (который расположен в ОЗУ), сохранялись после перезагрузки, необходимо сделать для них символические ссылки на флешке. Для примера, чтобы корректно работал пакетный менеджер pkg, необходимо для начала создать на флешке каталоги для символических ссылок.

Выполните:

mkdir /usr/local/pkg
mkdir /usr/local/pkgcache

Затем в конец файла /etc/rc.d/var необходимо добавить строки:

rm -r /var/db/pkg
rm -r /var/cache/pkg
ln -s /usr/local/pkg /var/db/pkg
ln -s /usr/local/pkgcache /var/cache/pkg

Теперь, после загрузки системы, будут удалены каталоги /var/db/pkg и /var/cache/pkg, расположенные в ОЗУ, и на их место будут подмонтированы каталоги с флешки со всеми необходимыми файлами.

На этом настройка работы FreeBSD с флеш-памяти завершена. После перезагрузки корневой раздел будет подмонтирован в режиме только чтение, а каталоги /var и /tmp будут подмонтированы в ОЗУ. Такой подход позволяет избежать преждевременного износа флеш-памяти. В каталоги /var/db и /var/cache, расположенные во флеш-памяти, будут подмонтированы каталогиис файлами, расположенные на флеш-накопителе.

После этого, если будет необходимо внести какие либо изменения в файловую систему (изменить конфигурационные файлы, добавить пользователей, установить пакеты и т.д.) сначала нужно будет перемонтировать корневой раздел в режиме записи на лету. Делается это командой:

mount -uw /

После окончания работ с файловой системой, верните корневой каталог в режим только для чтения.

mount -ur /

На этом настройка операционной системы FreeBSD, установленной на флеш-накопитель, завершена.

comments powered by Disqus