BSDPORTAL.RU
http://bsdportal.ru/

[ KB ] UNIX на одной дискете (по следам PicoBSD)
http://bsdportal.ru/viewtopic.php?f=21&t=1540
Страница 1 из 1

Автор:  lcf [ Пт 26 мар, 2004 10:59 am ]
Заголовок сообщения:  [ KB ] UNIX на одной дискете (по следам PicoBSD)

Категория: 3 Установка FreeBSD
Тип статьи: Документация

Название статьи: UNIX на одной дискете (по следам PicoBSD)
Автор: lcf
Пояснение: Проблема подготовки загрузочной дискеты во FreeBSD обычно решается при помощи дистрибутива PicoBSD, который поставляется вместе с пакетом исходных кодов. Однако, бывают случаи когда такую дискету требуется подготовить своими руками.

>>Читать текст статьи

Автор:  Hekson [ Ср 12 май, 2004 12:46 pm ]
Заголовок сообщения: 

Установил FreeBSD 5.0
Прочитал в документации "UNIX на одной дискете" выбросил из него все лишнее и оставил, только самое необходимое.
Компилируем ядро
# config small
Config : small :20: devices with zero units are not likely to be correct
Даже если удалить 20 строку он всё ранвно пишет
# config small
Config : small :20: devices with zero units are not likely to be correct
Может я что сделал не так ....

Автор:  ukhin [ Чт 09 сен, 2004 7:57 pm ]
Заголовок сообщения:  Бездисковый ISP Dial-in server.

Бездисковый ISP Dial-in server на 8Mb RAM или как это делал я.

(В продолжение статьи Михаила Захарова "UNIX на одной дискете (по следам PicoBSD)".)
Настройка Dial-in делалась по монументальному труду Алексея Абрамова:
http://www.freelance.pp.ru/articles/pppd/contents.shtml
http://www.opennet.ru/docs/RUS/pppd_dialin/

Для чего это было надо.

Один мой друг провайдт интернет в одном бизнес-центре, соответственно имеет толстый оптико-канал, а дома вынужден был покупать повременной dial-up. Соответственно, сразу назрело решение поднять собственный dial-in для личного пользования. Под это дело нашелся старенький (почти музейный экспонат) Olivetti PCS 46/C, а так как времени на подобные эксперименты у него хронически нет, сделать это было предложено мне. Соответственно делаем.

Итак железо - упомянутый Olivetti PCS 46/C оказался такой: i486 DX2-50, 8Mb RAM на единственном SIMM, флоп 1.44, VGA на борту и два ISA слота, плюс к этому ISA сетевуха HardLink и ISA модем USR Sportster 33.6 - оба с джамперными настройками.

Для работы потребуется установленный FreeBSD ( установка Developer как минимум) или на отдельную машину, или я например все делал в Винде на VMware Workstation.

Так как в процессе создания и доводки проекта придется проделать всю процедуру не один десяток раз, были написаны сценарии, многократно ускоряющие весь процесс.

Прилагаемые сценарии, исходники и конфиги проверены и абсолютно работоспособны на релизах FreeBSD 4.8 и FreeBSD 4.10.

Ядро.

Скачав файл project.tar в папку /tmp и распаковав его имеем корневую директорию нашего проекта /tmp/project. Файл OLIVETTI это конфиг ядра, в котором имеющийся у нас модем установлен как com 3

device sio2 at isa? port IO_COM3 irq 5

а сетевая карта ed0

device ed0 at isa? port 0x280 irq 10 iomem 0xd8000

Адреса IRQ и I/O устанавливались перемычками на платах. Все наличествующие опции и псевдо-устройства необходимы для нашего проекта.
Сценарий scr0_kern
---
#!/bin/sh
cp /tmp/project/OLIVETTI /sys/i386/conf
cd /usr/src
make buildkernel KERNCONF=OLIVETTI NO_MODULES="yes"
cp /usr/obj/usr/src/sys/OLIVETTI/kernel /tmp/project
cd /tmp/project
strip kernel
strip --remove-section=.note --remove-section=.comment kernel
gzip -v -n --best kernel
exit 0
---
компилит ядро, очищает от коментов и пакует. Получается файл kernel.gz размером примерно 530kb.

Программы.

Набор программ (как было описано у М.Захарова) собираем с помощью утилиты crunchgen. В прилагаемом файле crunch.conf имеются все необходимые программы. Единственное замечание - в проект обязательно необходимо было включить планировщик cron, а crunchgen почему-то не устраивают исходники cron-a, имеющиеся во FreeBSD (хотя в доках к crunchgen указанна возможность компиляции cron ). Путем плясок с бубнами была создана папка с исходниками cron, которая устроила crunchgen. Исходники прилагаются в архиве cron.tar а сценарий scr_cron помещает их в необходимое место.
Далее набираем

