Создаем свой Линукс-дистрибутив
Xakep, номер #045, стр. 045-054-3 ./configure --enable-static-link --prefix=$LFS/usr --bindir=$LFS/bin --with-curses && make && make install && cd $LFS/bin && ln -sf bash sh Точно таким же образом устанавливаются и остальные программы: binutils, bzip2, diffutils, fileutils, gawk, gcc, grep, gzip, linux kernel, make, patch, sed, sh-utils, tar, texinfo, textutils. Инструкции по установке всего этого есть в LFS-book. После этого создаем файлы passwd и group, монтируем файловую систему proc. Все. Первый этап установки закончен. Этап второй На этом этапе мы должны установить одну из самых главных библиотек - glibc, и после этого уже динамически перекомпилить уже установленные программы и добавить некоторые новые. Для начала создадим профиль рута: cat > $LFS/root/.bash_profile << "EOF" # Begin /root/.bash_profile PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin export PS1 PATH # End /root/.bash_profile EOF Теперь самое время залогиниться в нашу новую систему: cd $LFS && chroot $LFS /usr/bin/env -i HOME=/root \ TERM=$TERM /bin/bash --login Теперь в строке приглашения вместо имени стоит "I have no name!". Это нормально, просто мы еще не установили glibc. После этого меняем владельца всей нашей LFS-партиции на рута: cd / && chown 0.0 . proc && chown -R 0.0 bin boot dev etc home lib mnt opt root sbin tmp usr var Мы используем 0.0 вместо root.root, так как мы еще не установили glibc. Устанавливаем glibc: mknod -m 0666 /dev/null c 1 3 && touch /etc/ld.so.conf && cp malloc/Makefile malloc/Makefile.backup && sed 's%\$(PERL)%/usr/bin/perl%' malloc/Makefile.backup > malloc/Makefile && cp login/Makefile login/Makefile.backup && sed 's/root/0/' login/Makefile.backup > login/Makefile && mkdir ../glibc-build && cd ../glibc-build && ../glibc-2.2.5/configure --prefix=/usr --enable-add-ons --libexecdir=/usr/bin && echo "cross-compiling = no" > configparms && make && make install && make localedata/install-locales && exec /bin/bash --login После этого в строке приглашения появляется заветное root, и мы можем динамически перекомпилить уже установленные программы и некоторые новые: install-log, makedev, man-pages, findutils, gawk, ncurses, vim, gcc, bison, less, groff, man, perl, m4, texinfo, autoconf, automake, bash, flex, file, libtool, bin86, binutils, bzip2, ed, gettext, kbd, diffutils, e2fsprogs, fileutils, grep, gzip, lilo, make, modutils, netkitbase, patch, procinfo, procps, psmisc, reiserfsprogs, sed, sh-utils, net-tools, shadow, sysklogd, sysvinit, tar, textutils, util-linux, lfs-bootscripts. Обращаю внимание, что после компиляции glibc устанавливаем install-log. Это я добавил от себя, в LFS-book этого нет, но в дальнейшем это сильно облегчит жизнь. Взять его можно здесь: http://prdownload.sourceforge.net/install-log/install-log-1.9.tar.bz2 Смело устанавливаем: make && cp install-log /usr/bin && cp install-log.1 /usr/share/man/man1 && cp install-log.rc /etc && mkdir /var/install-logs && touch /var/install-logs/.timestamp После установки каждой программы вызывай install-log filename, и в директории /var/install-logs получаем в директории /var/install-logs текстовый файл с именем filename, содержащий имена установленных файлов. Теперь создаем профиль редактора vim, конфигурируем glibc, устанавливаем системное время, конфигурируем динамическую загрузку библиотек, демон syslogd, shadow, sysvinit, клавиатуру, сеть и т.д. После этого компилируем ядро, добавляем его в LILO и получаем свежеустановленный и вполне работоспособный Linux. Инструкция по сборке написана нормально, и при минимальном знании английского языка ее можно понять. И еще: по умолчанию LFS совершенно небезопасен =/, поэтому этому аспекту надо уделить повышенное внимание. |