Установка FreeBSD с диска LiveFS
Предыстория. У меня есть сервер с 4 гигабайтами памяти. В дальнейшем предполагается нарастить ее до 8 гигабайт. По этому будем ставить amd64. Так же как не смешно, у меня нету установочного диска с этой версией FreeBSD. Но есть LiveFS диск «7.2-RELEASE-amd64-livefs.iso». Так же в сети есть свой cvsup сервер на котором так сказать есть все исходники. По этому в планах:
1. загрузиться с диска
2. разметить винчестер и смонтировать его
3. создать в памяти раздел
4. скачать src мира и собрать его в памяти
5. установить собранный мир на винчестер
Это предварительный план чего хочется сделать. Так же зачем это все делается? Конечно можно просто с ftp скачать установочный диск и забыть о таких проблемах. Можно создать загрузочную флешку и установить все с нее. Можно по сети подмапить src и собрать на ней же. Но хочется получить experience и заработать levalup так сказать
По этому загружаемся с livefs диска. В меню sysinstal выбираем Fixit -> cdrom/dvd и попадаем в shell. Тут конечно самое интересное в том, что тут доступно только ограниченное кол-во команд. Первым делом надо завести сеть. Для этого достаточно через ifconfig задать ip. По этому:
Дальше для получения доступа ко всем командам необходимо зачерутится в /dist для этого скомандуем:
Дальше для сборки мира нам понадобится ряд устройств из /dev. Для этого смонтируем devfs куда следует:
Теперь создадим диск в оперативной памяти:
Тут у нас:
-a создать диск
-t swap говорим, что диск создаем из памяти
-s 3Gb собственно размер в 3 гигабайта
-u 10 указываем специфический номер для устройства в /dev
Дальше создадим файловую систему на устройстве и смонтируем его:
mount /dev/md10 /mnt
Теперь мы имеем диск в 3 гигабайта где мы будем проводить все оставшуюся работу. Для начала скачаем исходные тесты системы. Для этого создадим следующий supfile:
*default host=10.1.1.200
*default prefix=/mnt
*default base=/mnt
*default release=cvs tag=.
*default delete use-rel-suffix compress
src-all tag=RELENG_7_2
#
Ну и конечно же запускаем скачивание src:
Parsing supfile "/mnt/csup.conf"
Connecting to 10.1.1.200
Connected to 10.1.1.200
Server software version: SNAP_16_1h
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection src-all/cvs
Checkout src/COPYRIGHT
Checkout src/LOCKS
Checkout src/MAINTAINERS
#--- skip ---#
Checkout src/usr.sbin/zzz/zzz.8
Checkout src/usr.sbin/zzz/zzz.sh
Shutting down connection to server
Finished successfully
#
Конечно же 10.1.1.200 нужно заменить на адрес вашего cvsup сервера или ближайшего к вам.
Исходные тексты системы мы получили. Теперь проведем все необходимые работы с винчестером.
Для начала создадим слайс. Так как у меня будет только FreeBSD стоять, то делаем слайс на весь доступный объем. Так же запишим загрузочный сектор:
Где у нас
-B ре инициализируем загрузочный сектор
-b /boot/boot0 указываем что у нас будет загрузчиком. По умолчанию идет /boot/mbr
Теперь разметим диск с помощью bsdlabel:
Тут у нас следующие ключи:
-w записываем
-B создаем бут сектор
А теперь начинается самое интересно! надо отредактировать разделы под себя. Для этого сохраним разметку в файл и откроем ее в любимом редакторе и приведем к желаемому виду.
Формула для расчета секторов такая 1Gb*1024*1024*2=097152. После всех расчетов у нас получается вот такая таблица разметки:
# /dev/da0s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 2097152 0 4.2BSD 0 0 0
b: 4194304 2097152 swap
c: 16771797 0 unused 0 0 # "raw" part, don't edit
d: 2097152 6291456 4.2BSD 0 0 0
e: 4194304 8388608 4.2BSD 0 0 0
f: 4188885 12582912 4.2BSD 0 0 0
#
После это надо записать новую разметку:
Теперь создадим файловые системы и смонтируем их:
# newfs -U da0s1a
/dev/da0s1a: 1024.0MB (2097152 sectors) block size 16384, fragment size 2048
using 6 cylinder groups of 183.72MB, 11758 blks, 23552 inodes.
super-block backups (for fsck -b #) at:
160, 376416, 752672, 1128928, 1505184, 1881440
# mount /dev/da0s1a /mnt/root
# mkdir /mnt/root/tmp /mnt/root/var /mnt/root/usr
# newfs -U da0s1d
/dev/da0s1d: 1024.0MB (2097152 sectors) block size 16384, fragment size 2048
using 6 cylinder groups of 183.72MB, 11758 blks, 23552 inodes.
super-block backups (for fsck -b #) at:
160, 376416, 752672, 1128928, 1505184, 1881440
# newfs -U da0s1e
/dev/da0s1e: 2048.0MB (4194304 sectors) block size 16384, fragment size 2048
using 12 cylinder groups of 183.72MB, 11758 blks, 23552 inodes.
super-block backups (for fsck -b #) at:
160, 376416, 752672, 1128928, 1505184, 1881440, 2257696, 2633952, 3010208,
3386464, 3762720, 4138976
# newfs -U da0s1f
/dev/da0s1f: 2045.4MB (4188884 sectors) block size 16384, fragment size 2048
using 12 cylinder groups of 183.72MB, 11758 blks, 23552 inodes.
super-block backups (for fsck -b #) at:
160, 376416, 752672, 1128928, 1505184, 1881440, 2257696, 2633952, 3010208,
3386464, 3762720, 4138976
# mount /dev/da0s1e /mnt/root/var
# mount /dev/da0s1d /mnt/root/tmp
# mount /dev/da0s1f /mnt/root/usr
Ну и посмотрим что у нас получилось в итоге:
/dev/md0 on / (ufs, local)
devfs on /dev (devfs, local)
/dev/acd0 on /dist (cd9660, local, read-only)
devfs on /dev (devfs, local)
/dev/md10 on /mnt (ufs, local)
/dev/da0s1a on /mnt/root (ufs, local, soft-updates)
/dev/da0s1f on /mnt/root/usr (ufs, local, soft-updates)
/dev/da0s1e on /mnt/root/var (ufs, local, soft-updates)
/dev/da0s1d on /mnt/root/tmp (ufs, local, soft-updates)
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/md0 3.7M 2.8M 956K 75% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/acd0 289M 289M 0B 100% /dist
devfs 1.0K 1.0K 0B 100% /dev
/dev/md10 2.9G 505M 2.2G 18% /mnt
/dev/da0s1a 989M 10K 910M 0% /mnt/root
/dev/da0s1f 1.9G 4.0K 1.8G 0% /mnt/root/usr
/dev/da0s1e 1.9G 4.0K 1.8G 0% /mnt/root/var
/dev/da0s1d 989M 4.0K 910M 0% /mnt/root/tmp
#
Вроде все как надо. Теперь приступим к сборке мира. Зайдем в каталог с src и зададим пару переменных необходимых для сборки мира. Так же необходимо /tmp сделать доступным для записи. Выполним следующее:
mount -t nullfs /mnt/tmp /tmp
setenv MAKEOBJDIRPREFIX /mnt/obj
make world DESTDIR=/mnt/root
make distribution DESTDIR=/mnt/root
make kernel DESTDIR=/mnt/root
Мир и ядро у нас скомпилируются и установятся в /mnt/root. Вот осталось и совсем чуть-чуть. Создадим fstab следующего содержания:
# Device Mountpoint FStype Options Dump Pass#
/dev/da0s1b none swap sw 0 0
/dev/da0s1a / ufs rw 1 1
/dev/da0s1d /tmp ufs rw 2 2
/dev/da0s1f /usr ufs rw 2 2
/dev/da0s1e /var ufs rw 2 2
#
Не забываем в конце последней строки добавить пустую строку. И для удобства создадим rc.conf с минимум настроек:
hostname="testserver.isea.ru"
ifconfig_em0="inet 10.1.2.200 netmask 255.255.128.0"
sshd_enable="YES"
#
Ну и конечно же сменим пароль на root и заведем себе пользователя для работы:
# passwd root
Changing local password for root
New Password:
Retype New Password:
# pw groupadd users
# pw useradd abigor -g users
# pw usermod -n abigor -G wheel
# passwd abigor
Changing local password for abigor
New Password:
Retype New Password:
#
Ну, вроде все. Перезагружаем сервер. Входим локально или удаленно и дальше настраиваем по своему желанию.
———————–
P.S. Если честно, я не знаю кому это может понадобится
Я делал это все только ради интереса и получения опыта.

.gif)
