Ключевые слова:gentoo, livecd, cdrom, linux, boot, install, (найти похожие документы)
From: Ляшков Павел <bilbo.kem@gmail.com.>
Date: Mon, 16 Jun 2005 18:21:07 +0000 (UTC)
Subject: Создание собственного варианта загрузочного CD Gentoo Linux
Оригинал: http://www.livejournal.com/users/bilbo_kem/1061.html
Итак у меня возникла потребность в создании своего варианта
загрузочного сд диска - причина проста надо было установить генту на
файловую систему не поддерживаемую ядрами стандартных live cd
(ReiserFS 4 http://www.namesys.com/v4/v4.html ).
Создовать свой диск можно или на основе уже существующего live CD или
используя гентушный старге http://www.gentoo.org.
Для начала я решил разобрать стандартный инсталяционный сд генту.
На нём мы находим файл сжатой файловой системы LIVECD.SQU.
В данном случае используется сжатая файловая система SquashFS
http://squashfs.sourceforge.net/ , но возможно так же
использование других файловых систем:
-cramfs http://sourceforge.net/projects/cramfs/.
-cloop http://build.lnx-bbc.org/packages/kernel/cloop.htmlhttp://packages.qa.debian.org/c/cloop.html. С использованием этой
файловой системы создан знаменитый live CD Knoppix http://www.knoppix.org/.
Для сравнения этих файловых систем приведу конечный размер сжатого
файла - ядро версии 2.6.6:
- CRAMFS 62791680 bytes (59.9M)
- Squashfs 1.x 51351552 bytes (48.9M)
- Cloop 46118681 bytes (44.0M)
- Squashfs 2.0 45604854 bytes (43.5M)
Для того что бы воспользоваться файловой системой SquashFS, вам нужно
скачать набор состоящий из патча для ядра - позволяющим получить
возможность монтировать сжатые файлы и набор утилит для создания
файловой системы http://sourceforge.net/project/showfiles.php?group_id=63835
Так же рекомендую прочитать FAQ
http://www.artemio.net/projects/linuxdoc/squashfs/SquashFS-HOWTO.html
Итак патчим ядро:
# cd /usr/src/squashfs
# cp linux-2.x.y/squashfs-patch /usr/src/linux
# cd /usr/src/linux
# patch -p1 < squashfs-patch
Компилим ядро черезgenkernell all или как обычно
#cd /usr/src/linux
# make distclean
# make mrproper
File systems> Miscellaneous file systems>Squashed filesystem
# make
# cp ./arch/i386/boot/bzImage /boot/bzImage-sqsh
# make modules_install
И устанавливаем утилиты:
# cd /usr/src/squashfs/squashfs-tools
# make
# cp mksquashfs /usr/sbin
Перегружаемся под новым ядром.
Создаём рабочую папку и точку монтирования сжатой файловой системы:
bash# mkdir /tmp/distr
bash# mkdir /tmp/squ
Монтируем CDROM с инсталяционным диском генту, а так же сжатый файл:
# mount /mnt/cdrom; mount -o loop /mnt/cdrom/livesd.squ /tmp/squ ,
копируем корневую папку стандартного Live CD
# cp -rf /tmp/squ /tmp/distr/
# umount /tmp/squ.
Теперь мы приступаем к тому ради чего всё было затеено - к поддержке в
новом CD ReiserFS 4.
Читаем FAQ http://www.namesys.com/install_v4.html . Скачиваем
самую новую версию библиотеки libaal и утилиты reiser4progs
ftp://ftp.namesys.com/pub/reiser4progs/ , и самое главное патч на ядро
выше linux-2.6.8.1-mm2 (лучше последний)
http://kernel.org/pub/linux/kernel/people/akpm/patches/2.6
И делаем несколько простых операций :). готовим ядро для нашего LiveCD
# su
# cd /usr/src/linux
# patch -p1 < /usr/linux/2.6.xx-mm1
Важно - мы патчим ядро которое уже было пропатчено для поддержки squashfs.
Code maturity level options
---> Prompt for development and/or incomplete code/drivers
Kernel hacking ---> Use 4Kb for kernel stacks instead of 8Kb
# tar -xzvpf libaal-XXXXXX.tar.gz
# cd libaal-X.X.X
# ./configure --enable-stand-alone --enable-memory-manager
# make
# make install
# ldconfig
# tar -xzvpf reiser4progs-XXXXXX.tar.gz
# cd reiser4progs-X.X.X
# ./configure
# make
# make install
Собираем ядро с для LiveCD, что включать в это ядро - зависит от целей
создания диска - если вы делаете его только для себя то включите
стандартные настройки плюс поддержка ReiserFS4 и SquashFS, если же вы
планируете использовать диск для нескольких машин включите монолитом в
ядро поддержку основных чипсетов, файловых систем и если есть
необходимость - agp.
(не забудьте изменить название ядра - что бы не затереть предыдушее -
делается это правкой файла Makefile в /usr/linux)
После сборки ядра и модулей копируем их в соответсвуюшие каталоги
рабочей папки:
# cp /usr/linux/arch/i386/boot/bzImage
/tmp/distr/boot/vmlinuz-2.6.xx-mm
# cp /usr/linux/initrd /tmp/distr/boot/inird-2.6.xx-mm
# cp -rf /lib/modules/2.6.xx-mm /tmp/distr/lib/modules/2.6.xx-mm[/b]
Меняем корневой каталог и устанавливаем утилиты для работы с ReiserFS4
в рабочую папку.
# chroot /tmp/distr /bin/bash
# tar -xzvpf libaal-XXXXXX.tar.gz
# cd libaal-X.X.X
# ./configure --prefix=/tmp/distr/usr --enable-stand-alone --enable-memory-manager
# make clean
# make
# make install
# ldconfig
# tar -xzvpf reiser4progs-XXXXXX.tar.gz
# cd reiser4progs-X.X.X
# cd reiser4progs-X.X.X
# ./configure --prefix=/tmp/distr/usr
# make
# make install
#exit
Теперь сжимаем рабочую папку в файл:
#mksquashfs /tmp/livecd.squ /tmp/distr
И, наконец, создаём папку где будем формировать iso образ, и формируем
его с помошью программы syslinux http://syslinux.zytor.com .
# mkdir /mnt/distro1
# cp -rf /mnt/cdrom /tmp/distro1
# rm /tmp/distro1/livecd.squ
# cp /tmp/livecd.squ /tmp/distro1/
# cp -rf /tmp/distr/boot/initrd-2.6.xx-mm
/tmp/distro1/isolinux/gentoo-2.6.xx-mm.gz
# cp -rf /tmp/distr/boot/vmlinuz-2.6.xx-mm
/tmp/distro1/isolinux/gentoo-2.6.xx-mm
# nano -w /tmp/distro1/isolinux/isolinux.cfg
----------------------------------------------------
label gento26
kernel gentoo-2.6.xx-mm
append initrd=gentoo-2.6.xx-mm.igz root=/dev/ram0 init=/linuxrc
looptype=squashfs loop=/livecd.squashfs cdroot
----------------------------------------------------
#mkisofs -o /tmp/distro.iso -r -V "Livecd" -v -no-emul-boot \
-boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin \
-c isolinux/isolinux.boot /tmp/distro1
И пишем его на диск:
#cdrecord dev=0,0 -v -eject /tmp/distro.iso
Вот собственно говоря и всё.
P.S: понятно, что таким же образом на диск можно добавлять любые
программы - всё зависит от ваших потребностей и желаний.
Почему я не гентушник!?
все вроде как опнятно, в смысле большая часть комманд. Где то видел. что-то слышал.... Год на Линуксе. убунту-минт- асп+рунту. если бы все тоже но попроще...
инетесно, ЗАЧЕМ гентушникам всякие там кде, гномы, коли ср, мкдир,... есть в терминале?!
это как бы вопрос автору.... зачем писать диски сдрекодом с кучей (например для меня это дико помнить на память все параметры, а каждый раз, когда я диск буду писать читать мануал?) параметров?
Т.е. нельзя ли попроще?
Гноумбейкер или к3б входит в поставку гнома и кде.... зачем придумывать велосипед?