Тема: LinuxFromScratch!
Угу, вот это и нужно ставить;)
Начнём-с!
Офф. сайт: http://www.linuxfromscratch.org
Перевод книги(немного устаревший):http://lfs-ru.nm.ru/lfs/prologue/preface.html
Там разберётесь:D
У меня возникли некоторые прблемы при сборке, но с 23(!) раза она у меня заработала! По-большей части я игрался и проверял разные способы, это доставило мне неописуе... [s]мый геморрой[/s] мое удовольствие;) И я получил дополнительные знания. Это хорошо. Чтобы вам не повторять моих ошибок я опишу процесс установки полностью и заострю внимание на некоторых местах, несовсем ясно описанных в книге.
Нам понадобится около трёх гигабайт свободного места под исходники и ещё столько-же под саму систему, причем саму систему желательно сразу располагать на отдельном разделе. Цифры конечно завышены, но этого должно хватить и это избавит вас от сложностей при установке. На заметку: я обошёлся где-то гигабайтом суммарно. Так что всё в ваших руках;)
Зарегистрируемся как суперпользователь(root):
su root
Пусть раздел под систему -- /dev/sda3
Тогда сделаем так:
export LFS=/mnt/lfs
mkdir -pv $LFS
mount -v /dev/sda3 $LFS
Создадим директорию под исходники(не забываем о свободном месте):
mkdir -pv /home/sources
chmod -v a+wt /home/sources
Выполним следующее:
mkdir -v $LFS/tools
ln -sv $LFS/tools /
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
chown -v lfs $LFS/tools
chown -v lfs /home/sources
su - lfs
Теперь вы пользователь lfs;)
Настроим окружение:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
source ~/.bash_profile
Введите:
echo $LFS
Вывод должен быть типа:
LFS=/mnt/lfs
Если нет, то вы допустили где-то ошибку... заново всё!
Теперь идём в директорию под исходники и методично всё распаковываем...
cd /home/sources
tar -xvf /путь/к/исходникам/нужный_пакет.tar.gz
Список пакетов описан в части 3.2 книги, но(!) они вам нужны не все! Скачивать скорее всего нет необходимости -- диск вы возьмёте у меня;) там есть всё необходимое:D
О необходимости пакетов вы будете узнавать по мере установки.
ВАЖНО! Распаковывать вы ДОЛЖНЫ, от имени пользователя lfs, т.е. не переключая консоль.
Сделаем так:
cd /home/sources
tar -xvf /lfs-sources/binutils-2.17.tar.bz2
tar -xvf /lfs-sources/gcc-4.1.2.tar.bz2
tar -xvf /lfs-sources/linux-2.6.22.5.tar.bz2
tar -xvf /lfs-sources/glibc-2.5.1.tar.bz2
tar -xvf /lfs-sources/ncurses-5.6.tar.gz
tar -xvf /lfs-sources/bash-3.2.tar.gz
tar -xvf /lfs-sources/bzip2-1.0.4.tar.gz
tar -xvf /lfs-sources/coreutils-6.9.tar.bz2
tar -xvf /lfs-sources/diffutils-2.8.1.tar.gz
tar -xvf /lfs-sources/findutils-4.2.31.tar.gz
tar -xvf /lfs-sources/gawk-3.1.5.tar.bz2
tar -xvf /lfs-sources/gettext-0.16.1.tar.gz
tar -xvf /lfs-sources/grep-2.5.1a.tar.bz2
tar -xvf /lfs-sources/gzip-1.3.12.tar.gz
tar -xvf /lfs-sources/make-3.81.tar.bz2
tar -xvf /lfs-sources/patch-2.5.4.tar.gz
tar -xvf /lfs-sources/perl-5.8.8.tar.bz2
tar -xvf /lfs-sources/sed-4.1.5.tar.gz
tar -xvf /lfs-sources/tar-1.18.tar.bz2
tar -xvf /lfs-sources/texinfo-4.9.tar.bz2
tar -xvf /lfs-sources/util-linux-2.12r.tar.bz2
Вот, распаковались... при распаковке не должно возникнуть ни одной ошибки! Если они возникли, значит вы НЕВНИМАТЕЛЬНО выполнили мои предписания.
Теперь установка, закроем глаза и наберём в консоле..... что-то наберём....:D
Во! Это:
cd binutils-2.17
mkdir -v ../binutils-build
cd ../binutils-build
CC="gcc -B/usr/bin/" ../binutils-2.17/configure \
--prefix=/tools --disable-nls --disable-werror
make && make install
Кстати "\" означает переход на следующую строку, желательно "--prefix=/tools --disable-nls --disable-werror " перенести на предидущую строку, чтобы вся надпись была одной строкой.
make -C ld clean
make -C ld LIB_PATH=/tools/lib
cp -v ld/ld-new /tools/bin
mkdir -v ../gcc-build
cd ../gcc-build
CC="gcc -B/usr/bin/" ../gcc-4.1.2/configure --prefix=/tools \
--with-local-prefix=/tools --disable-nls --enable-shared \
--enable-languages=c
make bootstrap
make install
ln -vs gcc /tools/bin/cc
cd ../linux-2.6.22.5
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /tools/include
mkdir -v ../glibc-build
cd ../glibc-build
../glibc-2.5.1/configure --prefix=/tools \
--disable-profile --enable-add-ons \
--enable-kernel=2.6.0 --with-binutils=/tools/bin \
--without-gd --with-headers=/tools/include \
--without-selinux
make
mkdir -v /tools/etc
touch /tools/etc/ld.so.conf
make install
mv -v /tools/bin/{ld,ld-old}
mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld
cd /home/sources
rm -rf /home/sources/{gcc-build,glibc-build,binutils-build}
GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include &&
find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &&
rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &&
unset GCC_INCLUDEDIR
cd /home/sources/gcc-4.1.2
cp -v gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
cp -v gcc/Makefile.in{,.tmp}
sed 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \
> gcc/Makefile.in
patch -Np1 -i /lfs-sources/gcc-4.1.2-specs-1.patch
mkdir -v ../gcc-build
cd ../gcc-build
../gcc-4.1.2/configure --prefix=/tools \
--with-local-prefix=/tools --enable-clocale=gnu \
--enable-shared --enable-threads=posix \
--enable-__cxa_atexit --enable-languages=c,c++ \
--disable-libstdcxx-pch
make && make install
mkdir -v ../binutils-build
cd ../binutils-build
../binutils-2.17/configure --prefix=/tools \
--disable-nls --with-lib-path=/tools/lib
make && make install
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin
cd /home/sources/ncurses-5.6
./configure --prefix=/tools --with-shared \
--without-debug --without-ada --enable-overwrite
make && make install
cd /home/sources/bash-3.2
patch -Np1 -i /lfs-sources/bash-3.2-fixes-5.patch
./configure --prefix=/tools --without-bash-malloc
make && make install
ln -vs bash /tools/bin/sh
ВотЬ... консоль теперь есть:) Кстати рекомендую проверять офф. сайт проекна GNU на наличие новых патчей для bash'а:D
cd /home/sources/bzip2-1.0.4
make && make PREFIX=/tools install
cd /home/sources/coreutils-6.9
./configure --prefix=/tools && make && make install && cp -v src/su /tools/bin/su-tools
__________________________________________________________
| |
| Так! Я есть пошёл:D Скоро приду;) |
|_________________________________________________________|
Отредактировано wyldrodney (2007-12-04 16:00:56)