Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
playground:playground [11/09/2015 10:48] – pasha | playground:playground [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ^ | + | ======Playground====== |
- | + | ||
- | <note tip> | + | |
- | *в статье описан один из способов создания livecd со своими настройками | + | |
- | *aufs собиралась модулем ядра | + | |
- | *все действия производились на [[https:// | + | |
- | </ | + | |
- | **Написано по:**\\ | + | |
- | *[[http:// | + | |
- | *[[http:// | + | |
- | + | ||
- | ======Общая картина состоит из двух этапов: | + | |
- | =====1-ый этап: | + | |
- | - Создаем виртуальную машину, | + | |
- | - Собираем модуль ядра и утилиты к нему. | + | |
- | - Перегружаемся с новым ядром, пробуем загрузить собранный молуль. | + | |
- | - Если модуль загрузился, | + | |
- | =====2-ой этап: | + | |
- | - Создаем виртуальную машину и устанавливаем на нее минимальную установку Salix. Можно и не минимальную, | + | |
- | - Устанавливаем созданные нами пакеты и грузимся с новым ядром. | + | |
- | - Пробуем загрузить установленный нами модуль. | + | |
- | - Если модуль загрузился, | + | |
- | - Создаем livecd с настроенной виртуалки. | + | |
- | + | ||
- | <note tip> | + | |
- | Можно обойтись и без второй виртуалки и создать livecd с виртуалки, | + | |
- | Но, как мне кажется, | + | |
- | </ | + | |
- | + | ||
- | ======Подробное описание каждого этапа====== | + | |
- | =====1-ый этап: | + | |
- | На виртуалку ставим Salix 14.1 с набором пакетов CORE\\ | + | |
- | заходим на нее и обновляем список пакетов | + | |
- | < | + | |
- | # cd ~ | + | |
- | # slapt-get --update | + | |
- | </ | + | |
- | ставим исходники ядра | + | |
- | < | + | |
- | # slapt-get -i kernel-source | + | |
- | </ | + | |
- | ставим пакет bc (нужен для сборки ядра (не уверен), | + | |
- | < | + | |
- | # slapt-get -i bc | + | |
- | </ | + | |
- | качаем исходники модуля aufs | + | |
- | < | + | |
- | # git clone git:// | + | |
- | # cd ./ | + | |
- | </ | + | |
- | переключаемся на нужную нам ветку | + | |
- | <note tip> | + | |
- | В README по выбору нужной ветки сказано, | + | |
- | Казалось бы, нам нужна ветка origin/ | + | |
- | </ | + | |
- | < | + | |
- | # git checkout origin/ | + | |
- | </ | + | |
- | копируем патчи для ядра | + | |
- | < | + | |
- | # cp ./ | + | |
- | # cp ./ | + | |
- | # cp ./ | + | |
- | </ | + | |
- | переходим в каталог с исходниками ядра и накатываем патчи | + | |
- | < | + | |
- | # cd / | + | |
- | # patch -p1 < ./ | + | |
- | # patch -p1 < ./ | + | |
- | # patch -p1 < ./ | + | |
- | </ | + | |
- | копируем конфиг ядра (патчи, | + | |
- | < | + | |
- | # cat / | + | |
- | </ | + | |
- | собираем ядро | + | |
- | < | + | |
- | # make | + | |
- | </ | + | |
- | копируем новое ядро, System.map и .config в /boot | + | |
- | < | + | |
- | # cp ./ | + | |
- | # cp ./ | + | |
- | # cp ./.config / | + | |
- | </ | + | |
- | удаляем старые ссылки и создаем новые | + | |
- | < | + | |
- | # rm / | + | |
- | # rm / | + | |
- | # rm / | + | |
- | # ln -s / | + | |
- | # ln -s / | + | |
- | # ln -s / | + | |
- | </ | + | |
- | перезаписываем загрузчик | + | |
- | < | + | |
- | # lilo | + | |
- | </ | + | |
- | ставим заголовки ядра и перегружаемся с новым ядром | + | |
- | < | + | |
- | # make headers_install | + | |
- | # reboot | + | |
- | </ | + | |
- | собираем модуль ядра aufs.ko | + | |
- | < | + | |
- | # cd ~/ | + | |
- | # make | + | |
- | # make install | + | |
- | </ | + | |
- | <note tip> | + | |
- | По умолчанию модуль aufs.ko ставится в / | + | |
- | < | + | |
- | # mkdir -p / | + | |
- | # cp ./aufs.ko / | + | |
- | # rm / | + | |
- | # depmod -a | + | |
- | </ | + | |
- | </ | + | |
- | проверяем загружается ли модуль | + | |
- | < | + | |
- | # modprobe aufs | + | |
- | # lsmod | grep aufs | + | |
- | aufs 241031 | + | |
- | </ | + | |
- | модуль загружен и теперь собираем утилиты для aufs\\ | + | |
- | качаем исходники утилит | + | |
- | < | + | |
- | # cd ~ | + | |
- | # git clone git:// | + | |
- | # cd ./ | + | |
- | </ | + | |
- | переключаемся на нужную нам ветку | + | |
- | < | + | |
- | # git checkout origin/ | + | |
- | </ | + | |
- | собираем утилиты | + | |
- | < | + | |
- | # make CPPFLAGS=" | + | |
- | # make install | + | |
- | </ | + | |
- | <note tip> | + | |
- | На этом, подготовка к созданию livecd закончена и если вы планируете делать livecd с этого дистрибутива, | + | |
- | </ | + | |
- | ===Собирем готовые пакеты с новым ядром, модулем, | + | |
- | ==Собираем пакет с ядром== | + | |
- | ---- | + | |
- | < | + | |
- | # cd ~ | + | |
- | # mkdir kernel-aufs-huge-smp | + | |
- | # cd ./ | + | |
- | # mkdir kernel-aufs-huge-smp-3.10.17-smp | + | |
- | </ | + | |
- | скопируем ядро | + | |
- | < | + | |
- | # cp / | + | |
- | # cp / | + | |
- | # cp / | + | |
- | </ | + | |
- | создадим файл ./ | + | |
- | < | + | |
- | ( cd boot ; rm -rf config ) | + | |
- | ( cd boot ; ln -sf config-aufs-huge-smp-3.10.17-smp config ) | + | |
- | ( cd boot ; rm -rf System.map ) | + | |
- | ( cd boot ; ln -sf System.map-aufs-huge-smp-3.10.17-smp System.map ) | + | |
- | ( cd boot ; rm -rf vmlinuz ) | + | |
- | ( cd boot ; ln -sf vmlinuz-aufs-huge-smp-3.10.17-smp vmlinuz ) | + | |
- | </ | + | |
- | создадим файл ./ | + | |
- | < | + | |
- | # HOW TO EDIT THIS FILE: | + | |
- | # The "handy ruler" below makes it easier to edit a package description. | + | |
- | # up the first ' | + | |
- | # on the right side marks the last column you can put a character in. You must | + | |
- | # make exactly 11 lines for the formatting to be correct. | + | |
- | # customary to leave one space after the ':' | + | |
- | + | ||
- | |-----handy-ruler------------------------------------------------------| | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | kernel-aufs-huge-smp: | + | |
- | </ | + | |
- | создадим слакбилд ./ | + | |
- | <code bash> | + | |
- | #!/bin/sh | + | |
- | + | ||
- | PRGNAM=kernel-aufs-huge-smp | + | |
- | VERSION=${VERSION: | + | |
- | BUILD=${BUILD: | + | |
- | TAG=${TAG: | + | |
- | + | ||
- | if [ -z " | + | |
- | case "$( uname -m )" in | + | |
- | i?86) ARCH=i486 ;; | + | |
- | arm*) ARCH=arm ;; | + | |
- | *) ARCH=$( uname -m ) ;; | + | |
- | esac | + | |
- | fi | + | |
- | + | ||
- | CWD=$(pwd) | + | |
- | TMP=${TMP: | + | |
- | PKG=$TMP/ | + | |
- | OUTPUT=${OUTPUT: | + | |
- | + | ||
- | if [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | elif [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | elif [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX=" | + | |
- | else | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | fi | + | |
- | + | ||
- | set -e | + | |
- | + | ||
- | rm -rf $PKG | + | |
- | mkdir -p $TMP $PKG $OUTPUT | + | |
- | + | ||
- | mkdir -p $PKG/boot | + | |
- | cp -a $CWD/ | + | |
- | cp -a $CWD/ | + | |
- | cp -a $CWD/ | + | |
- | + | ||
- | cd $PKG | + | |
- | chown -R root:root . | + | |
- | chmod -R u+w, | + | |
- | + | ||
- | # Add docs to the proper location | + | |
- | mkdir -p $PKG/ | + | |
- | #cp -a README $PKG/ | + | |
- | + | ||
- | cat $CWD/ | + | |
- | + | ||
- | mkdir -p $PKG/ | + | |
- | cat $CWD/ | + | |
- | cat $CWD/ | + | |
- | + | ||
- | #cd $PKG | + | |
- | / | + | |
- | </ | + | |
- | собираем пакет | + | |
- | < | + | |
- | # ./ | + | |
- | </ | + | |
- | ==Собираем пакет с заголовками ядра== | + | |
- | < | + | |
- | # cd ~ | + | |
- | # mkdir kernel-aufs-headers | + | |
- | # cd ./ | + | |
- | </ | + | |
- | создадим файл ./ | + | |
- | < | + | |
- | ( cd usr/include ; rm -rf asm ) | + | |
- | ( cd usr/include ; ln -sf asm-x86 asm ) | + | |
- | </ | + | |
- | создадим файл ./ | + | |
- | < | + | |
- | # HOW TO EDIT THIS FILE: | + | |
- | # The "handy ruler" below makes it easier to edit a package description. | + | |
- | # up the first ' | + | |
- | # on the right side marks the last column you can put a character in. You must | + | |
- | # make exactly 11 lines for the formatting to be correct. | + | |
- | # customary to leave one space after the ':' | + | |
- | + | ||
- | | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | kernel-aufs-headers: | + | |
- | </ | + | |
- | создадим слакбилд ./ | + | |
- | <note tip> | + | |
- | При установке заголовков ядра "make headers_install" | + | |
- | </ | + | |
- | <code bash> | + | |
- | #!/bin/sh | + | |
- | + | ||
- | # | + | |
- | LINUXSRC=/ | + | |
- | # | + | |
- | + | ||
- | PRGNAM=kernel-aufs-headers | + | |
- | VERSION=${VERSION: | + | |
- | BUILD=${BUILD: | + | |
- | TAG=${TAG: | + | |
- | + | ||
- | if [ -z " | + | |
- | case "$( uname -m )" in | + | |
- | i?86) ARCH=i486 ;; | + | |
- | arm*) ARCH=arm ;; | + | |
- | *) ARCH=$( uname -m ) ;; | + | |
- | esac | + | |
- | fi | + | |
- | + | ||
- | CWD=$(pwd) | + | |
- | TMP=${TMP: | + | |
- | PKG=$TMP/ | + | |
- | OUTPUT=${OUTPUT: | + | |
- | + | ||
- | if [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | elif [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | elif [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX=" | + | |
- | else | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | fi | + | |
- | + | ||
- | set -e | + | |
- | + | ||
- | rm -rf $PKG | + | |
- | mkdir -p $TMP $PKG $OUTPUT | + | |
- | + | ||
- | cd $LINUXSRC | + | |
- | mkdir -p $PKG/usr | + | |
- | make headers_install INSTALL_HDR_PATH=$PKG/ | + | |
- | + | ||
- | ########################################## | + | |
- | mv $PKG/ | + | |
- | ########################################## | + | |
- | + | ||
- | # Add docs to the proper location | + | |
- | mkdir -p $PKG/ | + | |
- | + | ||
- | #cp -a COPYING README sample $PKG/ | + | |
- | + | ||
- | cat $CWD/ | + | |
- | + | ||
- | mkdir -p $PKG/ | + | |
- | cat $CWD/ | + | |
- | cat $CWD/ | + | |
- | + | ||
- | + | ||
- | cd $PKG | + | |
- | / | + | |
- | </ | + | |
- | собираем пакет | + | |
- | < | + | |
- | # ./ | + | |
- | </ | + | |
- | <note tip> | + | |
- | осталось собрать два пакета :-) | + | |
- | </ | + | |
- | ==Cобираем модуль ядра в пакет== | + | |
- | < | + | |
- | # cd ~ | + | |
- | # mkdir aufs3-standalone_SlackBuild | + | |
- | # cd ./ | + | |
- | </ | + | |
- | создадим папку для модуля и скопируем нужные файлы | + | |
- | < | + | |
- | # mkdir aufs3-standalone-3.10-20141215 | + | |
- | # cp -a ~/ | + | |
- | # cp -a ~/ | + | |
- | # cp -a ./ | + | |
- | # cp -a ~/ | + | |
- | # cp -a ~/ | + | |
- | # cp -a ~/ | + | |
- | # cp -a ~/ | + | |
- | </ | + | |
- | создадим файл ./ | + | |
- | < | + | |
- | # HOW TO EDIT THIS FILE: | + | |
- | # The "handy ruler" below makes it easier to edit a package description. | + | |
- | # up the first ' | + | |
- | # on the right side marks the last column you can put a character in. You must | + | |
- | # make exactly 11 lines for the formatting to be correct. | + | |
- | # customary to leave one space after the ':' | + | |
- | + | ||
- | |-----handy-ruler------------------------------------------------------| | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | aufs3-standalone: | + | |
- | </ | + | |
- | создадим слакбилд ./ | + | |
- | <code bash> | + | |
- | #!/bin/sh | + | |
- | + | ||
- | PRGNAM=aufs3-standalone | + | |
- | VERSION=${VERSION: | + | |
- | BUILD=${BUILD: | + | |
- | TAG=${TAG: | + | |
- | + | ||
- | if [ -z " | + | |
- | case "$( uname -m )" in | + | |
- | i?86) ARCH=i486 ;; | + | |
- | arm*) ARCH=arm ;; | + | |
- | *) ARCH=$( uname -m ) ;; | + | |
- | esac | + | |
- | fi | + | |
- | + | ||
- | CWD=$(pwd) | + | |
- | TMP=${TMP: | + | |
- | PKG=$TMP/ | + | |
- | OUTPUT=${OUTPUT: | + | |
- | + | ||
- | if [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | elif [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | elif [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX=" | + | |
- | else | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | fi | + | |
- | + | ||
- | set -e | + | |
- | + | ||
- | rm -rf $PKG | + | |
- | mkdir -p $TMP $PKG $OUTPUT | + | |
- | + | ||
- | mkdir -p $PKG/ | + | |
- | cp -a $CWD/ | + | |
- | + | ||
- | cd $PKG | + | |
- | chown -R root:root . | + | |
- | chmod -R u+w, | + | |
- | + | ||
- | + | ||
- | # Add docs to the proper location | + | |
- | mkdir -p $PKG/ | + | |
- | cd $CWD/ | + | |
- | cp -a COPYING Documentation README aufs3-base.patch aufs3-mmap.patch aufs3-standalone.patch $PKG/ | + | |
- | + | ||
- | cat $CWD/ | + | |
- | + | ||
- | mkdir -p $PKG/ | + | |
- | cat $CWD/ | + | |
- | #cat $CWD/ | + | |
- | + | ||
- | cd $PKG | + | |
- | / | + | |
- | </ | + | |
- | собираем пакет | + | |
- | < | + | |
- | # ./ | + | |
- | </ | + | |
- | ==собираем утилиты для модуля в пакет== | + | |
- | < | + | |
- | # cd ~ | + | |
- | # mkdir aufs-util_SlackBuild | + | |
- | # cd ./ | + | |
- | </ | + | |
- | создадим файл ./ | + | |
- | < | + | |
- | # HOW TO EDIT THIS FILE: | + | |
- | # The "handy ruler" below makes it easier to edit a package description. | + | |
- | # up the first ' | + | |
- | # on the right side marks the last column you can put a character in. You must | + | |
- | # make exactly 11 lines for the formatting to be correct. | + | |
- | # customary to leave one space after the ':' | + | |
- | + | ||
- | | + | |
- | aufs-util: util for kernel module aufs - http:// | + | |
- | aufs-util: | + | |
- | aufs-util: advanced multi layered unification filesystem | + | |
- | aufs-util: http:// | + | |
- | aufs-util: Junjiro R. Okajima | + | |
- | aufs-util: | + | |
- | aufs-util: | + | |
- | aufs-util: | + | |
- | aufs-util: | + | |
- | aufs-util: | + | |
- | aufs-util: | + | |
- | </ | + | |
- | создадим слакбилд ./ | + | |
- | <code bash> | + | |
- | #!/bin/sh | + | |
- | + | ||
- | # | + | |
- | MAKEDIR=/ | + | |
- | # | + | |
- | + | ||
- | PRGNAM=aufs-util | + | |
- | VERSION=${VERSION: | + | |
- | BUILD=${BUILD: | + | |
- | TAG=${TAG: | + | |
- | + | ||
- | if [ -z " | + | |
- | case "$( uname -m )" in | + | |
- | i?86) ARCH=i486 ;; | + | |
- | arm*) ARCH=arm ;; | + | |
- | *) ARCH=$( uname -m ) ;; | + | |
- | esac | + | |
- | fi | + | |
- | + | ||
- | CWD=$(pwd) | + | |
- | TMP=${TMP: | + | |
- | PKG=$TMP/ | + | |
- | OUTPUT=${OUTPUT: | + | |
- | + | ||
- | if [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | elif [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | elif [ " | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX=" | + | |
- | else | + | |
- | SLKCFLAGS=" | + | |
- | LIBDIRSUFFIX="" | + | |
- | fi | + | |
- | + | ||
- | set -e | + | |
- | + | ||
- | rm -rf $PKG | + | |
- | mkdir -p $TMP $PKG $OUTPUT | + | |
- | + | ||
- | cd $MAKEDIR | + | |
- | make install DESTDIR=$PKG | + | |
- | + | ||
- | + | ||
- | # Add docs to the proper location | + | |
- | mkdir -p $PKG/ | + | |
- | + | ||
- | cp -a COPYING README sample $PKG/ | + | |
- | + | ||
- | cat $CWD/ | + | |
- | + | ||
- | mkdir -p $PKG/ | + | |
- | cat $CWD/ | + | |
- | #cat $CWD/ | + | |
- | + | ||
- | ### | + | |
- | cd $PKG/ | + | |
- | for file in * | + | |
- | do | + | |
- | gzip ./$file | + | |
- | done | + | |
- | + | ||
- | cd $PKG/ | + | |
- | for file in * | + | |
- | do | + | |
- | gzip ./$file | + | |
- | done | + | |
- | ### | + | |
- | + | ||
- | cd $PKG | + | |
- | / | + | |
- | </ | + | |
- | собираем пакет | + | |
- | < | + | |
- | # ./ | + | |
- | </ | + | |
- | \\ | + | |
- | В результате сборки у нас появится 4 пакета, | + | |
- | < | + | |
- | # ls -l /tmp/ | grep aufs | + | |
- | -rw-r--r-- 1 root root 1669979 Sep 7 14:13 aufs-util-20141208-i486-1_krpsh.tgz | + | |
- | -rw-r--r-- 1 root root 181737 Sep 7 14:08 aufs3-standalone-3.10-20141215-i486-1_krpsh.tgz | + | |
- | -rw-r--r-- 1 root root 899340 Sep 7 13:51 kernel-aufs-headers-3.10.17-i486-1_krpsh.tgz | + | |
- | -rw-r--r-- 1 root root 6972133 Sep 7 13:27 kernel-aufs-huge-smp-3.10.17-smp-i486-1_krpsh.tgz | + | |
- | </ | + |