Установка FreeBSD на USB-носитель

В статье подробные инструкции по установке ОС FreeBSD на USB Flash. Полученную таким образом "спасительную дискету" можно всегда носить с собой в кармане рубашки - она занимает еще меньше места, чем традиционный LiveCD. Поскольку установку такой системы производит сам пользователь, LiveUSB может быть легко оптимизирован под его нужды.

[Перевод: Сгибнев Михаил (www.dreamcatcher.ru)]

Установка FreeBSD на USB-носитель

Original
Перевод: Сгибнев Михаил

Установка

Приведенные здесь инструкции позволили создать установочный образ 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(5) на 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(1) использует /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(5), могли правильно работать с /var/log на RAM диске, мы должны сказать newsyslog(8) 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...
    

Статья взята с сайта DreamCtacher.ru.

[ опубликовано 04/05/2006 ]

Перевод: Сгибнев Михаил (www.dreamcatcher.ru) - Установка FreeBSD на USB-носитель   Версия для печати