Установка FreeBSD на USB-Flash
freebsd install flash usb Сгибнев Михаил
🕛 20.09.2006, 11:00
УстановкаПриведенные здесь инструкции позволили создать установочный образ FreeBSD, который можно dd-ть прямо на USB-носитель.
Если вы хотите произвести установку FreeBSD с USB-носителя, то можете ознакомиться с Dario Freni's script
Нам понадобится DISC1.
Монтируем ISO в /dist:
# mkdir -p /dist # mdconfig -a -f /a/FreeBSD/6.1-RC1-i386-disc1.iso md1 # mount -t cd9660 /dev/md1 /dist
Подключите USB-носитель. Поскольку обычно они отформатированы под FAT32, мы должны создать метку слайса BSD. Будьте осторожны, эта команда удалит все существующие на носителе слайсы. Если вы получите сообщение "Geom not found" - не волнуйтесь.
# fdisk -BI /dev/da0
Мы нуждаемя в метке диска:
# bsdlabel -B -w da0s1
и файловой системе, которую мы примонтируем к /mnt. Чтобы уменьшить число обращений к USB, будем использовать флаг -U, для работы soft updates. Дополнительно, чтобы мы могли найти файловую систему, вне зависимости от того, где USB появляется в дереве устройств, мы маркируем файловую систему как FreeBSDonUSB:
# newfs -U -L FreeBSDonUSB /dev/da0s1a /dev/da0s1a: 481.0MB (985040 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 120.25MB, 7696 blks, 15424 inodes. with soft updates super-block backups (for fsck -b #) at: 160, 246432, 492704, 738976
# mount /dev/da0s1a /mnt
Теперь, чтобы сделать пусть ослепительно легким:
# cd /dist/6.1-RC1/base # DESTDIR=/mnt ./install.sh You are about to extract the base distribution into /mnt - are you SURE you want to do this over your installed system (y/n)? y
Начиная с версии 6.1, на компакт диске присутствуют и однопроцессорные ядра и ядра SMP. sysinstall установит правильное, в зависимости от конфигурации ваших аппаратных средств. Если Вы хотите использовать ядро SMP, просто укажите smp вместо generic:
# cd /dist/6.1-RC1/kernels # DESTDIR=/mnt ./install.sh generic # rmdir /mnt/boot/kernel # mv /mnt/boot/GENERIC /mnt/boot/kernel
Устанавливаем менеджер загрузки. Мы используем опцию noupdate, чтобы предотвратить перезапись boot0 после каждой загрузки.
# boot0cfg -v -B -o noupdate da0 # flag start chs type end chs offset size 1 0x80 0: 1: 1 0xa5 480: 63:32 32 985056 version=1.0 drive=0x80 mask=0xf ticks=182 options=packet,noupdate,nosetdrv default_selection=F1 (Slice 1)
Создаем файл fstab на USB-носителе. Журнальные файлы мы будем хранить в памяти, чтобы минимизировать запись на носитель.
# Device Mountpoint FStype Options Dump Pass# /dev/ufs/FreeBSDonUSB / ufs rw,noatime 1 1 md /tmp mfs rw,-s16M,nosuid,noatime 0 0 md /var/run mfs rw,-s4M,nosuid,noatime 0 0 md /var/log mfs rw,-s16M,nosuid,noatime 0 0 /dev/acd0 /cdrom cd9660 ro,noauto,nosuid 0 0 /proc /proc procfs rw,noauto 0 0 /tmp /var/tmp nullfs rw 0 0
Так как мы используем метку UFS, чтобы определить корневую файловую систему, мы должны форсировать загрузку класса GEOM:
# cat >> /mnt/boot/loader.conf << EOF geom_label_load="YES" EOF
vi использует /var/tmp/vi.recover, поэтому загрузим и установим следующий скрипт:
# mkdir -p /mnt/usr/local/etc/rc.d/ # cd /mnt/usr/local/etc/rc.d/ # fetch http://people.freebsd.org/~ceri/FreeBSDonUSB/scripts/mkvirecover # chmod 555 mkvirecover
Чтобы команды, которые используют wtmp, могли правильно работать с /var/log на RAM диске, мы должны сказать newsyslog OK, чтобы создать пустой/var/log/wtmp. Редактируйте файл конфигурации /mnt/etc/newsyslog.conf и добавьте C к строке /var/log/wtmp:
/var/log/wtmp 644 3 * @01T05 BC
Сетевые интерфейсы будут конфигурироваться через DHCP, за исключением plip0 и fwe0, так как они фактически никогда не связываются с сервером DHCP.
# cat >> /etc/rc.conf << EOF ifconfig_DEFAULT="DHCP" ifconfig_fwe0="NOAUTO" ifconfig_plip0="NOAUTO" EOF
Снова, для уменьшения числа операций записи на USB, мы создадим локальную базу данных и запретим еженедельное обновление:
# chroot /mnt /bin/sh # mount_devfs devfs /dev # /etc/periodic/weekly/310.locate Rebuilding locate database: # cat >> /etc/periodic.conf << EOF weekly_locate_enable="NO" weekly_whatis_enable="NO" EOF Установим необходимые пакеты и зададим пароль пользователя root: # chroot /mnt /bin/sh # passwd root # pkg_add -r lsof rsync unzip zsh kde...