О том, что такое nanobsd можно глянуть тут.
Я расскажу об этом звере в контексте FreeBSD 7.2 и объёме дисковой памяти 128 Mb.
Для начала нужно выкинуть всё лишнее на момент сборки мира, в 7.2 эти настройки лежат в /etc/src.conf, вот пример моего конфа:
В /etc/make.conf нужно прописать "NO_MODULES=true", а то их там на 100 с лишним метров может накомпиляться.
nanoconf примерно так:
если захотите переименовать install_config в install_etc - придумайте что-нить пооригинальнее, а то это имя внутри nanobsd.sh используется, и в итоге нерабочий образ получится =)
Я в самом скрипте поправил fstab, так, чтобы файлухи маунтились не по имени устройства, а по label-у, вот патч:
Всё остально по хавту, работает, только пыль столбом ;-)
Я расскажу об этом звере в контексте FreeBSD 7.2 и объёме дисковой памяти 128 Mb.
Для начала нужно выкинуть всё лишнее на момент сборки мира, в 7.2 эти настройки лежат в /etc/src.conf, вот пример моего конфа:
WITHOUT_INSTALLLIB=true
WITHOUT_TOOLCHAIN=true
первые две опции необходимо закомментировать на момент сборки мира, а то не соберётся, я делал так: сначала собираю всё обычным образом "sh nanonbsd.sh -c /home/nanobsd/nanoconf", а после того как мир и ядро собрались, снимаю комменты с этих опций, и делаю "sh nanonbsd.sh -b -c /home/nanobsd/nanoconf".
WITHOUT_ATM=true
WITHOUT_AUDIT=true
WITHOUT_BIND_NAMED=true
WITHOUT_BIND_ETC=true
WITHOUT_BIND_UTILS=true
WITHOUT_BLUETOOTH=true
WITHOUT_CALENDAR=true
WITHOUT_CPP=true
WITHOUT_KERBEROS=true
WITHOUT_KERBEROS_SUPPORT=true
WITHOUT_CVS=true
WITHOUT_CXX=true
WITHOUT_DICT=true
WITHOUT_EXAMPLES=true
WITHOUT_FORTH=true
WITHOUT_GAMES=true
WITHOUT_GCOV=true
WITHOUT_GDB=true
WITHOUT_GPIB=true
WITHOUT_GROFF=true
WITHOUT_HTML=true
WITHOUT_I4B=true
WITHOUT_IDEA=true
WITHOUT_INET6=true
WITHOUT_INET6_SUPPORT=true
WITHOUT_INFO=true
WITHOUT_IPFILTER=true
WITHOUT_IPX=true
WITHOUT_LOCALES=true
WITHOUT_LPR=true
WITHOUT_MAILWRAPPER=ture
WITHOUT_MAN=true
WITHOUT_NCP=true
WITHOUT_NIS=true
WITHOUT_NLS=true
WITHOUT_NLS_CATALOGS=true
WITHOUT_OBJC=true
WITHOUT_RCMDS=true
WITHOUT_RESCUE=true
WITHOUT_SENDMAIL=true
WITHOUT_SHAREDOCS=true
WITHOUT_ZFS=true
В /etc/make.conf нужно прописать "NO_MODULES=true", а то их там на 100 с лишним метров может накомпиляться.
nanoconf примерно так:
NANO_KERNEL=UNI
NANO_IMAGES=1 #обязательно, если хотим вместиться на 128 метров
FlashDevice sandisk 128mb
install_packages () (
mkdir -p ${NANO_WORLDDIR}/packages
cp /home/packages/All/* ${NANO_WORLDDIR}/packages
chroot ${NANO_WORLDDIR} sh -c 'cd packages; pkg_add -v *;cd ..;'
rm -rf ${NANO_WORLDDIR}/packages
)
install_configs () (
cp /home/nanobsd/*.conf ${NANO_WORLDDIR}/etc/
cp /home/nanobsd/crontab ${NANO_WORLDDIR}/etc/
)
customize_cmd install_packages
customize_cmd install_configs
если захотите переименовать install_config в install_etc - придумайте что-нить пооригинальнее, а то это имя внутри nanobsd.sh используется, и в итоге нерабочий образ получится =)
Я в самом скрипте поправил fstab, так, чтобы файлухи маунтились не по имени устройства, а по label-у, вот патч:
--- nanobsd.sh.orig 2009-09-04 15:54:47.000000000 +0300
+++ nanobsd.sh 2009-09-04 15:58:08.000000000 +0300
@@ -306,5 +306,5 @@
# pick up config files from the special partition
- echo "mount -o ro /dev/${NANO_DRIVE}s3" > conf/default/etc/remount
+ echo "mount -o ro /dev/ufs/CFG" > conf/default/etc/remount
# Put /tmp on the /var ramdisk (could be symlink already)
@@ -331,6 +331,6 @@
echo "NANO_DRIVE=${NANO_DRIVE}" > etc/nanobsd.conf
- echo "/dev/${NANO_DRIVE}s1a / ufs ro 1 1" > etc/fstab
- echo "/dev/${NANO_DRIVE}s3 /cfg ufs rw,noauto 2 2" >> etc/fstab
+ echo "/dev/ufs/ROOT / ufs ro 1 1" > etc/fstab
+ echo "/dev/ufs/CFG /cfg ufs rw,noauto 2 2" >> etc/fstab
mkdir -p cfg
)
@@ -447,4 +447,5 @@
# Create first image
newfs ${NANO_NEWFS} /dev/${MD}s1a
+ tunefs -L ROOT /dev/${MD}s1a
mount /dev/${MD}s1a ${MNT}
df -i ${MNT}
@@ -472,4 +473,5 @@
# Create Config slice
newfs ${NANO_NEWFS} /dev/${MD}s3
+ tunefs -L CFG /dev/${MD}s3
# XXX: fill from where ?
Всё остально по хавту, работает, только пыль столбом ;-)
Комментариев нет:
Отправить комментарий