Это старая версия документа!
Содержание
Создание livecd с существующей системы |
---|
- в статье описан один из способов создания livecd со своими настройками
- aufs собиралась модулем ядра
- все действия производились на Salix 14.1 и от пользователя root
Написано по:
Общая картина состоит из двух этапов:
1-ый этап:
- Создаем виртуальную машину, на которой собираем ядро с необходимыми патчами.
- Собираем модуль ядра и утилиты к нему.
- Перегружаемся с новым ядром, пробуем загрузить собранный молуль.
- Если модуль загрузился, то собираем пакеты (по слакбилдам) с новым ядром, модулем, утилитами и заголовками ядра.
2-ой этап:
- Создаем виртуальную машину и устанавливаем на нее минимальную установку Salix. Можно и не минимальную, главное чтобы Salix была той же версии, на которой проходил первый этап.
- Устанавливаем созданные нами пакеты и грузимся с новым ядром.
- Пробуем загрузить установленный нами модуль.
- Если модуль загрузился, то настраиваем виртуалку как нам надо, т.е. ставим/удаляем нужный софт, производим настройку дистрибутива.
- Создаем livecd с настроенной виртуалки.
Подробное описание каждого этапа
1-ый этап:
На виртуалку ставим Salix 14.1 с набором пакетов CORE
заходим на нее и обновляем список пакетов
# cd ~ # slapt-get --update
ставим исходники ядра
# slapt-get -i kernel-source
ставим пакет bc (нужен для сборки ядра (не уверен), но даже если и не нужен, то лишним не будет)
# slapt-get -i bc
качаем исходники модуля aufs
# git clone git://git.code.sf.net/p/aufs/aufs3-standalone # cd ./aufs3-standalone/
переключаемся на нужную нам ветку
Казалось бы, нам нужна ветка origin/aufs3.10.x , но патчи из этой ветки не накладываются на ядро, поэтому мы берем ветку origin/aufs3.10, патчи из которой лажатся на наше ядро без проблем.
# git checkout origin/aufs3.10
копируем патчи для ядра
# cp ./aufs3-base.patch /usr/src/linux/ # cp ./aufs3-mmap.patch /usr/src/linux/ # cp ./aufs3-standalone.patch /usr/src/linux/
переходим в каталог с исходниками ядра и накатываем патчи
# cd /usr/src/linux/ # patch -p1 < ./aufs3-base.patch # patch -p1 < ./aufs3-mmap.patch # patch -p1 < ./aufs3-standalone.patch
копируем конфиг ядра (патчи, что мы накатили выше, не трогают файл .config)
# cat /boot/config >/usr/src/linux/.config
собираем ядро
# make
копируем новое ядро, System.map и .config в /boot
# cp ./arch/x86/boot/bzImage /boot/vmlinuz-aufs-huge-smp-3.10.17-smp # cp ./System.map /boot/System.map-aufs-huge-smp-3.10.17-smp # cp ./.config /boot/config-aufs-huge-smp-3.10.17-smp
удаляем старые ссылки и создаем новые
# rm /boot/vmlinuz # rm /boot/System.map # rm /boot/config # ln -s /boot/vmlinuz-aufs-huge-smp-3.10.17-smp /boot/vmlinuz # ln -s /boot/System.map-aufs-huge-smp-3.10.17-smp /boot/System.map # ln -s /boot/config-aufs-huge-smp-3.10.17-smp /boot/config
перезаписываем загрузчик
# lilo
ставим заголовки ядра и перегружаемся с новым ядром
# make headers_install # reboot
собираем модуль ядра aufs.ko
# cd ~/aufs3-standalone/ # make # make install
# mkdir -p /lib/modules/3.10.17-smp/kernel/fs/aufs # cp ./aufs.ko /lib/modules/3.10.17-smp/kernel/fs/aufs/ # rm /lib/modules/3.10.17-smp/extra/aufs.ko # depmod -a
проверяем загружается ли модуль
# modprobe aufs # lsmod | grep aufs aufs 241031 0
модуль загружен и теперь собираем утилиты для aufs
качаем исходники утилит
# cd ~ # git clone git://git.code.sf.net/p/aufs/aufs-util # cd ./aufs-util/
переключаемся на нужную нам ветку
# git checkout origin/aufs3.9
собираем утилиты
# make CPPFLAGS="-I /usr/src/linux/usr/include -I /root/aufs3-standalone/usr/include" # make install