BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: Пт 26 мар, 2004 10:59 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт 07 мар, 2003 4:59 pm
Сообщения: 253
Откуда: г. Москва
Категория: 3 Установка FreeBSD
Тип статьи: Документация

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 12 май, 2004 12:46 pm 
Не в сети

Зарегистрирован: Ср 12 май, 2004 12:23 pm
Сообщения: 1
Установил 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
Может я что сделал не так ....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Бездисковый ISP Dial-in server.
СообщениеДобавлено: Чт 09 сен, 2004 7:57 pm 
Бездисковый 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 КБ]
Скачиваний: 330
Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot], Google Feedfetcher


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика