Эта статья описывает процесс создания Live CD на OpenBSD/i386 3.7-current...
Автор:
Разместил: slayer   Дата: 2006-07-03 13:47
Комментарии: (0)   Рейтинг:
Я недавно преподавал курсы по операционной системе OpenBSD для преподавателей в университетах, которые были заинтересованы основами, конфигурированием и настройками OpenBSD, в основном, в сетевой среде. Для этих курсов я решил использовать Live CD, так что "студентам" не требовалось ничего устанавливать. Им даже не требовались жесткие диски, чтобы загружать коробочный OpenBSD на их PC! Мой Live CD уделяет основное внимание безопасности, сетевым конфигурациям, браузере Firefox, и так далее.

Эта статья описывает процесс создания Live CD на OpenBSD/i386 3.7-current. Проблем с 3.7-release также не должно быть.

Начало

Прежде чем начать, вам понадобится следующее:
- Компьютер архитектуры i386 с установленной OpenBSD.
- CD резак.
- Болванка, желательно типа RW.
- Терпение.

"Постройка" системы.

Первое, что вам потребуется сделать, - скачать текущие исходники системы. Если вы не знаете, как это делается, прочитайте FAQ по OpenBSD, пункт 5.3.3.

Затем, создайте директорию /livecd, она понадобится для хранения содержания компакт-диска. Создайте три резервные директории в /livecd:
$ mkdir -p /livecd/backups/{var,etc,dev}

Теперь, заархивируйте tar'ом все, что вы хотите видеть на вашем Live CD, и разархивируйте это все в /livecd (или просто скопируйте все нужные директории, как вам удобней). Скопируйте ваши /var и /etc директории в /livecd/backups/{var,etc}:
# cp -pR /var /livecd/backups/var
# cp -pR /etc /livecd/backups/etc
# cp -pR /dev/MAKEDEV /livecd/backups/dev

Все это придаст Live CD его основную структуру файлов и директорий. Следующий шаг - сконфигурировать загрузочное ядро. В /usr/src/sys/arch/i386/conf переименуйте RAMDISK_CD в RAMDISK_CD.OLD и скопируйте конфигурацию ядра GENERIC в RAMDISK_CD. Отредактируйте этот файл. Раскомментарьте строки, содержащие config bsd swap generic и добавьте следующие:
option RAMDISK_HOOKS
option MINIROOTSIZE=3800
config  bsd root on cd0a

Также, вы можете скачать пример конфигурации RAMDISK_CD с http://www.onlamp.com/bsd/2005/07/14/examples/RAMDISK_CD. Это настроит ramdisk и позволит root'у находиться в CD.

Вы получите сообщение об ошибке при добавлении DDB поддержки. Чтобы устранить эту проблему, используйте этот Makefile.in diff в /usr/src/distrib/i386/common/Makefile.inc:
--- src/distrib/i386/common/Makefile.inc.orig	Thu Mar  3 09:16:02 2005
+++ src/distrib/i386/common/Makefile.inc	Thu Mar  3 09:16:32 2005
@@ -33,8 +33,7 @@
newfs -m 0 -o space -i 524288 -c 80 ${VND_RDEV}
mount ${VND_DEV} ${MOUNT_POINT}
cp ${BOOT} ${.OBJDIR}/boot
- strip ${.OBJDIR}/boot
- strip -R .comment ${.OBJDIR}/boot
+ strip -s -R .comment -K cngetc ${.OBJDIR}/boot
dd if=${.OBJDIR}/boot of=${MOUNT_POINT}/boot bs=512
dd if=bsd.gz of=${MOUNT_POINT}/bsd bs=512
/usr/mdec/installboot -v ${MOUNT_POINT}/boot 
@@ -54,8 +53,7 @@

bsd.gz: bsd.rd
cp bsd.rd bsd.strip
- strip bsd.strip
- strip -R .comment bsd.strip
+ strip -s -R .comment -K cngetc bsd.strip
gzip -c9 bsd.strip > bsd.gz

bsd.rd:	${IMAGE} bsd rdsetroot

