Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
playground:playground [11/09/2015 11:12] – [2-ой этап:] pashaplayground:playground [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 1: Строка 1:
-^   **Создание livecd с существующей системы**   ^ +======Playground======
- +
-<note tip> +
-  *в статье описан один из способов создания livecd со своими настройками +
-  *aufs собиралась модулем ядра +
-  *все действия производились на [[https://ru.wikipedia.org/wiki/Salix_OS|Salix 14.1]] и от пользователя root +
-</note> +
-**Написано по:**\\ +
-  *[[http://www.linux-live.org/|скрипты для создания livecd]] +
-  *[[http://aufs.sourceforge.net/|файловая система для livecd]] +
- +
-======Общая картина состоит из двух этапов:======+
-=====1-ый этап:===== +
-  - Создаем виртуальную машину, на которой собираем ядро с необходимыми патчами. +
-  - Собираем модуль ядра и утилиты к нему. +
-  - Перегружаемся с новым ядром, пробуем загрузить собранный молуль. +
-  - Если модуль загрузился, то собираем пакеты (по слакбилдам) с новым ядром, модулем, утилитами и заголовками ядра. +
-=====2-ой этап:===== +
-  - Создаем виртуальную машину и устанавливаем на нее минимальную установку Salix. Можно и не минимальную, главное чтобы Salix была той же версии, на которой проходил первый этап. +
-  - Устанавливаем созданные нами пакеты и грузимся с новым ядром. +
-  - Пробуем загрузить установленный нами модуль. +
-  - Если модуль загрузился, то настраиваем виртуалку как нам надо, т.е. ставим/удаляем нужный софт, производим настройку дистрибутива. +
-  - Создаем livecd с настроенной виртуалки. +
- +
-<note tip> +
-Можно обойтись и без второй виртуалки и создать livecd с виртуалки, на которой собирали ядро и модуль, предварительно удалив исходники ядра для уменьшения размера и каждый раз, когда понадобится новый livecd патчить ядро и собирать модуль. +
-Но, как мне кажется, удобней создать готовые пакеты с ядром, модулем, утилитами, заголовками ядра и накатывать их на свежую установку любимого дистрибутива Slackware (в данном случае Salix). +
-</note> +
- +
-======Подробное описание каждого этапа====== +
-=====1-ый этап:===== +
-На виртуалку ставим Salix 14.1 с набором пакетов CORE\\ +
-заходим на нее и обновляем список пакетов +
-<code> +
-# cd ~ +
-# slapt-get --update +
-</code> +
-ставим исходники ядра +
-<code> +
-# slapt-get -i kernel-source +
-</code> +
-ставим пакет bc (нужен для сборки ядра (не уверен), но даже если и не нужен, то лишним не будет) +
-<code> +
-# slapt-get -i bc +
-</code> +
-качаем исходники модуля aufs +
-<code> +
-# git clone git://git.code.sf.net/p/aufs/aufs3-standalone +
-# cd ./aufs3-standalone/ +
-</code> +
-переключаемся на нужную нам ветку +
-<note tip> +
-В README по выбору нужной ветки сказано, что нужно переключаться на ветку соответсвующую версии ядра. У нас версия ядра 3.10.17, веток для нее две: origin/aufs3.10 и origin/aufs3.10.x\\ +
-Казалось бы, нам нужна ветка origin/aufs3.10.x , но патчи из этой ветки не накладываются на ядро, поэтому мы берем ветку origin/aufs3.10, патчи из которой лажатся на наше ядро без проблем. +
-</note> +
-<code> +
-# git checkout origin/aufs3.10 +
-</code> +
-копируем патчи для ядра +
-<code> +
-# cp ./aufs3-base.patch /usr/src/linux/ +
-# cp ./aufs3-mmap.patch /usr/src/linux/ +
-# cp ./aufs3-standalone.patch /usr/src/linux/ +
-</code> +
-переходим в каталог с исходниками ядра и накатываем патчи +
-<code> +
-# cd /usr/src/linux/ +
-# patch -p1 < ./aufs3-base.patch +
-# patch -p1 < ./aufs3-mmap.patch +
-# patch -p1 < ./aufs3-standalone.patch +
-</code> +
-копируем конфиг ядра (патчи, что мы накатили выше, не трогают файл .config) +
-<code> +
-# cat /boot/config >/usr/src/linux/.config +
-</code> +
-собираем ядро +
-<code> +
-# make +
-</code> +
-копируем новое ядро, System.map и .config в /boot +
-<code> +
-# 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 +
-</code> +
-удаляем старые ссылки и создаем новые +
-<code> +
-# 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 +
-</code> +
-перезаписываем загрузчик +
-<code> +
-# lilo +
-</code> +
-ставим заголовки ядра и перегружаемся с новым ядром +
-<code> +
-# make headers_install +
-# reboot +
-</code> +
-собираем модуль ядра aufs.ko +
-<code> +
-# cd ~/aufs3-standalone/ +
-# make +
-# make install +
-</code> +
-<note tip> +
-По умолчанию модуль aufs.ko ставится в /lib/modules/3.10.17-smp/extra/aufs.ko, но скрипты для сборки livecd ищут его в /lib/modules/3.10.17-smp/kernel/fs/aufs, поэтому если вы планируете делать livecd с этой виртуалки, то надо положить модуль в нужное место. Если же вы не планируете делать livecd с этой виртуалки, то делать следующий шаг не обязательно. +
-<code> +
-# 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 +
-</code> +
-</note> +
-проверяем загружается ли модуль +
-<code> +
-# modprobe aufs +
-# lsmod | grep aufs +
-aufs                  241031  0  +
-</code> +
-модуль загружен и теперь собираем утилиты для aufs\\ +
-качаем исходники утилит +
-<code> +
-# cd ~ +
-# git clone git://git.code.sf.net/p/aufs/aufs-util +
-# cd ./aufs-util/ +
-</code> +
-переключаемся на нужную нам ветку +
-<code> +
-# git checkout origin/aufs3.9 +
-</code> +
-собираем утилиты +
-<code> +
-# make CPPFLAGS="-I /usr/src/linux/usr/include -I /root/aufs3-standalone/usr/include" +
-# make install +
-</code> +
-<note tip> +
-На этом, подготовка к созданию livecd закончена и если вы планируете делать livecd с этого дистрибутива,то можно настраивать дистрибутив как вам нужно и затем переходить к созданию livecd из второго этапа. +
-</note> +
-===Собирем готовые пакеты с новым ядром, модулем, утилитами и заголовками ядра=== +
-==Собираем пакет с ядром== +
----- +
-<code> +
-# cd ~ +
-# mkdir kernel-aufs-huge-smp +
-# cd ./kernel-aufs-huge-smp/ +
-# mkdir kernel-aufs-huge-smp-3.10.17-smp +
-</code> +
-скопируем ядро +
-<code> +
-# cp /boot/vmlinuz-aufs-huge-smp-3.10.17-smp ./kernel-aufs-huge-smp-3.10.17-smp/ +
-# cp /boot/System.map-aufs-huge-smp-3.10.17-smp ./kernel-aufs-huge-smp-3.10.17-smp/ +
-# cp /boot/config-aufs-huge-smp-3.10.17-smp ./kernel-aufs-huge-smp-3.10.17-smp/ +
-</code> +
-создадим файл ./doinst.sh +
-<code> +
-( 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 ) +
-</code> +
-создадим файл ./slack-desc  +
-<code> +
-# HOW TO EDIT THIS FILE: +
-# The "handy ruler" below makes it easier to edit a package description.  Line +
-# up the first '|' above the ':' following the base package name, and the '|' +
-# 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.  It's also +
-# customary to leave one space after the ':'+
- +
-                    |-----handy-ruler------------------------------------------------------| +
-kernel-aufs-huge-smp: kernel-aufs-huge-smp (aufs - http://aufs.sourceforge.net/+
-kernel-aufs-huge-smp:  +
-kernel-aufs-huge-smp: This is a Linux kernel with built-in support for most disk +
-kernel-aufs-huge-smp: controllers.  If you're looking for a more stripped down kernel +
-kernel-aufs-huge-smp: (this one contains everything but the kitchen sink ;-), then install +
-kernel-aufs-huge-smp: the kernel-generic-smp in the /boot directory along with an initrd to +
-kernel-aufs-huge-smp: load support for your boot device and filesystem.  For instructions +
-kernel-aufs-huge-smp: on the initrd, see README.initrd in the /boot directory. +
-kernel-aufs-huge-smp:  +
-kernel-aufs-huge-smp: SMP is "Symmetric multiprocessing", or multiple CPU/core support. +
-kernel-aufs-huge-smp:  +
-</code> +
-создадим слакбилд ./kernel-aufs-huge-smp.SlackBuild (не забываем сделать его исполняемым) +
-<code bash> +
-#!/bin/sh +
- +
-PRGNAM=kernel-aufs-huge-smp +
-VERSION=${VERSION:-3.10.17-smp} +
-BUILD=${BUILD:-1} +
-TAG=${TAG:-_krpsh} +
- +
-if [ -z "$ARCH" ]; then +
-  case "$( uname -m )" in +
-      i?86) ARCH=i486 ;; +
-      arm*) ARCH=arm ;; +
-         *) ARCH=$( uname -m ) ;; +
-  esac +
-fi +
- +
-CWD=$(pwd) +
-TMP=${TMP:-/tmp/krpsh} +
-PKG=$TMP/package-$PRGNAM +
-OUTPUT=${OUTPUT:-/tmp} +
- +
-if [ "$ARCH" = "i486" ]; then +
-  SLKCFLAGS="-O2 -march=i486 -mtune=i686" +
-  LIBDIRSUFFIX="" +
-elif [ "$ARCH" = "i686" ]; then +
-  SLKCFLAGS="-O2 -march=i686 -mtune=i686" +
-  LIBDIRSUFFIX="" +
-elif [ "$ARCH" = "x86_64" ]; then +
-  SLKCFLAGS="-O2 -fPIC" +
-  LIBDIRSUFFIX="64" +
-else +
-  SLKCFLAGS="-O2" +
-  LIBDIRSUFFIX="" +
-fi +
- +
-set -e +
- +
-rm -rf $PKG +
-mkdir -p $TMP $PKG $OUTPUT +
- +
-mkdir -p $PKG/boot +
-cp -a $CWD/$PRGNAM-$VERSION/System.map-aufs-huge-smp-3.10.17-smp $PKG/boot +
-cp -a $CWD/$PRGNAM-$VERSION/config-aufs-huge-smp-3.10.17-smp $PKG/boot +
-cp -a $CWD/$PRGNAM-$VERSION/vmlinuz-aufs-huge-smp-3.10.17-smp $PKG/boot +
- +
-cd $PKG +
-chown -R root:root . +
-chmod -R u+w,go+r-w,a-s . +
- +
-# Add docs to the proper location +
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +
-#cp -a README $PKG/usr/doc/$PRGNAM-$VERSION +
- +
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +
- +
-mkdir -p $PKG/install +
-cat $CWD/slack-desc > $PKG/install/slack-desc +
-cat $CWD/doinst.sh > $PKG/install/doinst.sh +
- +
-#cd $PKG +
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} +
-</code> +
-собираем пакет +
-<code> +
-# ./kernel-aufs-huge-smp.SlackBuild +
-</code> +
-==Собираем пакет с заголовками ядра== +
-<code> +
-# cd ~ +
-# mkdir kernel-aufs-headers +
-# cd ./kernel-aufs-headers/ +
-</code> +
-создадим файл ./doinst.sh +
-<code> +
-( cd usr/include ; rm -rf asm ) +
-( cd usr/include ; ln -sf asm-x86 asm ) +
-</code> +
-создадим файл ./slack-desc +
-<code> +
-# HOW TO EDIT THIS FILE: +
-# The "handy ruler" below makes it easier to edit a package description.  Line +
-# up the first '|' above the ':' following the base package name, and the '|' +
-# 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.  It's also +
-# customary to leave one space after the ':'+
- +
-                   |-----handy-ruler------------------------------------------------------| +
-kernel-aufs-headers: kernel-aufs-headers (aufs - http://aufs.sourceforge.net/+
-kernel-aufs-headers:  +
-kernel-aufs-headers: These are the include files from the Linux kernel. +
-kernel-aufs-headers:  +
-kernel-aufs-headers: You'll need these to compile most system software for Linux. +
-kernel-aufs-headers:  +
-kernel-aufs-headers:  +
-kernel-aufs-headers:  +
-kernel-aufs-headers:  +
-kernel-aufs-headers:  +
-kernel-aufs-headers:  +
-</code> +
-создадим слакбилд ./kernel-aufs-headers.SlackBuild (не забываем сделать его исполняемым) +
-<note tip> +
-При установке заголовков ядра "make headers_install" папка "/usr/include/asm-x86" не создается, но создается папка "/usr/include/asm", а в slackware при установки пакета kernel-headers-3.10.17_smp-x86-3.txz папка "/usr/include/asm" является ссылкой на "/usr/include/asm-x86" и поэтому в слакбилде папка "/usr/include/asm" переименовывается в "/usr/include/asm-x86"  +
-</note> +
-<code bash> +
-#!/bin/sh +
- +
-#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +
-LINUXSRC=/usr/src/linux +
-#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +
- +
-PRGNAM=kernel-aufs-headers +
-VERSION=${VERSION:-3.10.17} +
-BUILD=${BUILD:-1} +
-TAG=${TAG:-_krpsh} +
- +
-if [ -z "$ARCH" ]; then +
-  case "$( uname -m )" in +
-      i?86) ARCH=i486 ;; +
-      arm*) ARCH=arm ;; +
-         *) ARCH=$( uname -m ) ;; +
-  esac +
-fi +
- +
-CWD=$(pwd) +
-TMP=${TMP:-/tmp/krpsh} +
-PKG=$TMP/package-$PRGNAM +
-OUTPUT=${OUTPUT:-/tmp} +
- +
-if [ "$ARCH" = "i486" ]; then +
-  SLKCFLAGS="-O2 -march=i486 -mtune=i686" +
-  LIBDIRSUFFIX="" +
-elif [ "$ARCH" = "i686" ]; then +
-  SLKCFLAGS="-O2 -march=i686 -mtune=i686" +
-  LIBDIRSUFFIX="" +
-elif [ "$ARCH" = "x86_64" ]; then +
-  SLKCFLAGS="-O2 -fPIC" +
-  LIBDIRSUFFIX="64" +
-else +
-  SLKCFLAGS="-O2" +
-  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/usr +
- +
-########################################## +
-mv $PKG/usr/include/asm $PKG/usr/include/asm-x86 +
-########################################## +
- +
-# Add docs to the proper location +
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +
- +
-#cp -a COPYING README sample $PKG/usr/doc/$PRGNAM-$VERSION +
- +
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +
- +
-mkdir -p $PKG/install +
-cat $CWD/slack-desc > $PKG/install/slack-desc +
-cat $CWD/doinst.sh > $PKG/install/doinst.sh +
- +
- +
-cd $PKG +
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} +
-</code> +
-собираем пакет +
-<code> +
-# ./kernel-aufs-headers.SlackBuild +
-</code> +
-<note tip> +
-осталось собрать два пакета :-) +
-</note> +
-==Cобираем модуль ядра в пакет== +
-<code> +
-# cd ~ +
-# mkdir aufs3-standalone_SlackBuild +
-# cd ./aufs3-standalone_SlackBuild/ +
-</code> +
-создадим папку для модуля и скопируем нужные файлы +
-<code> +
-# mkdir aufs3-standalone-3.10-20141215 +
-# cp -a ~/aufs3-standalone/Documentation ./aufs3-standalone-3.10-20141215/ +
-# cp -a ~/aufs3-standalone/COPYING ./aufs3-standalone-3.10-20141215/ +
-# cp -a ./aufs3-standalone-3.10-20141215/Documentation/filesystems/aufs/README ./aufs3-standalone-3.10-20141215/ +
-# cp -a ~/aufs3-standalone/aufs.ko ./aufs3-standalone-3.10-20141215/ +
-# cp -a ~/aufs3-standalone/aufs3-base.patch ./aufs3-standalone-3.10-20141215/ +
-# cp -a ~/aufs3-standalone/aufs3-mmap.patch ./aufs3-standalone-3.10-20141215/ +
-# cp -a ~/aufs3-standalone/aufs3-standalone.patch ./aufs3-standalone-3.10-20141215/ +
-</code> +
-создадим файл ./slack-desc +
-<code> +
-# HOW TO EDIT THIS FILE: +
-# The "handy ruler" below makes it easier to edit a package description.  Line +
-# up the first '|' above the ':' following the base package name, and the '|' +
-# 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.  It's also +
-# customary to leave one space after the ':'+
- +
-                |-----handy-ruler------------------------------------------------------| +
-aufs3-standalone: kernel module aufs - http://aufs.sourceforge.net/ +
-aufs3-standalone:  +
-aufs3-standalone: advanced multi layered unification filesystem +
-aufs3-standalone: http://aufs.sf.net +
-aufs3-standalone: Junjiro R. Okajima +
-aufs3-standalone:  +
-aufs3-standalone:  +
-aufs3-standalone:  +
-aufs3-standalone:  +
-aufs3-standalone:  +
-aufs3-standalone:  +
-</code> +
-создадим слакбилд ./aufs3-standalone.SlackBuild (не забываем сделать его исполняемым) +
-<code bash> +
-#!/bin/sh +
- +
-PRGNAM=aufs3-standalone +
-VERSION=${VERSION:-3.10-20141215} +
-BUILD=${BUILD:-1} +
-TAG=${TAG:-_krpsh} +
- +
-if [ -z "$ARCH" ]; then +
-  case "$( uname -m )" in +
-      i?86) ARCH=i486 ;; +
-      arm*) ARCH=arm ;; +
-         *) ARCH=$( uname -m ) ;; +
-  esac +
-fi +
- +
-CWD=$(pwd) +
-TMP=${TMP:-/tmp/krpsh} +
-PKG=$TMP/package-$PRGNAM +
-OUTPUT=${OUTPUT:-/tmp} +
- +
-if [ "$ARCH" = "i486" ]; then +
-  SLKCFLAGS="-O2 -march=i486 -mtune=i686" +
-  LIBDIRSUFFIX="" +
-elif [ "$ARCH" = "i686" ]; then +
-  SLKCFLAGS="-O2 -march=i686 -mtune=i686" +
-  LIBDIRSUFFIX="" +
-elif [ "$ARCH" = "x86_64" ]; then +
-  SLKCFLAGS="-O2 -fPIC" +
-  LIBDIRSUFFIX="64" +
-else +
-  SLKCFLAGS="-O2" +
-  LIBDIRSUFFIX="" +
-fi +
- +
-set -e +
- +
-rm -rf $PKG +
-mkdir -p $TMP $PKG $OUTPUT +
- +
-mkdir -p $PKG/lib/modules/$(uname -r)/kernel/fs/aufs +
-cp -a $CWD/$PRGNAM-$VERSION/aufs.ko $PKG/lib/modules/$(uname -r)/kernel/fs/aufs +
- +
-cd $PKG +
-chown -R root:root . +
-chmod -R u+w,go+r-w,a-s . +
- +
- +
-# Add docs to the proper location +
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +
-cd $CWD/$PRGNAM-$VERSION +
-cp -a COPYING Documentation README aufs3-base.patch aufs3-mmap.patch aufs3-standalone.patch $PKG/usr/doc/$PRGNAM-$VERSION +
- +
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +
- +
-mkdir -p $PKG/install +
-cat $CWD/slack-desc > $PKG/install/slack-desc +
-#cat $CWD/doinst.sh > $PKG/install/doinst.sh +
- +
-cd $PKG +
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} +
-</code> +
-собираем пакет +
-<code> +
-# ./aufs3-standalone.SlackBuild +
-</code> +
-==собираем утилиты для модуля в пакет== +
-<code> +
-# cd ~ +
-# mkdir aufs-util_SlackBuild +
-# cd ./aufs-util_SlackBuild/ +
-</code> +
-создадим файл ./slack-desc +
-<code> +
-# HOW TO EDIT THIS FILE: +
-# The "handy ruler" below makes it easier to edit a package description.  Line +
-# up the first '|' above the ':' following the base package name, and the '|' +
-# 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.  It's also +
-# customary to leave one space after the ':'+
- +
-         |-----handy-ruler------------------------------------------------------| +
-aufs-util: util for kernel module aufs - http://aufs.sourceforge.net/ +
-aufs-util:  +
-aufs-util: advanced multi layered unification filesystem +
-aufs-util: http://aufs.sf.net +
-aufs-util: Junjiro R. Okajima +
-aufs-util:  +
-aufs-util:  +
-aufs-util:  +
-aufs-util:  +
-aufs-util:  +
-aufs-util:  +
-</code> +
-создадим слакбилд ./aufs-util.SlackBuild (не забываем сделать его исполняемым) +
-<code bash> +
-#!/bin/sh +
- +
-#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +
-MAKEDIR=/root/aufs-util +
-#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +
- +
-PRGNAM=aufs-util +
-VERSION=${VERSION:-20141208} +
-BUILD=${BUILD:-1} +
-TAG=${TAG:-_krpsh} +
- +
-if [ -z "$ARCH" ]; then +
-  case "$( uname -m )" in +
-      i?86) ARCH=i486 ;; +
-      arm*) ARCH=arm ;; +
-         *) ARCH=$( uname -m ) ;; +
-  esac +
-fi +
- +
-CWD=$(pwd) +
-TMP=${TMP:-/tmp/krpsh} +
-PKG=$TMP/package-$PRGNAM +
-OUTPUT=${OUTPUT:-/tmp} +
- +
-if [ "$ARCH" = "i486" ]; then +
-  SLKCFLAGS="-O2 -march=i486 -mtune=i686" +
-  LIBDIRSUFFIX="" +
-elif [ "$ARCH" = "i686" ]; then +
-  SLKCFLAGS="-O2 -march=i686 -mtune=i686" +
-  LIBDIRSUFFIX="" +
-elif [ "$ARCH" = "x86_64" ]; then +
-  SLKCFLAGS="-O2 -fPIC" +
-  LIBDIRSUFFIX="64" +
-else +
-  SLKCFLAGS="-O2" +
-  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/usr/doc/$PRGNAM-$VERSION +
- +
-cp -a COPYING README sample $PKG/usr/doc/$PRGNAM-$VERSION +
- +
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild +
- +
-mkdir -p $PKG/install +
-cat $CWD/slack-desc > $PKG/install/slack-desc +
-#cat $CWD/doinst.sh > $PKG/install/doinst.sh +
- +
-###--------gz man page--------- +
-cd $PKG/usr/share/man/man5 +
-for file in *  +
-do +
- gzip ./$file  +
-done +
- +
-cd $PKG/usr/share/man/man8 +
-for file in *  +
-do +
- gzip ./$file  +
-done +
-###---------------------------- +
- +
-cd $PKG +
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} +
-</code> +
-собираем пакет +
-<code> +
-# ./aufs-util.SlackBuild +
-</code> +
-\\ +
-В результате сборки у нас появится 4 пакета, которые мы и будем устанавливать на втором этапе. +
-<code> +
-# 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 +
-</code> +
-=====2-ой этап:===== +
-На новую виртуалку ставим Salix 14.1 с набором пакетов CORE и уcтанавливаем созданные нами пакеты +
-<code> +
-# installpkg aufs-util-20141208-i486-1_krpsh.tgz +
-# installpkg aufs3-standalone-3.10-20141215-i486-1_krpsh.tgz +
-# installpkg kernel-aufs-headers-3.10.17-i486-1_krpsh.tgz +
-# installpkg kernel-aufs-huge-smp-3.10.17-smp-i486-1_krpsh.tgz +
-</code> +
-создаем modules.dep +
-<code> +
-# depmod -a +
-</code> +
-обновляем загрузчик +
-<code> +
-# lilo +
-</code> +
-перегружаемся с новым ядром и пробуем загрузить модуль +
-<code> +
-# modprobe aufs +
-# lsmod | grep aufs +
-aufs                  241031  0  +
-</code> +
-Если модуль загрузился, то настраиваем дистрибутив как надо, т. е. ставим/удаляем нужный софт, производим настройку конфигов.\\ +
-Как только все настроили и проверили **создаем livecd:**\\ +
-\\ +
-установим зависимость скриптов (squashfs-tools) +
-<code> +
-# wget http://slackonly.com/pub/packages/14.1-x86/system/squashfs-tools/squashfs-tools-4.2-i486-1_slack.txz +
-# installpkg squashfs-tools-4.2-i486-1_slack.txz +
-</code> +
-качаем скрипты для сбрки livecd +
-<code> +
-# cd /tmp +
-# wget -O Linux_Live_Kit_v1_8.tar.gz https://github.com/Tomas-M/linux-live/tarball/v1.8 +
-# tar -xzvf ./Linux_Live_Kit_v1_8.tar.gz +
-# cd ./Tomas-M-linux-live-783a0bb/ +
-</code> +
-<note tip> +
-На скрипт ./initramfs/initramfs_create нужно наложить патч, который учитывает, что aufs собран модулем т.к. исходный скрипт считает, что aufs входит в состав ядра +
-</note> +
-создадим файл ./initramfs/add_mod_aufs.patch +
-<code diff> +
---- ./a/initramfs_create 2015-09-04 09:19:09.200234897 +0300 +
-+++ ./b/initramfs_create 2015-09-03 14:04:39.000000000 +0300 +
-@@ -68,6 +68,9 @@ +
-  +
- # TODO: add all comon filesystems which are NOT compiled in kernel already +
- copy_including_deps /$LMK/kernel/fs/squashfs +
-+###### krpsh ########################### +
-+copy_including_deps /$LMK/kernel/fs/aufs +
-+######################################## +
- copy_including_deps /$LMK/kernel/drivers/staging/zsmalloc # needed by zram +
- copy_including_deps /$LMK/kernel/drivers/staging/zram +
- copy_including_deps /$LMK/kernel/drivers/block/loop.* +
-</code> +
-наложим патч +
-<code> +
-# cd ./initramfs/ +
-# patch -p2 < ./add_mod_aufs.patch +
-# cd .. +
-</code> +
-создадим livecd +
-<code> +
-# ./build +
-</code> +
-в результате у нас создадутся два файла +
-<code> +
-# ls -lh /tmp/ | grep mylinux +
--rw-r--r-- 1 root root 256M Sep  7 15:44 mylinux-i686.iso +
--rw-r--r-- 1 root root 256M Sep  7 15:44 mylinux-i686.zip +
-</code> +
-mylinux-i686.iso - для записи на cd диск\\ +
-mylinux-i686.zip - для создания загрузочной флешки (не пробовал)\\ +
-\\ +
-степень сжатия очень хорошая +
-исходный размер системы с которой делался licecd +
-<code> +
-# df -h +
-Filesystem      Size  Used Avail Use% Mounted on +
-/dev/sda1       4.4G  1.1G  3.1G  25% / +
-tmpfs           241M      241M   0% /dev/shm +
-</code> +
-т.е. исходный размер 1.1G , а livecd получился 256M +
- +
-======Заключение====== +
-Вы можете подумать, а для чего создавать свой livecd, когда есть куча готовых "живых" дистрибутивов под любые нужды. Причины могут быть самыми разными: от "мне так хочется" до "есть свободное время"+
-Я же, использую созданный таким образом livecd на бездисковом серваке, который раздает по iscsi жесткие диски для камер наблюдения.\\ +
-\\ +
-При загрузки с этого livecd можно устанавливать пакеты и менять конфиги, но как вы понимаете, все изменения сохраняются до первой перезагрузки. +
-И поэтому, например для конфигов, можно использовать флешку, поскольку конфиги в основном читаются в момент старта программы, то флешка будет почти вечной при условии не частого изменения конфигов и перезагрузки сервака 1-2 раза в год.+
Навигация
Печать/экспорт
QR Code
QR Code playground:playground (generated for current page)