меня неоднократно в разговоре побуждал к написанию чего-либо полезного, решил
написать вот такое. Просьба сильно не бить, если данный процесс где-то
уже описывался. Этот текстик можно, наверное, приобщить к wiki, если
сочтете полезным.
1. Стартовые условия.
Читаемая завром SD карточка
Компьютер с кардридером - очень вероятно, что придется часто
перекидывать конфиг файлы в синглмоуде на Завре с компа.
"Родная" прошивка (например, с trisoft.de) - с 2.6 линуксами работать точно
не будет, с 2.4 неродными - еще предстоит проверить
Описание по "родной" разметки диска (с того же trisoft.de)
Сама OpenBSD
Качаем с ftp://ftp.openbsd.org/pub/OpenBSD/4.0/zaurus/ файлы:
INSTALL.zaurus - родная инструкция по установке, стоит почитать
zbsdmod.o, bsd.rd - файлы для загрузки через Линукс
openbsd40_arm.ipk - пекедж, содержащий указанные выше загрузчики, бут лоадер
base40, etc40 - обязательные пакеты с самой ос
x* и прочие пакеты, если нужны, по вкусу
2. Чего хотим добиться
Мультибут OpenBSD 4.0 + Linux
Linux будет использоваться для передачи файлов с Завра/на Завр, т.к.
в OpenBSD 4.0 sd ридер не работает совсем, а CF-устройства не работают
почти (по крайней мере, 100% из имеющихся у меня CF устройств, а именно
единственной карточки Planex GW-CF11X, не поддерживается

3. Установка BSD на диск
Зашиваем родной Linux (NAND restore) - с неродными возможны проблемы, инсталяция
писалась товарищами из OpenBSD с прицелом именно на родной.
Загружаемся в сингл юзер (d+b)
Запускаем fdisk
Партиционируем диск, как сказано в инструкции по родному лейауту диска
Для C3200 - два партишена под родные "системные" /hdd1 и /hdd2 в 20 блоков длинной
Третий партишн (должен быть MSDOS) делаем не очень большим, в дальнейшем
через него будут передаваться файлы, например +256M
Создаем файловые системы на этих разделах:
mk2efs /dev/hda1
mk2efs /dev/hda2
mk2efs /dev/hda3
Создаем их без журналирования (то есть в ext2), чтобы избежать дальнейших
проблем с fsck. Третий тоже делаем в ext2, а не msdos.
Не dos-овским его делаем для доступности из синглмоуда и из бсд (которая,
хотя и должна оттуда читать при инсталляции, но по слухам этого не делает).
После установки можно будет при желании обратно загнать его в fat.
Создаем четвертый праймари партишн, с id a6 (OpenBSD) на оставшееся пространство.
На hda1 и hda2 переносим файлы из "родной" инсталяции (директории .sys, чтоб
в дальнейшем не было проблем с Линуксом).
Монтируем завровый рут:
mount /dev/mtdblock2 /mnt/cf
Тут нам надо исправить скрипт /home/etc/rc.d/rc.rofilesys, чтобы, во-первых
монтировал hdd1 и hdd2 в ext2, а не ext3, и во-вторых hdd3 монтировал тоже
как ext2, а не msdos.
Как сказано в инструкции от OpenBSD, in these cases below we avoid using
vi because Linux quality is of such high caliber that vi locks up the console.
Консоль он действительно лочит, поэтому просто переписываем этот файл на SD
карточку, правим скрипт на компе и переписываем обратно. Можно, конечно,
пойти путем OpenBSDшников и отредактировать его sed-ом.
В файле монтирование hdd1 и hdd2 в ext2 задается переменной LINUXFMT; чтобы убрать
msdos монтирование, нужно найти все вызовы маунта с параметром vfat и убрать
оный с опциями.
Если в будущем будут ошибки типа "hdd1 error!!", то дело в этом скрипте.
Все файлы от инсталяции OpenBSD копируем на /dev/hda3
После этого обязательно вынимаем SD карточку из слота и выполняем:
insmod zbsdmod.o
cp bsd.rd /proc/zboot
Серыми буквами на голубом фоне (вспоминаем FreeBSD 4) пойдет текст
о проубинге устройств.
Когда предложат Install, upgrade или shell, выбираем I
После нескольких очевидных вопросов инсталлятора (хотим ли ставиться,
куда савиться и тп) и ответа "n" на вопрос о том, что мы не хотим
использовать весь диск под OpenBSD местный fdisk предложит
перепартиционировать диск. Мы тут уже все сделали, единственное,
стоит включить флаг активности на нашем партишене:
e 4
flag 1
w
Следующим шагом будет лейблинг диска. Для простоты имеет смысл для
начала создать один здоровый рут, а своп уже подключать из файла, если
понадобится (и если будет работать).
В бсд рутовый раздел это всегда "a" поэтому выбираем:
(изменить раздел) m
(какой раздел) a
(тип фс) 4.2BSD
(маунтпоинт) /
(записаться) w
Теперь хороший момент запомнить, как из BSD будут называться ваши Линукс
разделы (p). Обычно это будут i,j,k или где-то в этом районе.
Раздел c - в бсд системах раздел, описывающий диск целиком.
Выходим q
Таймзона для Москвы называется Europe/Moscow, другие можно поискать в списке.
Настройку сети можно пока проигнорировать (у меня не было сетевых
устройств).
Далее выбираем пакеты, которые хотим поставить и пишем done.
Начнется копирование файлов, после которого предложат ввести halt.
В этом месте экран в нижней части немного подглючивает, нужно просто
ввести "halt", нажать enter и через какое-то время нажать enter
еще раз.
После ребута вы должны попасть либо в Линукс, либо в OpenBSD через ее
бутлоадер (который у меня не установился или я проглядел где эта
установка происходит).
Первый случай фиксится установкой пекеджа openbsd40_arm.ipk и
последующим ребутом.
Бутлоадер работает не совсем очевидным образом:
По таймауту он должен загрузить BSD (активный партишн). Такой же
результат будет если написать ему boot
Чтобы попасть в линукс ему следует написать reboot, в этом
случае загрузка продолжится.
4. Настройка железа
Никакое железо BSD не поддерживает, поэтому проблемы нет, поскольку
настраивать нечего. По крайней мере, из имеющегося у меня

SD ридер не работает, на проубе приводит к panic если в него
вставлена карточка.
Компактфлеш WiFi Planex GW-CF11X не работает, как и другие подобные ему
устройства, если верить мейлинг листам, потому, что не поддерживается
динамическая загрузка по для wi девайсов.
Чтобы подключить наш hda3 (через который теперь и будет осуществляться
общение с внешним миром), вспоминаем, какой буквой назывались наши линукс
партишены при лейблинге и приставляем нужную к названию нашего диска,
например mount /dev/wd0k /mnt
5. Дополнительный софт
Кроме билданья софта собственноручно и с портсов (не проверял), доступны
бинарные пекеджи тут ftp://ftp.openbsd.org/pub/OpenBSD/4.0/packages/arm
Добавлять при помощи pkg_add, например:
pkg_add icewm-1.2.26.tgz