#crunchgen crunch.conf

и если ошибок нет ( а их не должно быть!)

#make -f crunch.mk

получаем файл crunch, содержащий все указанные в crunch.conf программы.

MFS ROOT.

Сценарий scr1_mfs делает все необходимое. Далее листинг с пояснениями:
----
#!/bin/sh

umount /mnt # на всякий случай размонтируем все что смонтировано в /mnt
vnconfig -u vn0 # и освободим vn0

dd if=/dev/zero of=mfsroot count=2392 bs=1k # У кого оперативки >= 12Mb, размер
vnconfig -s labels -c /dev/vn0 mfsroot # mfsroot можно свободно сделать
disklabel -rw vn0 auto # 4096, у меня же при 8Mb приходи-
newfs -i 2392 -m 0 -p 0 -o space /dev/vn0c # лось подбирать экспериментально.
mount /dev/vn0c /mnt # mfsroot монтируем в /mnt

# создаем дерево каталогов

mkdir /mnt/etc
mkdir /mnt/etc/ppp
mkdir /mnt/sbin
mkdir /mnt/dev
mkdir /mnt/usr
mkdir /mnt/usr/share
mkdir /mnt/usr/share/misc
mkdir /mnt/var
mkdir /mnt/var/run
mkdir /mnt/var/log
mkdir /mnt/var/db
mkdir /mnt/var/spool
mkdir /mnt/var/spool/lock
mkdir /mnt/var/cron
mkdir /mnt/var/cron/tabs
mkdir /mnt/tmp
chmod 01777 /mnt/tmp
mkdir /mnt/flp
mkdir /mnt/home

# необходимые ссылки

cd /mnt
ln -s sbin ./bin
ln -s sbin ./stand
ln -s ../sbin ./usr/bin
ln -s ../sbin ./usr/sbin
ln -s usr/share/misc/termcap etc/termcap

# создаем файлы устройств

cd /mnt/dev
mknod console c 0 0; chmod 600 console
mknod kmem c 2 1 root:kmem; chmod 640 kmem
mknod mem c 2 0 root:kmem; chmod 640 mem
mknod null c 2 2; chmod 666 null
mknod random c 2 3; chmod 644 random
mknod urandom c 2 4; chmod 644 urandom
mknod zero c 2 12; chmod 666 zero
mknod io c 2 14; chmod 600 io
mknod tty c 1 0; chmod 666 tty
mknod klog c 7 0; chmod 600 klog
mknod stdin c 22 0; chmod 666 stdin
mknod stdout c 22 1; chmod 666 stdout
mknod stderr c 22 2; chmod 666 stderr
mknod pci c 78 0; chmod 644 pci
mknod fd0 c 9 0; chmod 600 fd0
mknod ttyv0 c 12 0; chmod 644 ttyv0
mknod ttyv1 c 12 1; chmod 644 ttyv1
mknod ttyv2 c 12 2; chmod 644 ttyv2
mknod ttyv3 c 12 3; chmod 644 ttyv3
mknod ttyp0 c 5 0; chmod 666 ttyp0
mknod ttyp1 c 5 1; chmod 666 ttyp1
mknod ttyp2 c 5 2; chmod 666 ttyp2
mknod ttyp3 c 5 3; chmod 666 ttyp3
mknod ttyp4 c 5 4; chmod 666 ttyp4
mknod ttyp5 c 5 5; chmod 666 ttyp5
mknod ttyp6 c 5 6; chmod 666 ttyp6
mknod ttyp7 c 5 7; chmod 666 ttyp7
mknod ttyp8 c 5 8; chmod 666 ttyp8
mknod ttyp9 c 5 9; chmod 666 ttyp9
# файлы модемов (COM1 - COM3)
mknod ttyd0 c 28 0; chmod 600 ttyd0
mknod ttyd1 c 28 1; chmod 600 ttyd1
mknod ttyd2 c 28 2; chmod 600 ttyd2
mknod ttyid0 c 28 32; chmod 600 ttyid0
mknod ttyid1 c 28 33; chmod 600 ttyid1
mknod ttyid2 c 28 34; chmod 600 ttyid2
mknod ttyld0 c 28 64; chmod 600 ttyld0
mknod ttyld1 c 28 65; chmod 600 ttyld1
mknod ttyld2 c 28 66; chmod 600 ttyld2
mknod cuaa0 c 28 128; chmod 660 cuaa0
mknod cuaa1 c 28 129; chmod 660 cuaa1
mknod cuaa2 c 28 130; chmod 660 cuaa2
mknod cuaia0 c 28 160; chmod 660 cuaia0
mknod cuaia1 c 28 161; chmod 660 cuaia1
mknod cuaia2 c 28 162; chmod 660 cuaia2
mknod cuala0 c 28 192; chmod 660 cuala0
mknod cuala1 c 28 193; chmod 660 cuala1
mknod cuala2 c 28 194; chmod 660 cuala2
# pty для возможности подключится к машине по Telnet
mknod ptyp0 c 6 0; chmod 666 ptyp0
mknod ptyp1 c 6 1; chmod 666 ptyp1
mknod ptyp2 c 6 2; chmod 666 ptyp2
mknod ptyp3 c 6 3; chmod 666 ptyp3
mknod ptyp4 c 6 4; chmod 666 ptyp4
# tun - в конкретном проекте не нужны но могут пригодится
mknod tun0 c 52 0; chmod 600 tun0
mknod tun1 c 52 1; chmod 600 tun1
mknod tun2 c 52 2; chmod 600 tun2
mknod tun3 c 52 3; chmod 600 tun3

