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

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

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

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

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

01 - orbНажимаем [Enter].

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

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

03 - shell

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

geom disk list

04 - geom disk list

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

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

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

gpart show ada0

05 - gpart show

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

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

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

06 - gpart create

Теперь наш диск имеет разметку 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

07 - gpart add

Первая команда создает раздел типа 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

08 - newfs

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

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

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

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

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

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

ifconfig
dhclient em0

09 - ifconfig

Создадим временный каталог на жестком диске для файлов дистрибутива и загрузим в него минимально необходимые файлы для установки, затем извлечем их содержимое в корневой раздел диска, который мы примонтировали в каталог /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, установленной на флеш-накопитель, завершена.



Если эта статья помогла Вам, пожалуйста, окажите финансовую поддержку моему блогу.

Добавить комментарий