Ссылка на оригинал: http://linuxportal.vrn.ru/?q=node/58
Автор: Pizgin
С версии: 1.5
Версия статьи: 1.4 от 23.03.2008
В руководстве рассказывается о том как создать свой LiveCD диск на основе Gentoo Linux. Диск будет полностью русифицирован, произведена установка KDE и обеспечено автоматическое монтирование flash накопителей. В качестве загрузчика рассматривается ISOLINUX. Раньше был GRUB, но пришлось от него отказаться, так как он не работает на некоторых ноутбуках. Созданный по этой инструкции диск можно будет постоянно совершенствовать, устанавливать новые пакеты, вообщем можно делать все то что можно делать с обычным дистрибутивом установленным на вашем ПК.
Для сборки необходимо создать
определенную структуру каталогов, где
создавать
- в принципе без разницы. Я
создавал в домашней директории.
Структура
следующая:
livecd conf // набор конфигурационных файлов source // создаваемый дистрибутив scripts // набор вспомогательных скриптов distr // исходники: portage, stage, может картинки какие-то и пр. target // здесь сборочный скрипт будет создавать squashfs образ
Создаем:
$ cd ~
$ mkdir -p livecd/{conf,distrib,scripts,source,target}
Теперь из прикрепленного к статье файла, берем его содержимое и распихиваем поуказанным директориям.
Собирать livecd будем из второй стадии. Скачиваем ее из сети и копируем в distr и распаковываем в каталог сборки. Распаковывать следует с root правами, иначе будут проблемы с созданием устройств в каталоге /dev.
# tar -C source/ -pxjvf distrib/stage2-i686-2007.0.tar.bz2
Архив с портежами и дистфайлами распаковывать в каталог сборки не будем. Вместо этого скрипты будут автоматически монтировать эти каталоги от основной системы.
Для того чтобы легко отличать консоль в chroot окружении от консоли основной системы, рекомендую для первой изменить приглашение коммандной строки и вместо просто "#"написать например "(LIVECD) #". Для этого копируем заготовленный в conf директории файл root/bashrc в каталог source/root/ (добавив в начало названия точку).
Для сборки образа, на ПК предварительно должны быть установлены пакеты squashfs-tools и cdrtools. Первый для работы с файловой системой SquashFS, второй для записи CD дисков.
# emerge -av squashfs-tools cdrtools
Сейчас можно входить (chroot'иться как еще говорят) в собираемую систему и начинать подгонять ее под свои потребности.
# cd scripts
# ./enter.sh
Если все прошло нормально - на экране не должно быть никаких ругательных сообщений, а приглашение командной строки выглядеть вот так: "(LIVECD) #". Сейчас мы находимся в только-что распакованной из stage2 системе.
Общий план работ таков:
Установить имя машины/домена, профиль, дописать USE флагов в make.conf,создать /etc/fstab.
Установить часовой пояс, перевести часы в режим Local, сгенерировать русские локали, установить русскую расскладку клавиатуры и экранный шрифт.
Выполнить emerge -e system и emerge -e world для получения Stage3.
Не забыть установить пароль root'у.
Собрать ядро, настроить загрузчик и попробовать перезагрузиться.
Установить свои приложения.
Создать ISO образ и записать его на диск.
Первые два пункта за вас может выполнить подготовленный скрипт "_prepare.sh". Написан он был потому как собрать livecd получилось не с первого раза, и делать одно и тоже на только-что распакованных stage-2 порядком надоело. Его нужно скопировать куда нибудь в source директорию и выполнить один раз для свеже распакованного stage-2. Скопировать можно например в /root или пря мо в корень (важно не забыть перед созданием ISO образа его оттуда удалить).
Итак начинаем:
Напомню что все действия происходят в chroot окружении.
Подготавливаем и русифицируем систему.
(LIVECD) # ./_prepare.sh
(LIVECD) # rm _prepare.sh
Устанавливаем основные утилиты для управления пакетами
(LIVECD) # emerge -av gentoolkit
Собираем Stage3
(LIVECD) # emerge -e system
Обновляем конфигурационные файлы обновленных приложений
(LIVECD) # dispatch-conf
Здесь нужно быть внимательным и не затереть те конфигурационные файлы которые
мы сами изменяли (или их изменил скрипт _prepare.sh). Это касается русского шрифта, раскладки клавиатуры и прочее. Вообщем прежде чем в ответ на вопрос dispatch-conf'a жать 'u', внимательно посмотрите какой файл он хочет обновить. Если это файлы: clock, consolefont, hostname или keymaps - жмите 'z' (не обновлять).
Проверяем целостность зависимостей системы
(LIVECD) # revdep-rebuild
Тоже самое про мир, пересобираем, обновляем конфигурационные файлы и проверяем целостность зависимостей.
(LIVECD) # emerge -e world
(LIVECD) # dispatch-conf
(LIVECD) # revdep-rebuild
Пересборка system на Turion64X2 заняла приблизительно 2.5 часа, world - 3 ч.
При emerge -e system могут быть проблемы с perl. Если такое случиться
-делать так (ставиться будет примерно минут 15):
(LIVECD) # emerge --oneshot gdbm db
(LIVECD) # emerge -N --oneshot --nodeps perl
После можно снова пробовать emerge -e system.
Возможно где-то в середине сборка system прервется с ошибкой на пакете sys-apps/attr. Ошибка будет выглядеть так: "libexpat.so.0: cannot open shared objects file: No such file or directory". Если это случилось - создаем сиволическую ссылку с libexpat.so на libexpat.so.0, и затем пробуем продолжить сборку, т.е. делаем
(LIVECD) # ln -s /usr/lib/libexpat.so /usr/lib/libexpat.so.0
(LIVECD) # emerge --resume
Обнаружил небольшой недочет при сборке с использованием portage от 05.03.2008. emerge -e system прерывается на пакете 'which-2.19' с ошибкой "error: readline/rlstdc.h: No such file or directory". На момент сборки этого пакета уже должна стоять библиотека readline, но ее нет. Устанавливаем ее сами и продолжаем сборку system. Если подробно, то:
(LIVECD) # emerge -av readline
(LIVECD) # emerge --resume
Если будут еще какие-либо проблемы - скачайте или обновитесь до самого свежего архива портежей. Не поможет - идите на bugzilla.gentoo.org.
4.Устанавливаем пароль root'у
(LIVECD) # passwd
Создаем пользователя livecd
(LIVECD) # useradd -m -G users,wheel,audio,video,cdrom,cdrw,usb -s /bin/bash livecd
(LIVECD) # passwd livecd
Устанавливаем splash темы для красивой графической загрузки
(LIVECD) # emerge -av splash-themes-livecd
Устанавливаем и компилируем ядро
(LIVECD) # emerge -av gentoo-sources
genkernel должен быть не старее чем 3.4.10_pre4. На момент написания этого руководства такой версии в стабильной ветке небыло. Если у вас тоже-самое -разрешаем устанавливать его из тестовой (~x86), для этого выполним
(LIVECD) # echo 'sys-kernel/genkernel ~x86' >> /etc/portage/package.keywords
(LIVECD) # emerge -av genkernel
(LIVECD) # genkernel all —gensplash=livecd-2007.0
Устанавливаем и добавляем в автозагрузку Gentoo LiveCD скрипты
Снимаем маскировку (установлена разработчиками для того чтобы предупредить о том, что скрипты предназначены только для использования вместе с livecd)
(LIVECD) # echo 'app-misc/livecd-tools' >> /etc/portage/package.unmask
(LIVECD) # echo 'x11-misc/mkxf86config' >> /etc/portage/package.unmask
(LIVECD) # echo 'sys-apps/hwsetup' >> /etc/portage/package.unmask
livecd-tools нужен версии не ниже 1.0.40_pre1. На момент написания этого руководства такой версии в стабильной ветке небыло. Если у вас тоже-самое - разрешаем устанавливать его из тестовой (~x86), для этого выполним
(LIVECD) # echo 'app-misc/livecd-tools ~x86' >> /etc/portage/package.keywords
(LIVECD) # emerge -av livecd-tools
libkudzu нужен не ниже чем 1.2.57.1, если будет устанавливаться более старая версия - отвечаем 'no' и разрешаем libkudzu из тестовой ветки.
(LIVECD) # echo 'sys-libs/libkudzu ~x86' >> /etc/portage/package.keywords
(LIVECD) # rc-update add autoconfig default
Устанавливаем загрузчик
(LIVECD) # emerge -av syslinux
(LIVECD) # mkdir /boot/isolinux
(LIVECD) # cp /usr/lib/syslinux/isolinux.bin /boot/isolinux
(LIVECD) # cp /boot/kernel-genkernel-x86-2.6.23-gentoo-r6/boot/isolinux/vmlinuz
(LIVECD) # cp /boot/initramfs-genkernel-x86-2.6.23-gentoo-r6 /boot/isolinux/initrd
Из директории с конфиг. файлами копируем в /boot/isolinux файл isolinux.cfg.
Создаем образ и пробуем его загрузить. Выходим из chroot окружения и запускаем скрипт "build.sh"
(LIVECD) # exit
# ./build.sh
Процесс сборки образа длиться примерно минут 5. После него забираем iso файл в директории livecd. Можно записать его на болванку, но лучше для этих целей поставить например VirtualBox или VMWare, потому как удобнее и быстрее.
Записать на CD можно так:
# cdrecord -v -eject speed=10 fs=8m dev=/dev/cdrw image.iso
или если это DVD то так:
# growisofs -dvd-compat -Z /dev/dvd=image.iso
Образ должен загрузиться, когда дойдет до приглашения - введите root и ваш пароль. Если все так - пол дела сделано. LiveCD грузиться. Сейчас желательно создать архив с каталогом livecd на случай если при дальнейших манипуляциях что нибудь пойдет не так - можно будет откатиться.
Устанавливаем Xorg
(LIVECD) # emerge -av xorg-server
Устанавливаем оригинальный драйвера nVidia
(LIVECD) # emerge -av nvidia-drivers
Правим таблицу соответсвия устройство - драйвер для nVidia карт. Открываем файл /usr/share/hwdata/Cards.
3.1. Находим строку NAME NVIDIA Legacy и меняем название драйвера 'vesa' на 'nv'.
3.2. Находим строку NAME NVIDIA GeForce и меняем название драйвера с 'vesa' на 'nvidia'.
Устанавливаем минимальный набор KDE(LIVECD) # emerge -av kdm kdebase-startkde kde-i18n
Добавляем в автозапуск xdm и указываем в нем запускемый оконный менеджер В файле /etc/conf.d/xdm переменной DISPLAYMANAGER присваиваем значение "kdm"
(LIVECD) # rc-update add xdm default
Настройка автомонтирования съемных устройств
(LIVECD) # emerge -auv dbus hal pmount
(LIVECD) # rc-update add dbus default
(LIVECD) # rc-update add hald default
(LIVECD) # gpasswd -a livecd plugdev
Включаем русскую раскладку и переключатель en/ru
7.1. Открываем файл /usr/sbin/mkxf86config.sh и удаляем строку вида
"-e 's|"XkbLayout" *"[^"]*"|"XkbLayout" "'"${XKEYBOARD}"'"|g;'"${DEADKEYS}" \"
7.2. Открываем файл /etc/X11/xorg.conf.in и в секции InputDevice, Keyboard0 меняем последние три строчки на следующие:
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbVariant" "us"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
* Автологин в текстовой консоли не под root'ом
Устанавливаем mingetty
(LIVECD) # emerge -av mingetty
Прописываем его в /etc/inittab вместо agetty.
Как было:
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
Как нужно исправить:
c1:12345:respawn:/sbin/mingetty --autologin root --noclear tty1
Естественно что вместо root можно вписать любого пользователя.
Правим файл /sbin/rc
Находим вот такую секцию (приблизительно это строка N 500)
if [ -f "/sbin/livecd-functions.sh" -a -n "${CDBOOT}" ]
then ebegin "Updating inittab" livecd_fix_inittab eend $? /sbin/telinit q &>/dev/null fi
и делаем ее такой
if [ -f "/sbin/livecd-functions.sh" -a -n "${CDBOOT}" ]
then ebegin "Updating inittab" /bin/true #livecd_fix_inittab eend $? /bin/true #/sbin/telinit q &>/dev/null
fi
Открываем файл /sbin/rc, ищем
строку вида 'echo -e " Copyright' и добавляем
ниже
нее свое сообщение.
Открываем файл
/usr/kde/3.5/share/config/kdm/kdmrc и прописываем
пользователя
в строки 'DefaultUser' и
'AutoLoginUser'.
Запускаем созданный LiveCD, загружаемся в KDE и настраиваем его под себя. Все, шрифты, поведение окон, курсор занятости, панели и пр. Затем сжимаем свой домашний каталог (/home/livecd) и копируем его на флешку. Выходим из LiveCD, chroot'имся в source и распаковываем в каталог /home/livecd/ сохраненные на флешке настройки.
Приложение
Версии основных используемых пакетов
sys-fs/squashfs-tools-3.1_p2
app-misc/livecd-tools-1.0.40_pre1
sys-kernel/genkernel-3.4.10_pre4
sys-kernel/gentoo-sources-2.6.23-r9
sys-apps/hwdata-gentoo-0.3
sys-apps/hwsetup-1.2
x11-misc/mkxf86config-0.9.9
stage2-i686-2007.0.tar.bz2
portage-20080305.tar.bz2