mknod vn0 c 43 2; chmod 644 vn0
mknod vn0a c 43 0; chmod 644 vn0a
mknod vn0b c 43 1; chmod 644 vn0b
mknod vn0c c 43 2; chmod 644 vn0c

cd /tmp/project

# команда crunchgen -l crunch.conf выводит список программ нашего проекта, а
# следующий код копирует crunch в проект и создает жесткие ссылки на него этих
# программ.

cp crunch /mnt/sbin
for i in `crunchgen -l crunch.conf` ; \
do \
ln /mnt/sbin/crunch /mnt/sbin/$i; \
done

# Копируем необходимые файлы (о них дальше)
cp /tmp/project/etc/* /mnt/etc
cp /tmp/project/var/lastlog /mnt/var/log
cp /tmp/project/misc/* /mnt/usr/share/misc

# вывод наличия свободного места
df -h /dev/vn0c

# размонтируем и отключаем от устройства mfsroot
umount /mnt
vnconfig -u vn0

# пакуем

gzip --best mfsroot

exit 0
-----
и готово.

Теперь о файлах проекта.

В папках /tmp/project/etc, /tmp/project/var, /tmp/project/misc заготовлены файлы, которые Вам скорее всего не потребуется изменять после создания дискеты, поэтому они сразу копируются в mfsroot.
В папке /tmp/project/etc_ext :
rc.main – основной сценарий настроек сети и запуска демонов – правим под себя настройки сети, шлюз и т.д., а также hosts и resolv.conf
rc.serial – в последней строчке указываем какие COM-порты инициализировать(в нашем случае COM3)
modem – сценарий инициализации модема
rc.shutdown – копирует логи и master.passwd (вдруг root сменил пароль) на дискету по команде shutdown.
passwd, master.passwd, group – понятно (в прилагаемом master.passwd пароль root – 777777).
ttys – запуск getty для конкретного COM – порта. (у нас опять же COM3)
В папке /tmp/project/ppp
options – настройки демона pppd – правим адрес сервера pppd и адреса DNS, отправляемых клиенту.
chap-secrets – сюда пишем логины, пароли и ip адреса dial-up клиентов.
Файлы из этих папок копируются на загрузочную дискету при ее создании, а уже потом при загрузке с дискеты в mfsroot.


Дискета.

Сценарий scr2_fdimage
---
#!/bin/sh

umount /mnt
vnconfig -u vn0

dd if=/dev/zero of=flpImage count=1440 bs=1k
vnconfig -s labels -c /dev/vn0 flpImage
disklabel -Brw -b /boot/boot1 -s /boot/boot2 vn0c fd1440
newfs -i 32768 -m 0 -p 0 -o space /dev/vn0c
vnconfig -u vn0

vnconfig vn0 flpImage
mount /dev/vn0c /mnt
mkdir /mnt/boot

cp /boot/loader /mnt/boot
cp /tmp/project/boot/loader.rc /mnt/boot

mkdir /mnt/etc
mkdir /mnt/var
mkdir /mnt/ppp

cp /tmp/project/etc_ext/* /mnt/etc
cp /tmp/project/kernel.gz /mnt
cp /tmp/project/mfsroot.gz /mnt
cp /tmp/project/var/* /mnt/var
cp /tmp/project/ppp/* /mnt/ppp

df –h /dev/vn0c

umount /mnt
vnconfig -u vn0

exit 0
---
создает файл flpImage который потом командой

#dd if=flpImage of=/dev/fd0

записываем на дискету. (или в DOS утилитой fdimage.exe, которая есть на любом CD FreeBSD)

Все ! Загрузившись с дискеты и смонтировав ее в каталог /flp можем править настройки, при следующей перезагрузке они вступят в действие.

О всех непонятностях спрашивайте.

Вложения:
Комментарий к файлу: Скачать в папку /tmp
распаковать
tar -xzvf project.tar.gz

project.tar.gz [72.65 КБ]
Скачиваний: 338

Страница 1 из 1 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/