Использовать его можно так:
# cd /usr
# patch -p0 < patch-Makefile.in

Далее, установите пакет crunch, который позволяет создавать crunched binaries, для загрузки, установки и для создания fixit-дисков.
# cd /usr/src/distrib/crunch && make && make install

Наконец, создайте CD, введя команду make в директории
/usr/src/distrib/i386/ramdisk_cd:
# cd /usr/src/distrib/i386/ramdisk_cd && make

Из /usr/src/distrib/i386/ramdisk_cd скопируйте два файла, bsd и cdrom36.fs в /livecd директорию.
Отредактируйте /livecd/etc/{fstab,rc} и /livecd/backups/etc/{fstab,rc} так, чтобы загрузка сработала правильно.

Затем, отредактируйте ваш CD /livecd/etc/rc и/livecd/etc/fstab так, чтобы смонтировать соответствующие файловые системы, включая CD. Также отредактируйте бекапы /livecd/backups/etc/rc и/livecd/backups/etc/fstab, чтобы включить CD и memory filesystems.

Директорий, нуждающихся в возможности быть writable, три - /var, /tmp и /etc. CD монтирует их как memory filesystems (используя mfs).

Создание ISO-образа.

В директории /livecd введите следующие команды в одной строке:
# mkisofs -b cdrom36.fs -c boot.catalog -R -v -o /tmp/livecd.iso /livecd

Это займет некоторое время, но после вы будете иметь готовый записанный ISO-образ, который будет ждать вас в /tmp/livecd.iso. :D

Запись на компакт-диск

Для записи iso-образа на компакт-диск используйте команду cdrecord:
# cdrecord -v speed=24 dev=/dev/rcd0c -data /tmp/livecd.iso

Я использовал OpenBSD Live CD for NAT/firewall довольно долгое время в университете. Установка довольна-таки проста. Мои сетевые интерфейсы - fxp0 и fxp1. Для активизации PF и для того, чтобы он автоматически загружался при старте системы, отредактируйте /etc/rc.conf.local, добавив туда строку pf=YES.

Для разрешения IP forwarding убедитесь, что net.inet.ip.forwarding=1 присутствует в /etc/sysctl.conf.

Наконец, настройте NAT/firewall в /etc/pf.conf:
int_if = "fxp0"
ext_if = "fxp1"
tcp_services = "{ 22, 113 }"
icmp_types = "echoreq"
priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

# options
set block-policy return
set loginterface $ext_if

# scrub
scrub in all

# nat/rdr
nat on $ext_if from $int_if:network to any -> ($ext_if)
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 
port 8021

# filter rules
block all

pass quick on lo0 all

# provide unrestricted Internet access to internal computers
block drop in  quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets

# allow the following incoming traffic to the firewall
pass in on $ext_if inet proto tcp from any to ($ext_if) 
port $tcp_services flags S/SA keep state

pass in inet proto icmp all icmp-type $icmp_types keep state

pass in  on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state

pass out on $ext_if proto tcp all modulate state flags S/SA

pass out on $ext_if proto { udp, icmp } all keep state

Это контролирует все движение от внутренней сети до внешней сети и переадресовывают все внутреннее движение к порту 21 (FTP) и к порту 8021 на шлюзе. Это также защищает от нежелательного входящего проникновения. Это хорошее начало в безопасности, которое, впрочем, вы можете изменить, как вам хочется.

Самое лучшее, конечно, то, что это все на CD, так что я могу носить свою систему с собой, где бы я ни находился.

Ресурсы

* How to Make a Bootable, Full System OpenBSD 3.2 CDROM
http://www.blackant.net/other/docs/howto-bootable-cdrom-openbsd.php
* OpenBSD CD Bootable Firewall System
http://www.jtan.com/jtanoss/cdboot/
* PF User's Guide
http://www.openbsd.org/faq/pf/index.html

Kevin Lo - разработчик OpenBSD, преподаватель в Kaiping Vocational School.

Автор Kevin Lo

Источник http://www.onlamp.com/pub/a/bsd/2005/07/14/openbsd_live.html

Перевод mereale