Это старая версия документа!


Создание livecd с существующей системы
  • в статье описан один из способов создания livecd со своими настройками
  • aufs собиралась модулем ядра
  • все действия производились на Salix 14.1 и от пользователя root

Написано по:

Общая картина состоит из двух этапов:

1-ый этап:

  1. Создаем виртуальную машину, на которой собираем ядро с необходимыми патчами.
  2. Собираем модуль ядра и утилиты к нему.
  3. Перегружаемся с новым ядром, пробуем загрузить собранный молуль.
  4. Если модуль загрузился, то собираем пакеты (по слакбилдам) с новым ядром, модулем, утилитами и заголовками ядра.

2-ой этап:

  1. Создаем виртуальную машину и устанавливаем на нее минимальную установку Salix. Можно и не минимальную, главное чтобы Salix была той же версии, на которой проходил первый этап.
  2. Устанавливаем созданные нами пакеты и грузимся с новым ядром.
  3. Пробуем загрузить установленный нами модуль.
  4. Если модуль загрузился, то настраиваем виртуалку как нам надо, т.е. ставим/удаляем нужный софт, производим настройку дистрибутива.
  5. Создаем livecd с настроенной виртуалки.
Можно обойтись и без второй виртуалки и создать livecd с виртуалки, на которой собирали ядро и модуль, предварительно удалив исходники ядра для уменьшения размера и каждый раз, когда понадобится новый livecd патчить ядро и собирать модуль. Но, как мне кажется, удобней создать готовые пакеты с ядром, модулем, утилитами, заголовками ядра и накатывать их на свежую установку любимого дистрибутива Slackware (в данном случае Salix).

Подробное описание каждого этапа

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/

переключаемся на нужную нам ветку

В README по выбору нужной ветки сказано, что нужно переключаться на ветку соответсвующую версии ядра. У нас версия ядра 3.10.17, веток для нее две: origin/aufs3.10 и origin/aufs3.10.x
Казалось бы, нам нужна ветка 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
По умолчанию модуль aufs.ko ставится в /lib/modules/3.10.17-smp/extra/aufs.ko, но скрипты для сборки livecd ищут его в /lib/modules/3.10.17-smp/kernel/fs/aufs, поэтому если вы планируете делать livecd с этой виртуалки, то надо положить модуль в нужное место. Если же вы не планируете делать livecd с этой виртуалки, то делать следующий шаг не обязательно.
# 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
На этом, подготовка к созданию livecd закончена и если вы планируете делать livecd с этого дистрибутива,то можно настраивать дистрибутив как вам нужно и затем переходить к созданию livecd из второго этапа.
Собирем готовые пакеты с новым ядром, модулем, утилитами и заголовками ядра
Навигация
Печать/экспорт
QR Code
QR Code playground:playground (generated for current page)