NetBSD LiveCD.
ПРИМЕЧАНИЕ:
Все действия будут производиться из каталога /LiveCD, если не указано обратное.
В конце будет скрипт, по которому можно будет более подробно разобраться.
Общая схема создания NetBSD LiveCD такая:
1. Ставим саму систему. LiveCD надо делать в своем окружении.
2. Ставим пакеты: cdrtools и mklivecd.
3. Нужны будут исходники ядра и бинарники базовой системы.
Делать будем на версии NetBSD 6.1.3
mklivecd
Порядок выполнения команд mklivecd такой:
mklivecd config
В домашнем каталоге появляется конфиг ~/.mklivecd/mklivecd.conf
Редактируем его.
Далее копируем конфиг ядра:
cp /usr/src/sys/arch/i386/conf/GENERIC ~/.mklivecd/
в файле ~/.mklivecd/GENERIC
находим:
config netbsd root on ? type ?
меняем на:
config netbsd root on cd0a type cd9660 dumps on none
Нужно присвоить переменной BOOTKERN значение, например GENERIC
Собираем ядро:
mklivecd kernel
Потом:
mklivecd base
Далее в chroot:
mklivecd chrootтут можно добавлять новые пакеты и т.д.
Выход из chroot:
exit
Делаем ISO:
mklivecd iso
Потом прожигаем:
mklivecd burn
P.S.
При выполнении прожига, если неправильно настроен привод в конф-файле, образ может не записаться.
В таком случае можно записать такой командой средствами cdrtools:
cdrecord -v dev=/dev/rcd0d data.iso
Откуда что брать, и куда их класть.
При установке из образа(естественно, записанного на болванку) ставятся только бинарники.
Поэтому исходников там нет.
А нам для создание netbsd livecd понадобятся исходники ядра и бинарники базовой системы.
Исходники ядра называются syssrc.tgz находятся по адресу:
http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/source/sets/syssrc.tgz для версии 6.1.3.
Здесь находятся исходники ядра для всех архитектур. Нам понадобятся архитектура i386. Или другая ;)
Их нужно положить/распаковать в папку /usr/src/
В итоге, у вас там будет три каталога:
1. /usr/src/common
2. /usr/src/sys
3. /usr/src/usr.bin
P.S.
Если нету папки src в /usr(а ее не будет ;)), то создаем. Например, midnight commander'ом.
Или, автоматом, командой:
tar xvzpf /LiveCD/syssrc.tgz
Теперь нам понадобятся бинарники базовой системы.
Находятся они по адресу(для версии 6.1.3):
http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/
Откуда нам понадобятся:
1. etc.tgz
2. base.tgz
3. comp.tgz
4. text.tgz
Если мы будет ставить только в консоли, без X-сервера;
и еще:
1. xbase.tgz
2. xcomp.tgz
3. xfont.tgz
4. xserver.tgz
если мы будем ставить еще X-сервер.
Примечание:
Бинарники базовой системы можно еще найти на диске, откуда вы ставили NetBSD.
Весят они немало, поэтому, если инет слабый, можно скатать оттуда.
mklivecd.conf
Вот содержимое mklivecd.conf
# --*-sh-*--
#
# mklivecd - configuration file
# See mklivecd(8) for a detailed description of each variable.
#
# Generated automatically on Tue Apr 8 20:10:40 UTC 2014.
# Base directories/options
BASEDIR="/root/livecd"
BASE_SETS="etc.tgz base.tgz comp.tgz text.tgz"
BASE_SETS_DIR="/LiveCD"
CHROOT_SHELL="/bin/ksh"
FETCH_SETS="no"
ISODIR="/root/livecd/iso"
MOUNT_PACKAGES_DIR="no"
MOUNT_PKGSRCDIST_DIR="no"
MOUNT_PKGSRC_DIR="no"
PACKAGESDIR="/usr/pkgsrc/packages"
PKGSRCDIR="/usr/pkgsrc"
PKGSRCDISTDIR="/usr/pkgsrc/distfiles"
REMOTE_SETS_URL="ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets"
SHAREDIR="/usr/pkg/share/mklivecd"
SOURCEDIR="/usr/src"
WORKDIR="/root/livecd/work"
X11_SETS="xbase.tgz xcomp.tgz xfont.tgz xserver.tgz"
X11_SETS_DIR="/LiveCD"
# kernel options
KERNEL_CONFIG="GENERIC"
KERNEL_NAME="MKLIVECD"
MULTIPLE_KERNELS="no"
# MULTIPLE_KERNELS example:
#
# MULTIPLE_KERNELS="ACPI APM"
# KERNEL_CONFIG_ACPI="KERN_ACPI"
# KERNEL_NAME_ACPI="LIVECD_ACPI"
# KERNEL_CONFIG_APM="KERN_APM"
# KERNEL_NAME_APM="LIVECD_APM"
# Miscellaneous options
BLANK_BEFORE_BURN="no"
CDRECORD_ARGS="-v"
CDRECORD_BIN="/usr/pkg/bin/cdrecord"
CDROM_DEVICE="15,1,0"
ENABLE_X11="yes"
GRUB_FILES_DIR="/usr/pkg/lib/grub/i386-"
HOSTNAME="PhoeniX@NetBSD"
IMAGE_NAME="NetBSD-LiveCD"
MKISOFS_ARGS="-J -R -v"
MKISOFS_BIN="/usr/pkg/bin/mkisofs"
PERSONAL_CONFIG="no"
PKG_SYSCONFDIR="usr/pkg/etc"
REMOVE_DIRS="altroot usr/share/info"
USE_GNU_GRUB="yes"
VND_COMPRESSION="yes"
# Mount arguments
MNT_RAMFS_ARGS="-s 512m swap"
MNT_RAMFS_CMD="mount_mfs"
Собственно, настроить правильный mklivecd.conf - это самое главное в этом деле))
И, наконец, небольшой скрипт, который автоматизирует всё это дело.
Написано было по причине того, что то экспериментировал, то разные версии системы смотрел, то на разных машинах, включая VMWare.. Надоело каждый раз одни и те же действия делать))
В общем, admin-way ))
обозвал скрипт livecd.sh, естесно, исполняемый.
ПРИМЕЧАНИЕ: повторюсь, все действия - из папки /LiveCD
Вот код:
#// installing utilites
pkg_add http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1.3/All/wget-1.14nb3.tgz
pkg_add http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1.3/All/cdrtools-3.01alpha19.tgz
pkg_add http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1.3/All/mklivecd-0.17.tgz
pkg_add http://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1.3/All/qemu-1.6.1nb1.tgz
cd /
mkdir LiveCD
cp livecd.sh /LiveCD/
#// downloading kernel sources
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/source/sets/syssrc.tgz
#// unpacking kernel sources
cd /
tar xvzpf /LiveCD/syssrc.tgz
#// downloadinf for console only
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/etc.tgz
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/base.tgz
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/comp.tgz
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/text.tgz
#// downloading for X version
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/xbase.tgz
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/xcomp.tgz
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/xfont.tgz
wget -P /LiveCD -nc http://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.3/i386/binary/sets/xserver.tgz
#// mklivecd
cd /root
mklivecd config
cp /LiveCD/GENERIC /root/.mklivecd/
cp /LiveCD/mklivecd.conf /root/.mklivecd/
cp /usr/include/termcap.h /usr/share/misc/
mklivecd kernel
mklivecd base
mklivecd chroot
#exit
mklivecd iso
qemu-system-i386 -cdrom /root/livecd/NetBSD-LiveCD.iso
После запуска livecd.sh будет скачано, установлено, настроено, скомпилировано и запущено в QEMU NetBSD-LiveCD.iso ))
Скачайте http://freeserver.su/Soft/NetBSD/LiveCD/6.1.3/LiveCD.tgz и распакуйте в /LiveCD
И запустите livecd.sh
В архиве 3 файлика:
GENERIC - подготовленное ядро
mklivecd.conf - конфиг-файл
livecd.sh - небольшой скрипт для упрощения
В mklivecd.conf не настроено только одно - пути к бинаринкам, для установки из chroot.
Обновлю как будет время.
спасибо товарищам из runetbsd.ru :)
Ну и, собстно, сам образчик: http://freeserver.su/Soft/NetBSD/LiveCD/NetBSD-LiveCD-v0.1.iso