从头开始构建LINUX [LFS 脚本]
脚本共享在这 http://pan.baidu.com/s/1nt6yiH7
version-check.sh : 这个是检查HOST机器的软件依赖情况
host-dep.sh:针对ubuntu10_64的缺少的包的安装【开发环境已安装】
comp.sh:LFS7.5的图书大量的编译代码的整理脚本 ,可参数运行,如 ./comp.sh -s=5.1表示对应章节的执行步骤
如下是comp.sh的内容
#!/bin/bash
:<<EOF
安装依赖的包在这些独立的文件中,不用独立下载
ftp://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-7.5.tar
http://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-7.5.tar
EOF
export LFS=/mnt/lfs
#虚机上make并发存在死机的情况,不用
#export MAKEFLAGS="-j 2"
STEP=1
for i in "$@"
do
case $i in
-s=*|--step=*)
STEP="${i#*=}"
shift
;;
esac
done;
#chap2
if [[ $STEP = "2" ]]; then
mkdir -pv $LFS
mount -v -t ext4 /dev/sdb1 $LFS
/sbin/swapon -v /dev/sdb2
#Add to /etc/fstab
#/dev/sdb1 /mnt/lfs ext4 defaults 0 0
fi
#chap3
if [[ $STEP = "3" ]]; then
mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
pushd $LFS/sources
#wget -i wget-list -P $LFS/sources
popd
fi
#chap4
if [[ $STEP = "4" ]]; then
mkdir -v $LFS/tools
ln -sv $LFS/tools /
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
su - lfs
fi
if [[ $STEP = "4.1" ]]; then
chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
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
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF
#source ~/.bash_profile
fi
<<EOF
!USE lfs user
a. Using the tar program, extract the package to be built. In Chapter 5, ensure you are the lfs user
when extracting the package.
b. Change to the directory created when the package was extracted.
c. Follow the book's instructions for building the package.
d. Change back to the sources directory.
e. Delete the extracted source directory and any <package>-build directories that were created
in the build process unless instructed otherwise.
EOF
#chap5
if [[ $STEP = "5" ]]; then
case $(uname -m) in
x86_64)
mkdir -v /tools/lib && ln -sv lib /tools/lib64
;;
esac
fi
#Binutils
#-----------------
pushd $LFS/sources
if [[ $STEP = "5.1" ]]; then
tar xjf binutils-2.24.tar.bz2
mkdir -v binutils-build
pushd binutils-build
../binutils-2.24/configure \
--prefix=/tools \
--with-sysroot=$LFS \
--with-lib-path=/tools/lib \
--target=$LFS_TGT \
--disable-nls \
--disable-werror
make
make install
popd
fi
#GCC
if [[ $STEP = "5.2" ]]; then
tar xjf gcc-4.8.2.tar.bz2
#configure
cd gcc-4.8.2
tar -Jxf ../mpfr-3.1.2.tar.xz
mv -v mpfr-3.1.2 mpfr
tar -Jxf ../gmp-5.1.3.tar.xz
mv -v gmp-5.1.3 gmp
tar -zxf ../mpc-1.0.2.tar.gz
mv -v mpc-1.0.2 mpc
for file in \
$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv $file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
-e 's@/usr@/tools@g' $file.orig > $file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
touch $file.orig
done
sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
cd ..
#build
mkdir -v gcc-build
cd gcc-build
../gcc-4.8.2/configure \
--target=$LFS_TGT \
--prefix=/tools \
--with-sysroot=$LFS \
--with-newlib \
--without-headers \
--with-local-prefix=/tools \
--with-native-system-header-dir=/tools/include \
--disable-nls \
--disable-shared \
--disable-multilib \
--disable-decimal-float \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libitm \
--disable-libmudflap \
--disable-libquadmath \
--disable-libsanitizer \
--disable-libssp \
--disable-libstdc++-v3 \
--enable-languages=c,c++ \
--with-mpfr-include=$(pwd)../gcc-4.8.2/mpfr/src \
--with-mpfr-lib=$(pwd)/mpfr/src/.libs
make #-j
make install
ln -sv libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/'`
cd ..
fi
#LINUX HEADER
if [[ $STEP = "5.3" ]]; then
tar xf linux-3.13.3.tar.xz
cd linux-3.13.3
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /tools/include
cd ..
fi
#GLIBC
if [[ $STEP = "5.4" ]]; then
tar xf glibc-2.19.tar.xz
cd glibc-2.19
if [ ! -r /usr/include/rpc/types.h ]; then
su -c 'mkdir -pv /usr/include/rpc'
su -c 'cp -v sunrpc/rpc/*.h /usr/include/rpc'
fi
cd ..
mkdir -v glibc-build
cd glibc-build
../glibc-2.19/configure \
--prefix=/tools \
--host=$LFS_TGT \
--build=$(../glibc-2.19/scripts/config.guess) \
--disable-profile \
--enable-kernel=2.6.32 \
--with-headers=/tools/include \
libc_cv_forced_unwind=yes \
libc_cv_ctors_header=yes \
libc_cv_c_cleanup=yes
make
make install
cd ..
fi
#libstdc++ [of gcc]
if [[ $STEP = "5.5" ]]; then
cd gcc-build
../gcc-4.8.2/libstdc++-v3/configure \
--host=$LFS_TGT \
--prefix=/tools \
--disable-multilib \
--disable-shared \
--disable-nls \
--disable-libstdcxx-threads \
--disable-libstdcxx-pch \
--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/4.8.2
make
make install
cd ..
fi
#Binutils-2.24 - Pass 2
if [[ $STEP = "5.9" ]]; then
rm -rf binutils-build
rm -rf binutils-2.24
tar xjf binutils-2.24.tar.bz2
mkdir -v binutils-build
cd binutils-build
CC=$LFS_TGT-gcc \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../binutils-2.24/configure \
--prefix=/tools \
--disable-nls \
--with-lib-path=/tools/lib \
--with-sysroot
make
make install
# prepare the linker for the “Re-adjusting” phase in
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin
cd ..
fi
#GCC-4.8.2 - Pass 2
if [[ $STEP = "5.10" ]]; then
rm -rf gcc-4.8.2
tar xjf gcc-4.8.2.tar.bz2
cd gcc-4.8.2
tar -Jxf ../mpfr-3.1.2.tar.xz
mv -v mpfr-3.1.2 mpfr
tar -Jxf ../gmp-5.1.3.tar.xz
mv -v gmp-5.1.3 gmp
tar -zxf ../mpc-1.0.2.tar.gz
mv -v mpc-1.0.2 mpc
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h
case `uname -m` in
i?86) sed -i 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in ;;
esac
for file in \
$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv $file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
-e 's@/usr@/tools@g' $file.orig > $file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
touch $file.orig
done
cd ..
#build
rm -rf gcc-build
mkdir -v gcc-build
cd gcc-build
CC=$LFS_TGT-gcc \
CXX=$LFS_TGT-g++ \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../gcc-4.8.2/configure \
--prefix=/tools \
--with-local-prefix=/tools \
--with-native-system-header-dir=/tools/include \
--enable-clocale=gnu \
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
--enable-languages=c,c++ \
--disable-libstdcxx-pch \
--disable-multilib \
--disable-bootstrap \
--disable-libgomp \
--with-mpfr-include=$(pwd)/../gcc-4.8.2/mpfr/src \
--with-mpfr-lib=$(pwd)/mpfr/src/.libs
make
make install
ln -sv gcc /tools/bin/cc
echo 'main(){}' > dummy.c
cc dummy.c
readelf -l a.out | grep ': /tools'
#rm -v dummy.c a.out
cd ..
fi
#5.11. Tcl-8.6.1
if [[ $STEP = "5.11" ]]; then
tar xzf tcl8.6.1-src.tar.gz
cd tcl8.6.1
cd unix
./configure --prefix=/tools
make
TZ=UTC make test
make install
chmod -v u+w /tools/lib/libtcl8.6.so
make install-private-headers
ln -sv tclsh8.6 /tools/bin/tclsh
cd ..
cd ..
fi
#5.12. Expect-5.45
if [[ $STEP = "5.12" ]]; then
tar xzf expect5.45.tar.gz
cd expect5.45
cp -v configure{,.orig}
sed 's:/usr/local/bin:/bin:' configure.orig > configure
./configure --prefix=/tools \
--with-tcl=/tools/lib \
--with-tclinclude=/tools/include
make
make test
make SCRIPTS="" install
cd ..
fi
#5.13. DejaGNU-1.5.1
if [[ $STEP = "5.13" ]]; then
tar xzf dejagnu-1.5.1.tar.gz
cd dejagnu-1.5.1
./configure --prefix=/tools
make install
make check
cd ..
fi
#5.14. Check-0.9.12
if [[ $STEP = "5.14" ]]; then
tar xzf check-0.9.12.tar.gz
cd check-0.9.12
PKG_CONFIG= ./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.15. Ncurses-5.9
if [[ $STEP = "5.15" ]]; then
tar xzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --prefix=/tools \
--with-shared \
--without-debug \
--without-ada \
--enable-widec \
--enable-overwrite
make
make install
cd ..
fi
#5.16. Bash-4.2
if [[ $STEP = "5.16" ]]; then
tar xzf bash-4.2.tar.gz
cd bash-4.2
patch -Np1 -i ../bash-4.2-fixes-12.patch
./configure --prefix=/tools --without-bash-malloc
make
make tests
make install
ln -sv bash /tools/bin/sh
cd ..
fi
#5.17. Bzip2-1.0.6
if [[ $STEP = "5.17" ]]; then
tar bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make
make PREFIX=/tools install
cd ..
fi
#5.18. Coreutils-8.22
if [[ $STEP = "5.18" ]]; then
tar -Jxf coreutils-8.22.tar.xz
cd coreutils-8.22
./configure --prefix=/tools --enable-install-program=hostname
make
make RUN_EXPENSIVE_TESTS=yes check
make install
cd ..
fi
#5.19. Diffutils-3.3
if [[ $STEP = "5.19" ]]; then
tar -Jxf diffutils-3.3.tar.xz
cd diffutils-3.3
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.20. File-5.17
if [[ $STEP = "5.20" ]]; then
tar xzf file-5.17.tar.gz
cd file-5.17
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.21. Findutils-4.4.2
if [[ $STEP = "5.21" ]]; then
tar xzf findutils-4.4.2.tar.gz
cd findutils-4.4.2
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.22. Gawk-4.1.0
if [[ $STEP = "5.22" ]]; then
tar -Jxf gawk-4.1.0.tar.xz
cd gawk-4.1.0
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.23. Gettext-0.18.3.2
if [[ $STEP = "5.23" ]]; then
tar xzf gettext-0.18.3.2.tar.gz
cd gettext-0.18.3.2
cd gettext-tools
EMACS="no" ./configure --prefix=/tools --disable-shared
make -C gnulib-lib
make -C src msgfmt
make -C src msgmerge
make -C src xgettext
cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin
cd ..
fi
#5.24. Grep-2.16
if [[ $STEP = "5.24" ]]; then
tar -Jxf grep-2.16.tar.xz
cd grep-2.16
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.25. Gzip-1.6
if [[ $STEP = "5.25" ]]; then
tar -Jxf gzip-1.6.tar.xz
cd gzip-1.6
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.26. M4-1.4.17
if [[ $STEP = "5.26" ]]; then
tar -Jxf m4-1.4.17.tar.xz
cd m4-1.4.17
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.27. Make-4.0
if [[ $STEP = "5.27" ]]; then
tar xjf make-4.0.tar.bz2
cd make-4.0
./configure --prefix=/tools --without-guile
make
make check
make install
cd ..
fi
#5.28. Patch-2.7.1
if [[ $STEP = "5.28" ]]; then
tar -Jxf patch-2.7.1.tar.xz
cd patch-2.7.1
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.29. Perl-5.18.2
if [[ $STEP = "5.29" ]]; then
tar xjf perl-5.18.2.tar.bz2
cd perl-5.18.2
patch -Np1 -i ../perl-5.18.2-libc-1.patch
sh Configure -des -Dprefix=/tools
make
cp -v perl cpan/podlators/pod2man /tools/bin
mkdir -pv /tools/lib/perl5/5.18.2
cp -Rv lib/* /tools/lib/perl5/5.18.2
cd ..
fi
#5.30. Sed-4.2.2
if [[ $STEP = "5.30" ]]; then
tar xjf sed-4.2.2.tar.bz2
cd sed-4.2.2
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.31. Tar-1.27.1
if [[ $STEP = "5.31" ]]; then
tar -Jxf tar-1.27.1.tar.xz
cd tar-1.27.1
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.32. Texinfo-5.2
if [[ $STEP = "5.32" ]]; then
tar -Jxf texinfo-5.2.tar.xz
cd texinfo-5.2
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.33. Util-linux-2.24.1
if [[ $STEP = "5.33" ]]; then
tar -Jxf util-linux-2.24.1.tar.xz
cd util-linux-2.24.1
./configure --prefix=/tools \
--disable-makeinstall-chown \
--without-systemdsystemunitdir \
PKG_CONFIG=""
make
make install
cd ..
fi
#5.34. Xz-5.0.5
if [[ $STEP = "5.34" ]]; then
tar -Jxf xz-5.0.5.tar.xz
cd xz-5.0.5
./configure --prefix=/tools
make
make check
make install
cd ..
fi
#5.35. Stripping
if [[ $STEP = "5.35" ]]; then
strip --strip-debug /tools/lib/*
/usr/bin/strip --strip-unneeded /tools/{,s}bin/*
rm -rf /tools/{,share}/{info,man,doc}
fi
#5.36. Changing Ownership
if [[ $STEP = "5.36" ]]; then
chown -R root:root $LFS/tools
fi
#-----------------
popd
#chap6
if [[ $STEP = "6" ]]; then
#Preparing Virtual Kernel File Systems
mkdir -pv $LFS/{dev,proc,sys,run}
#6.2.1. Creating Initial Device Nodes
mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3
#6.2.2. Mounting and Populating /dev
mount -v --bind /dev $LFS/dev
#6.2.3. Mounting Virtual Kernel File Systems
mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run
if [ -h $LFS/dev/shm ]; then
mkdir -pv $LFS/$(readlink $LFS/dev/shm)
fi
fi
#As user root, run the following command to enter the realm that is
if [[ $STEP = "6.1" ]]; then
chroot "$LFS" /tools/bin/env -i \
HOME=/root \
TERM="$TERM" \
PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h
fi
if [[ $STEP = "6.2" ]]; then
#6.5. Creating Directories
mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -v /usr/libexec
mkdir -pv /usr/{,local/}share/man/man{1..8}
case $(uname -m) in
x86_64) ln -sv lib /lib64 &&
ln -sv lib /usr/lib64 &&
ln -sv lib /usr/local/lib64 ;;
esac
mkdir -v /var/{log,mail,spool}
ln -sv /run /var/run
ln -sv /run/lock /var/lock
mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}
#6.6. Creating Essential Files and Symlinks
ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
ln -sv bash /bin/sh
ln -sv /proc/self/mounts /etc/mtab
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF
cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
mail:x:34:
nogroup:x:99:
EOF
exec /tools/bin/bash --login +h
touch /var/log/{btmp,lastlog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664 /var/log/lastlog
chmod -v 600 /var/log/btmp
fi
pushd $LFS/sources
#6.7. Linux-3.13.3 API Headers
if [[ $STEP = "6.7" ]]; then
tar xf linux-3.13.3.tar.xz
cd linux-3.13.3
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
find dest/include \( -name .install -o -name ..install.cmd \) -delete
cp -rv dest/include/* /usr/include
cd ..
fi
#6.8. Man-pages-3.59
if [[ $STEP = "6.8" ]]; then
tar -Jxf man-pages-3.59.tar.xz
cd man-pages-3.59
make install
cd ..
fi
#6.9. Glibc-2.19
if [[ $STEP = "6.9" ]]; then
tar xf glibc-2.19.tar.xz
cd glibc-2.19
sed -i 's/\\$$(pwd)/`pwd`/' timezone/Makefile
patch -Np1 -i ../glibc-2.19-fhs-1.patch
cd ..
mkdir -v glibc-build
cd glibc-build
../glibc-2.19/configure \
--prefix=/usr \
--disable-profile \
--enable-kernel=2.6.32 \
--enable-obsolete-rpc
make -k check 2>&1 | tee glibc-check-log
grep Error glibc-check-log
touch /etc/ld.so.conf
make install
cp -v ../glibc-2.19/nscd/nscd.conf /etc/nscd.conf
mkdir -pv /var/cache/nscd
mkdir -pv /usr/lib/locale
localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i de_DE -f UTF-8 de_DE.UTF-8
localedef -i en_GB -f UTF-8 en_GB.UTF-8
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i en_US -f UTF-8 en_US.UTF-8
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i it_IT -f UTF-8 it_IT.UTF-8
localedef -i ja_JP -f EUC-JP ja_JP
localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
localedef -i zh_CN -f GB18030 zh_CN.GB18030
make localedata/install-locales
cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files
hosts: files dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
# End /etc/nsswitch.conf
EOF
tar -xf ../tzdata2013i.tar.gz
ZONEINFO=/usr/share/zoneinfo
mkdir -pv $ZONEINFO/{posix,right}
for tz in etcetera southamerica northamerica europe africa antarctica \
asia australasia backward pacificnew systemv; do
zic -L /dev/null -d $ZONEINFO -y "sh yearistype.sh" ${tz}
zic -L /dev/null -d $ZONEINFO/posix -y "sh yearistype.sh" ${tz}
zic -L leapseconds -d $ZONEINFO/right -y "sh yearistype.sh" ${tz}
done
cp -v zone.tab iso3166.tab $ZONEINFO
zic -d $ZONEINFO -p America/New_York
unset ZONEINFO
tzselect
cp -v /usr/share/zoneinfo/<xxx> /etc/localtime
cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
EOF
cat >> /etc/ld.so.conf << "EOF"
# Add an include directory
include /etc/ld.so.conf.d/*.conf
EOF
mkdir -pv /etc/ld.so.conf.d
cd ..
fi
#6.10. Adjusting the Toolchain
if [[ $STEP = "6.10" ]]; then
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
gcc -dumpspecs | sed -e 's@/tools@@g' \
-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
-e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \
`dirname $(gcc --print-libgcc-file-name)`/specs
echo 'main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
grep -B1 '^ /usr/include' dummy.log
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
grep "/lib.*/libc.so.6 " dummy.log
grep found dummy.logs
rm -v dummy.c a.out dummy.log
fi
#6.11. Zlib-1.2.8
if [[ $STEP = "6.11" ]]; then
tar -Jxf zlib-1.2.8.tar.xz
cd zlib-1.2.8
./configure --prefix=/usr
make
make check
make install
mv -v /usr/lib/libz.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so
cd ..
fi
#6.12. File-5.17
if [[ $STEP = "6.12" ]]; then
tar xzf file-5.17.tar.gz
cd file-5.17
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.13. Binutils-2.24
if [[ $STEP = "6.13" ]]; then
tar xjf binutils-2.24.tar.bz2
cd binutils-2.24
expect -c "spawn ls"
rm -fv etc/standards.info
sed -i.bak '/^INFO/s/standards.info //' etc/Makefile.in
cd ..
mkdir -v binutils-build
../binutils-2.24/configure --prefix=/usr --enable-shared
make tooldir=/usr
make check
make tooldir=/usr install
cd binutils-build
cd ..
fi
#6.14. GMP-5.1.3
if [[ $STEP = "6.14" ]]; then
tar -Jxf gmp-5.1.3.tar.xz
cd gmp-5.1.3
./configure --prefix=/usr --enable-cxx
make
make check 2>&1 | tee gmp-check-log
awk '/tests passed/{total+=$2} ; END{print total}' gmp-check-log
make install
mkdir -v /usr/share/doc/gmp-5.1.3
cp -v doc/{isa_abi_headache,configuration} doc/*.html \
/usr/share/doc/gmp-5.1.3
cd ..
fi
#6.15. MPFR-3.1.2
if [[ $STEP = "6.15" ]]; then
tar -Jxf mpfr-3.1.2.tar.xz
cd mpfr-3.1.2
./configure --prefix=/usr \
--enable-thread-safe \
--docdir=/usr/share/doc/mpfr-3.1.2
make
make check
make install
make html
make install-html
cd ..
fi
#6.16. MPC-1.0.2
if [[ $STEP = "6.16" ]]; then
tar xzf mpc-1.0.2.tar.gz
cd mpc-1.0.2
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.17. GCC-4.8.2
if [[ $STEP = "6.17" ]]; then
tar xjf gcc-4.8.2.tar.bz2
#configure
cd gcc-4.8.2
case `uname -m` in
i?86) sed -i 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in ;;
esac
sed -i -e /autogen/d -e /check.sh/d fixincludes/Makefile.in
mv -v libmudflap/testsuite/libmudflap.c++/pass41-frag.cxx{,.disable}
cd ..
mkdir -v gcc-build
cd gcc-build
SED=sed \
../gcc-4.8.2/configure \
--prefix=/usr \
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
--enable-clocale=gnu \
--enable-languages=c,c++ \
--disable-multilib \
--disable-bootstrap \
--with-system-zlib
make
ulimit -s 32768
make -k check
../gcc-4.8.2/contrib/test_summary
make install
ln -sv ../usr/bin/cpp /lib
ln -sv gcc /usr/bin/cc
echo 'main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
mkdir -pv /usr/share/gdb/auto-load/usr/lib
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
cd ..
fi
#6.18. Sed-4.2.2
if [[ $STEP = "6.18" ]]; then
tar xjf sed-4.2.2.tar.bz2
cd sed-4.2.2
./configure --prefix=/usr --bindir=/bin --htmldir=/usr/share/doc/sed-4.2.2
make
make html
make check
make install
make -C doc install-html
cd ..
fi
#6.19. Bzip2-1.0.6
if [[ $STEP = "6.19" ]]; then
tar bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
patch -Np1 -i ../bzip2-1.0.6-install_docs-1.patch
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
make -f Makefile-libbz2_so
make clean
make
make PREFIX=/usr install
cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat
cd ..
fi
#6.20. Pkg-config-0.28
if [[ $STEP = "6.20" ]]; then
tar xzf pkg-config-0.28.tar.gz
cd pkg-config-0.28
./configure --prefix=/usr \
--with-internal-glib \
--disable-host-tool \
--docdir=/usr/share/doc/pkg-config-0.28
make
make check
make install
cd ..
fi
#6.21. Ncurses-5.9
if [[ $STEP = "6.21" ]]; then
tar xzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --prefix=/usr \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--enable-pc-files \
--enable-widec
make
make install
mv -v /usr/lib/libncursesw.so.5* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so
for lib in ncurses form panel menu ; do
rm -vf /usr/lib/lib${lib}.so
echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
done
ln -sfv libncurses++w.a /usr/lib/libncurses++.a
rm -vf /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so /usr/lib/libcurses.so
ln -sfv libncursesw.a /usr/lib/libcursesw.a
ln -sfv libncurses.a /usr/lib/libcurses.a
mkdir -v /usr/share/doc/ncurses-5.9
cp -v -R doc/* /usr/share/doc/ncurses-5.9
cd ..
fi
#6.22. Shadow-4.1.5.1
if [[ $STEP = "6.22" ]]; then
tar xzf shadow_4.1.5.1.orig.tar.gz
cd shadow_4.1.5.1
sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;
sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
-e 's@/var/spool/mail@/var/mail@' etc/login.defs
./configure --sysconfdir=/etc
make
make install
mv -v /usr/bin/passwd /bin
cd ..
#pwconv grpconv
fi
#6.23. Psmisc-22.20
if [[ $STEP = "6.23" ]]; then
tar xzf psmisc-22.20.tar.gz
cd psmisc-22.20
./configure --prefix=/usr
make
make install
mv -v /usr/bin/fuser /bin
mv -v /usr/bin/killall /bin
cd ..
fi
#6.24. Procps-ng-3.3.9
if [[ $STEP = "6.24" ]]; then
tar -Jxf procps-ng-3.3.9.tar.xz
cd procps-ng-3.3.9
./configure --prefix=/usr \
--exec-prefix= \
--libdir=/usr/lib \
--docdir=/usr/share/doc/procps-ng-3.3.9 \
--disable-static \
--disable-kill
make
sed -i -r 's|(pmap_initname)\\\$|\1|' testsuite/pmap.test/pmap.exp
make check
make install
mv -v /usr/bin/pidof /bin
mv -v /usr/lib/libprocps.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so
cd ..
fi
#6.25. E2fsprogs-1.42.9
if [[ $STEP = "6.25" ]]; then
tar xzf e2fsprogs-1.42.9.tar.gz
cd e2fsprogs-1.42.9
sed -i -e 's|^LD_LIBRARY_PATH.*|&:/tools/lib|' tests/test_config
mkdir -v build
cd build
LIBS=-L/tools/lib \
CFLAGS=-I/tools/include \
PKG_CONFIG_PATH=/tools/lib/pkgconfig \
../configure --prefix=/usr \
--with-root-prefix="" \
--enable-elf-shlibs \
--disable-libblkid \
--disable-libuuid \
--disable-uuidd \
--disable-fsck
make
make check
make install
make install-libs
chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
gunzip -v /usr/share/info/libext2fs.info.gz
install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo
install -v -m644 doc/com_err.info /usr/share/info
install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info
cd ..
cd ..
fi
#6.26. Coreutils-8.22
if [[ $STEP = "6.26" ]]; then
tar -Jxf coreutils-8.22.tar.xz
cd coreutils-8.22
patch -Np1 -i ../coreutils-8.22-i18n-4.patch
FORCE_UNSAFE_CONFIGURE=1 ./configure \
--prefix=/usr \
--enable-no-install-program=kill,uptime
make
make NON_ROOT_USERNAME=nobody check-root
echo "dummy:x:1000:nobody" >> /etc/group
chown -Rv nobody .
su nobody -s /bin/bash \
-c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
sed -i '/dummy/d' /etc/group
make install
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname,test,[} /bin
mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
sed -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8
mv -v /usr/bin/{head,sleep,nice} /bin
cd ..
fi
#6.27. Iana-Etc-2.30
if [[ $STEP = "6.27" ]]; then
tar xjf iana-etc-2.30.tar.bz2
cd iana-etc-2.30
make
make install
cd ..
fi
#6.28. M4-1.4.17
if [[ $STEP = "6.28" ]]; then
tar -Jxf m4-1.4.17.tar.xz
cd m4-1.4.17
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.29. Flex-2.5.38
if [[ $STEP = "6.29" ]]; then
tar xjf flex-2.5.38.tar.bz2
cd flex-2.5.38
sed -i -e '/test-bison/d' tests/Makefile.in
./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.5.38
make
make check
make install
cd ..
cat > /usr/bin/lex << "EOF"
#!/bin/sh
# Begin /usr/bin/lex
exec /usr/bin/flex -l "$@"
# End /usr/bin/lex
EOF
chmod -v 755 /usr/bin/lex
fi
#6.30. Bison-3.0.2
if [[ $STEP = "6.30" ]]; then
tar -Jxf bison-3.0.2.tar.xz
cd bison-3.0.2
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.31. Grep-2.16
if [[ $STEP = "6.31" ]]; then
tar -Jxf grep-2.16.tar.xz
cd grep-2.16
./configure --prefix=/usr --bindir=/bin
make
make check
make install
cd ..
fi
#6.32. Readline-6.2
if [[ $STEP = "6.32" ]]; then
tar xzf readline-6.2.tar.gz
cd readline-6.2
sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install
patch -Np1 -i ../readline-6.2-fixes-2.patch
./configure --prefix=/usr
make SHLIB_LIBS=-lncurses
make install
mv -v /usr/lib/lib{readline,history}.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so
ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so
mkdir -v /usr/share/doc/readline-6.2
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-6.2
cd ..
fi
#6.33. Bash-4.2
if [[ $STEP = "6.33" ]]; then
tar xzf bash-4.2.tar.gz
cd bash-4.2
patch -Np1 -i ../bash-4.2-fixes-12.patch
./configure --prefix=/usr \
--bindir=/bin \
--htmldir=/usr/share/doc/bash-4.2 \
--without-bash-malloc \
--with-installed-readline
make
chown -Rv nobody .
su nobody -s /bin/bash -c "PATH=$PATH make tests"
make install
exec /bin/bash --login +h
cd ..
fi
#6.34. Bc-1.06.95
if [[ $STEP = "6.34" ]]; then
tar xjf bc-1.06.95.tar.bz2
cd bc-1.06.95
./configure --prefix=/usr \
--with-readline \
--mandir=/usr/share/man \
--infodir=/usr/share/info
make
echo "quit" | ./bc/bc -l Test/checklib.b
make install
cd ..
fi
#6.35. Libtool-2.4.2
if [[ $STEP = "6.35" ]]; then
tar xzf libtool-2.4.2.tar.gz
cd libtool-2.4.2
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.36. GDBM-1.11
if [[ $STEP = "6.36" ]]; then
tar xzf gdbm-1.11.tar.gz
cd gdbm-1.11
./configure --prefix=/usr --enable-libgdbm-compat
make
make check
make install
cd ..
fi
#6.37. Inetutils-1.9.2
if [[ $STEP = "6.37" ]]; then
tar zxf inetutils-1.9.2.tar.gz
cd inetutils-1.9.2
echo '#define PATH_PROCNET_DEV "/proc/net/dev"' >> ifconfig/system/linux.h
./configure --prefix=/usr \
--localstatedir=/var \
--disable-logger \
--disable-syslogd \
--disable-whois \
--disable-servers
make
make check
make install
mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin
mv -v /usr/bin/ifconfig /sbin
cd ..
fi
#6.38. Perl-5.18.2
if [[ $STEP = "6.38" ]]; then
tar xjf perl-5.18.2.tar.bz2
cd perl-5.18.2
echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
sed -i -e "s|BUILD_ZLIB\s*= True|BUILD_ZLIB = False|" \
-e "s|INCLUDE\s*= ./zlib-src|INCLUDE = /usr/include|" \
-e "s|LIB\s*= ./zlib-src|LIB = /usr/lib|" \
cpan/Compress-Raw-Zlib/config.in
sh Configure -des -Dprefix=/usr \
-Dvendorprefix=/usr \
-Dman1dir=/usr/share/man/man1 \
-Dman3dir=/usr/share/man/man3 \
-Dpager="/usr/bin/less -isR" \
-Duseshrplib
make
make -k test
make install
cd ..
fi
#6.39. Autoconf-2.69
if [[ $STEP = "6.39" ]]; then
tar -Jxf autoconf-2.69.tar.xz
cd autoconf-2.69
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.40. Automake-1.14.1
if [[ $STEP = "6.40" ]]; then
tar -Jxf automake-1.14.1.tar.xz
cd automake-1.14.1
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.14.1
make
sed -i "s:./configure:LEXLIB=/usr/lib/libfl.a &:" t/lex-{clean,depend}-cxx.sh
make -j4 check
make install
cd ..
fi
#6.41. Diffutils-3.3
if [[ $STEP = "6.41" ]]; then
tar -Jxf diffutils-3.3.tar.xz
cd diffutils-3.3
sed -i 's:= @mkdir_p@:= /bin/mkdir -p:' po/Makefile.in.in
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.42. Gawk-4.1.0
if [[ $STEP = "6.42" ]]; then
tar -Jxf gawk-4.1.0.tar.xz
cd gawk-4.1.0
./configure --prefix=/usr
make
make check
make install
mkdir -v /usr/share/doc/gawk-4.1.0
cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-4.1.0
cd ..
fi
#6.43. Findutils-4.4.2
if [[ $STEP = "6.43" ]]; then
tar xzf findutils-4.4.2.tar.gz
cd findutils-4.4.2
./configure --prefix=/usr --localstatedir=/var/lib/locate
make
make check
make install
mv -v /usr/bin/find /bin
sed -i 's/find:=${BINDIR}/find:=\/bin/' /usr/bin/updatedb
cd ..
fi
#6.44. Gettext-0.18.3.2
if [[ $STEP = "6.44" ]]; then
tar xzf gettext-0.18.3.2.tar.gz
cd gettext-0.18.3.2
./configure --prefix=/usr --docdir=/usr/share/doc/gettext-0.18.3.2
make
make check
make install
cd ..
fi
#6.45. Groff-1.22.2
if [[ $STEP = "6.45" ]]; then
tar xzf groff-1.22.2.tar.gz
cd groff-1.22.2
PAGE=<paper_size> ./configure --prefix=/usr
make
make install
ln -sv eqn /usr/bin/geqn
ln -sv tbl /usr/bin/gtbl
cd ..
fi
#6.46. Xz-5.0.5
if [[ $STEP = "6.46" ]]; then
tar -Jxf xz-5.0.5.tar.xz
cd xz-5.0.5
./configure --prefix=/usr --docdir=/usr/share/doc/xz-5.0.5
make
make check
make install
mv -v /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin
mv -v /usr/lib/liblzma.so.* /lib
ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so
cd ..
fi
#6.47. GRUB-2.00
if [[ $STEP = "6.47" ]]; then
tar -Jxf grub-2.00.tar.xz
cd grub-2.00
sed -i -e '/gets is a/d' grub-core/gnulib/stdio.in.h
./configure --prefix=/usr \
--sbindir=/sbin \
--sysconfdir=/etc \
--disable-grub-emu-usb \
--disable-efiemu \
--disable-werror
make
make install
cd ..
fi
#6.48. Less-458
if [[ $STEP = "6.48" ]]; then
tar xzf less-458.tar.gz
cd less-458
./configure --prefix=/usr --sysconfdir=/etc
make
make install
cd ..
fi
#6.49. Gzip-1.6
if [[ $STEP = "6.49" ]]; then
tar -Jxf gzip-1.6.tar.xz
cd gzip-1.6
./configure --prefix=/usr --bindir=/bin
make
make check
make install
mv -v /bin/{gzexe,uncompress,zcmp,zdiff,zegrep} /usr/bin
mv -v /bin/{zfgrep,zforce,zgrep,zless,zmore,znew} /usr/bin
cd ..
fi
#6.50. IPRoute2-3.12.0
if [[ $STEP = "6.50" ]]; then
tar -Jxf iproute2-3.12.0.tar.xz
cd iproute2-3.12.0
sed -i '/^TARGETS/s@arpd@@g' misc/Makefile
sed -i /ARPD/d Makefile
sed -i 's/arpd.8//' man/man8/Makefile
make DESTDIR=
make DESTDIR= \
MANDIR=/usr/share/man \
DOCDIR=/usr/share/doc/iproute2-3.12.0 install
cd ..
fi
#6.51. Kbd-2.0.1
if [[ $STEP = "6.51" ]]; then
tar xzf kbd-2.0.1.tar.gz
cd kbd-2.0.1
patch -Np1 -i ../kbd-2.0.1-backspace-1.patch
sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure
sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock
make
make check
make install
mkdir -v /usr/share/doc/kbd-2.0.1
cp -R -v docs/doc/* /usr/share/doc/kbd-2.0.1
cd ..
fi
#6.52. Kmod-16
if [[ $STEP = "6.52" ]]; then
tar -Jxf kmod-16.tar.xz
cd kmod-16
./configure --prefix=/usr \
--bindir=/bin \
--sysconfdir=/etc \
--with-rootlibdir=/lib \
--disable-manpages \
--with-xz \
--with-zlib
make
make check
make install
make -C man install
for target in depmod insmod modinfo modprobe rmmod; do
ln -sv ../bin/kmod /sbin/$target
done
ln -sv kmod /bin/lsmod
cd ..
fi
#6.53. Libpipeline-1.2.6
if [[ $STEP = "6.53" ]]; then
tar xzf libpipeline-1.2.6.tar.gz
cd libpipeline-1.2.6
PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.54. Make-4.0
if [[ $STEP = "6.54" ]]; then
tar xjf make-4.0.tar.bz2
cd make-4.0
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.55. Patch-2.7.1
if [[ $STEP = "6.55" ]]; then
tar -Jxf patch-2.7.1.tar.xz
cd patch-2.7.1
./configure --prefix=/usr
make
make check
make install
cd ..
fi
#6.56. Sysklogd-1.5
if [[ $STEP = "6.56" ]]; then
tar xzf sysklogd-1.5.tar.gz
cd sysklogd-1.5
make
make BINDIR=/sbin install
cat > /etc/syslog.conf << "EOF"
# Begin /etc/syslog.conf
auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *
# End /etc/syslog.conf
EOF
cd ..
fi
#6.57. Sysvinit-2.88dsf
if [[ $STEP = "6.57" ]]; then
tar xjf sysvinit-2.88dsf.tar.bz2
cd sysvinit-2.88dsf
patch -Np1 -i ../sysvinit-2.88dsf-consolidated-1.patch
make -C src
make -C src install
cd ..
fi
#6.58. Tar-1.27.1
if [[ $STEP = "6.58" ]]; then
tar -Jxf tar-1.27.1.tar.xz
cd tar-1.27.1
patch -Np1 -i ../tar-1.27.1-manpage-1.patch
FORCE_UNSAFE_CONFIGURE=1 \
./configure --prefix=/usr \
--bindir=/bin
make
make check
make install
make -C doc install-html docdir=/usr/share/doc/tar-1.27.1
perl tarman > /usr/share/man/man1/tar.1
cd ..
fi
#6.59. Texinfo-5.2
if [[ $STEP = "6.59" ]]; then
tar -Jxf texinfo-5.2.tar.xz
cd texinfo-5.2
./configure --prefix=/usr
make
make check
make install
make TEXMF=/usr/share/texmf install-tex
cd /usr/share/info
rm -v dir
for f in *
do install-info $f dir 2>/dev/null
done
cd ..
fi
#6.60. Udev-208
if [[ $STEP = "6.60" ]]; then
cd systemd-208
tar jxf ../udev-lfs-208-3.tar.bz2
ln -svf /tools/include/blkid /usr/include
ln -svf /tools/include/uuid /usr/include
export LD_LIBRARY_PATH=/tools/lib
make -f udev-lfs-208-3/Makefile.lfs
make -f udev-lfs-208-3/Makefile.lfs install
build/udevadm hwdb --update
bash udev-lfs-208-3/init-net-rules.sh
rm -fv /usr/include/{uuid,blkid}
unset LD_LIBRARY_PATH
cd ..
fi
#6.61. Util-linux-2.24.1
if [[ $STEP = "6.61" ]]; then
tar -Jxf util-linux-2.24.1.tar.xz
cd util-linux-2.24.1
sed -i -e 's@etc/adjtime@var/lib/hwclock/adjtime@g' \
$(grep -rl '/etc/adjtime' .)
mkdir -pv /var/lib/hwclock
./configure
make
chown -Rv nobody .
su nobody -s /bin/bash -c "PATH=$PATH make -k check"
make install
cd ..
fi
#6.62. Man-DB-2.6.6
if [[ $STEP = "6.62" ]]; then
tar -Jxf man-db-2.6.6.tar.xz
cd man-db-2.6.6
./configure --prefix=/usr \
--docdir=/usr/share/doc/man-db-2.6.6 \
--sysconfdir=/etc \
--disable-setuid \
--with-browser=/usr/bin/lynx \
--with-vgrind=/usr/bin/vgrind \
--with-grap=/usr/bin/grap
make
make check
make install
cd ..
fi
#6.63. Vim-7.4
if [[ $STEP = "6.63" ]]; then
tar xjf vim-7.4.tar.bz2
cd vim-7.4
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
./configure --prefix=/usr --enable-multibyte
make
make test
make install
ln -sv vim /usr/bin/vi
for L in /usr/share/man/{,*/}man1/vim.1; do
ln -sv vim.1 $(dirname $L)/vi.1
done
ln -sv ../vim/vim74/doc /usr/share/doc/vim-7.4
cat > /etc/vimrc << "EOF"
" Begin /etc/vimrc
set nocompatible
set backspace=2
syntax on
if (&term == "iterm") || (&term == "putty")
set background=dark
endif
" End /etc/vimrc
EOF
cd ..
fi
#6.65. Stripping Again
if [[ $STEP = "6.65" ]]; then
#lfs logout
logout
chroot $LFS /tools/bin/env -i \
HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/tools/bin/bash --login
/tools/bin/find /{,usr/}{bin,lib,sbin} -type f \
-exec /tools/bin/strip --strip-debug '{}' ';'
rm -rf /tmp/*
chroot "$LFS" /usr/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/bin/bash --login
#rm -rf /tools
fi
#chap 7
#
#LFS-Bootscripts-20130821 lfs-bootscripts-20130821.tar.bz2
#$LFS/sources
popd
从头开始构建LINUX [LFS 脚本]的更多相关文章
- 从头开始构建LINUX [LFS]
“LINUX就是这个范”有一章专门介绍了Linux的构建,过程详细,很有意思.结合这方面的资料简要汇集一下 LFS 这个站点提供了从源代码构建一个Linux的详细步骤 书 http://archive ...
- 从头开始构建LINUX[内核更新和资料]
了解了LFS的内容后,至于内核的更新就一目了然了 http://www.cnblogs.com/2018/p/3979305.html http://www.cnblogs.com/2018/p/39 ...
- Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(二)
七. 构建临时系统 1. 通用编译指南 a. 确认是否正确设置了 LFS 环境变量 echo $LFS b. 假定你已经正确地设置了宿主系统的符号链接: 1)shell 使用的是 bash. 2)sh ...
- Linux From Scratch(从零开始构建Linux系统,简称LFS)(二)
七. 构建临时系统 1. 通用编译指南 a. 确认是否正确设置了 LFS 环境变量 echo $LFS b. 假定你已经正确地设置了宿主系统需求和符号链接 c. 对于每个软件包: (1). 确保解压软 ...
- 从零开始构建Linux
目的:深入了解以Linux内核为基础的系统是如何组成,运行,以构建一个最基础的,纯净的系统. LFS构建步骤宿主机准备- linux操作系统安装- 使用独立硬盘,创建分区- 配置用户和组- 下载所有需 ...
- 构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock
构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock http://blog.chinaunix.net/uid-306663-id-2440200.html LIDS官方网站: ...
- 基于 SquashFS 构建 Linux 可读写文件系统
转载:http://www.oschina.net/question/129540_116839 在当前的嵌入式操作系统开发中,Linux 操作系统通常被压缩成 Image 后存放在 Flash 设备 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
随机推荐
- WPF Excel导出加个手动修改地址
http://blog.csdn.net/sanjiawan/article/details/6818921 以上是CSDN上的WPF Excel导入导出,我看到有人提问怎么能够手动选择地址,正好用到 ...
- 【原创】开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- Util应用程序框架公共操作类(七):Lambda表达式公共操作类
前一篇扩展了两个常用验证方法,本文将封装两个Lambda表达式操作,用来为下一篇的查询扩展服务. Lambda表达式是一种简洁的匿名函数语法,可以用它将方法作为委托参数传递.在Linq中,大量使用La ...
- (转)对Lucene PhraseQuery的slop的理解
所谓PhraseQuery,就是通过短语来检索,比如我想查"big car"这个短语,那么如果待匹配的document的指定项里包含了"big car"这个短语 ...
- mysql乐观锁总结和实践--转
原文地址:http://chenzhou123520.iteye.com/blog/1863407 上一篇文章<MySQL悲观锁总结和实践>谈到了MySQL悲观锁,但是悲观锁并不是适用于任 ...
- 【JavaWeb】MVC案例之新闻列表
MVC案例之新闻列表 作者:白宁超 2016年6月6日15:26:30 摘要:本文主要针对javaweb基本开发之MVC案例的简单操作,里面涉及mysql数据库及表的创建,以及jsp页面和servle ...
- 使用QUnit进行自动化单元测试
前言 前阵子由于项目需求接触了java的单元测试JUnit,就顺带着学习了前端的单元测试:Qunit. 既然跟测试有关,不妨介绍一下测试中的黑盒测试.白盒测试以及单元测试. 1.黑盒测试:所谓的黑盒, ...
- 网络基础 : OSI参考模型
Overview OSI规范的作用之一就是帮助在不同的主机之间传输数据. OSI模型包含7层,它们分为两组. 上面3层指定了终端中的应用程序如何彼此通信以及如何与用户交流: 下面4层指定了如何进行端到 ...
- C#基础-关于用json给控制台程序传值的坑
上周遇到了一个非常诡异的坑,首先写了两个程序,第一个程序输出成dll,第二个程序是控制台程序. 在第一个程序里,我使用了process去启动第二个程序,同时传入了一个Json作为参数,即: Proce ...
- Post方式打开新窗口
最近在做一个跟ERP相连的领料网站,用到POST的方法打开新窗口来打印报表 代码转别人的,在这里记一下: javascript代码 function openPostWindow(url, data1 ...