LINUX.ORG.RU

Сборка livecd в Gentoo

 ,


6

4

Доброе время суток. Потратил некоторое время на то что бы разобраться - как же сделать свой livecd в gentoo. Собрал по кусочкам из нескольких мануалов, и вот что получилось.

Собирать будем из бинарных пакетов

export ACCEPT_KEYWORDS="amd64"
export PORTAGE_BINHOST="ssh://<binhost>/var/binpkgs/"
export ROOT=<где собираем>
Для удобства обслуживания - всё будет происходить под управлением git
mkdir -p $ROOT
git init $ROOT
Далее создаём базовую структуру каталогов и устанавливаем «минимум необходимого
USE="build" emerge --root=$ROOT -O baselayout
MAKEDEV -d $ROOT/dev console hda input ptmx std sd tty
rm -f $ROOT/dev/fd[0-9]*
rm -f $ROOT/dev/sd[a-d][a-z]* $ROOT/dev/sd[e-z]*
rm -f $ROOT/dev/tty[a-zA-Z]*

emerge --root=$ROOT -gK openrc vim bash vixie-cron gpm udev file findutils gawk grep \
                    groff iproute2 man man-pages-ru net-tools pciutils \
                    sed shadow usbutils util-linux which syslog-ng screen nfs-utils openssh wget socat rsync ntp \
                    gcc tar util-linux shadow udev procps psmisc cracklib gzip kbd dhcp
далее можно поставить всё что угодно, по желанию
emerge --root=$ROOT -gK <ваши пакеты>
почистим ненужный мусор
rm -rf $ROOT/var/tmp/*
rm -rf $ROOT/var/cache/*
rm -rf $ROOT/var/db
rm -rf $ROOT/tmp/*
rm -f $ROOT/etc/mtab
touch $ROOT/etc/mtab
rm -rf $ROOT/etc/portage
rm -rf $ROOT/usr/share/doc
rm -rf $ROOT/usr/src/
Далее по стандартному пути, можно сделать chroot, сменить пароль рута, прописать сервисы в автозагрузку,итд.
mount -o bind /dev $ROOT/dev
mount -t proc none $ROOT/proc
chroot $ROOT /bin/bash
<конфигурируем>
umount $ROOT/dev
umount $ROOT/proc
rm $ROOT/root/.bash_history
В сторонке можно нужно собрать ядро. Проще всего сделать это genkernel.Как то так.
rm -f /var/tmp/genkernel/*
genkernel --no-install --all-ramdisk-modules --kerneldir=<path to kernel> --e2fsprogs --disklabel --oldconfig --busybox all --unionfs --menuconfig all
забрать результат работы можно будет в /var/tmp/genkernel/ модули поставим вручную.
cd <kernel source>
INSTALL_MOD_PATH=$ROOT make modules_install
создадим структуру livecd
mkdir -p ./target/boot/grub
cp /var/tmp/genkernel/initramfs* ./target/
cp /var/tmp/genkernel/kernel* ./target/
cp /var/tmp/genkernel/System* ./target/
touch ./target/livecd
создаём конфиг grub2 в ./target/boot/grub/grub.cfg, примерно следующего содержания:
set default="0"
loadfont unicode
set gfxmode=800x600x32
insmod vbe
insmod vga
insmod gfxterm
set locale_dir=$prefix/locale
set lang=ru_RU
insmod gettext

terminal_output gfxterm
set timeout=2

menuentry 'Linux livecd' {
	set gfxpayload=keep
	insmod gzio
	insmod part_msdos
	insmod ext2
	set root='cd,msdos1'
	echo	'Загружается Linux '
	linux	(cd)/kernel-genkernel root=/dev/ram0 ro real_root=/dev/loop0 looptype=squashfs loop=/root.fs cdroot  video=vesafb:ywrap,mtrr:3 console=tty1 quiet net.ifnames=0
	echo	'Загружается начальный виртуальный диск …'
	initrd	(cd)/initramfs
}
теперь всё упаковываем и собираем итоговый образ.
echo ".git" > exclude.files
mksquashfs $ROOT ./target/root.fs -comp xz -ef exclude.files
grub2-mkrescue -d /usr/lib64/grub/i386-pc/ --modules="boot cat cpuid disk echo font file fshelp gettext gfxmenu gfxterm gfxterm_menu halt help iso9660 linux loopback ls lspci msdospart normal squash4 terminal vbe vga video xzio" -o cdrom.iso ./target

Какие будут замечания и предложения по данному методу?

Спасибо. Как-нибудь попробую.

Kroz ★★★★★ ()
Ответ на: комментарий от TheAnonymous

Можно сказать - академический интерес.
Из практических соображений - что бы не было лишних пакетов - например того же portage и всяких automake и.т.д.
Т.к. под боком есть репозиторий пакетов - разницы по скорости особой нету.

Dramokl ()
Ответ на: комментарий от deadNightTiger

Честно - посмотрел на catalyst, на документацию к нему....и сходу показалось проще сделать вручную.

Dramokl ()
19 ноября 2014 г.

А можно подробнее описать весь процесс ? Ещё интересует сколько места занимает полученный образ.

ex01rrd ()
Ответ на: комментарий от ex01rrd

Какие именно интересуют моменты? Сам делал образ для виртуальной лаборатории - с моим набором компонентов получилось 145МБайт

Dramokl ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.