分类:
2008-05-28 17:17:10
mkdir -pv /usr/lib/locale
localedef -i en_US -f ISO-8859-1 en_US
localedef -i en_US -f UTF-8 en_US.UTF-8
localedef -i zh_CN -f GB2312 zh_CN
localedef -i zh_CN -f GBK zh_CN.GBK
localedef -i zh_CN -f GB18030 zh_CN.GB18030
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
cp -v --remove-destination /usr/share/zoneinfo/PRC /etc/localtime
mv -v /etc/udev/rules.d/{75-cd-aliases-generator.rules,../}
mv -v /etc/udev/rules.d/{75-persistent-net-generator.rules,../}
rm -v /etc/udev/rules.d/70-persistent-cd.rules
cat >/etc/udev/rules.d/81-cdrom.rules <<"EOF"
# /etc/udev/rules.d/81-cdrom.rules: Set CD-ROM permissions.
ACTION=="add", SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", PROGRAM="getcdrom %k", SYMLINK+="cdrom%c", GROUP="cdrom"
EOF
cat >/lib/udev/getcdrom <<"EOF"
#!/bin/sh
i=0
while [ -e /dev/cdrom${i} ]
do
[ X$(realpath /dev/cdrom${i}) == X/dev/$1 ] && break
let i=i+1
done
echo $i
exit 0
EOF
chmod 755 /lib/udev/getcdrom
cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock
UTC=0
# End /etc/sysconfig/clock
EOF
echo "HOSTNAME=livecd" > /etc/sysconfig/network
cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.1
GATEWAY=192.168.1.2
PREFIX=24
BROADCAST=192.168.1.255
EOF
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
#domain
nameserver 202.96.64.68
nameserver 202.96.69.38
# End /etc/resolv.conf
EOF
cat > /etc/fstab << "EOF"
# Begin /etc/fstab
# file system mount-point type options dump fsck
# order
#/dev// defaults 1 1
#/dev/swap swap pri=1 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
devpts /dev/pts devpts gid=4,mode=620 0 0
shm /dev/shm tmpfs defaults 0 0
# End /etc/fstab
EOF
wget
tar xf squashfs3.2-r2.tar.gz
cd linux-2.6.22.1
patch -Np1 -i ../squashfs3.2-r2/kernel-patches/linux-2.6.20/squashfs3.2-patch
cd /sources/squashfs3.2-r2/squashfs-tools
make
cd /sources/linux-2.6.22.1
patch -Np1 -i ../linux-2.6.22.1-squashfs.patch
make
make modules_install
cp -v arch/i386/boot/bzImage /boot/vmlinuz-2.6.22.1
cp -v System.map /boot/System.map-2.6.22.1
cp -v .config /boot/config-2.6.22.1
cd /sources/aufs
make KDIR=/lib/modules/2.6.22.1/build/ -f local.mk
install -m 500 -p mount.aufs umount.aufs auplink aulchown /sbin
echo FLUSH=ALL > /etc/default/auplink
mkdir /lib/modules/2.6.22.1/kernel/fs/aufs
cp aufs.ko /lib/modules/2.6.22.1/kernel/fs/aufs/
depmod -a 2.6.22.1
echo 6.3-rc1 > /etc/lfs-release
#mkinitrd
cd /sources
tar xf busybox-1.5.1.tar.bz2
cd busybox-1.5.1
make defconfig
make
mkdir /initrd
cd /initrd
mkdir bin dev etc lib mnt/{,cdrom,root,roroot,rwroot} proc root sbin sys tmp
chmod 1777 tmp
cp /sbin/{modinfo,udevd,udevtrigger,depmod,modprobe,udevcontrol,udevsettle} sbin/
cp -a /sources/busybox-1.5.1/_install/{bin,sbin} .
cp -a /etc/udev etc/
cp -a /lib/udev lib/
cp -a /lib/{ld-linux.so.2,libc.so.6,libvolume_id.so.0,libvolum_id.so.0.78.0} lib/
mkdir -p lib/modules/2.6.22.1/kernel/{drivers,fs}
cp -a /lib/modules/2.6.22.1/kernel/drivers/{ata,block,cdrom,hid,ide,input,pcmia,scsi,usb} lib/modules/2.6.22.1/kernel/drivers/
cp -a /lib/modules/2.6.22.1/kernel/fs lib/modules/2.6.22.1/kernel/
cat >init <<"EOF"
#!/bin/sh
PATH=/bin:/sbin
mount -t proc proc /proc
mount -t sysfs sysfs /sys
ro=-r
INIT=/sbin/init
ROOTDELAY=
DEBUG=
NOAUFS=
for i in $(cat /proc/cmdline)
do
case "$i" in
rootdelay=*)
ROOTDELAY=${i#rootdelay=}
;;
esac
done
/sbin/depmod -a
echo > /proc/sys/kernel/hotplug
cp -a /lib/udev/devices/* /dev
/sbin/udevd --daemon
/sbin/udevtrigger
/sbin/udevsettle
if [ X$ROOTDELAY != X ]
then
echo "wait $ROOTDELAY seconds ......"
sleep $ROOTDELAY
fi
for i in $(cat /proc/cmdline)
do
case "$i" in
root=*)
ROOT=${i#root=}
case "$ROOT" in
UUID=*)
ROOT=${ROOT#UUID=}
ROOT=$(realpath /dev/disk/by-uuid/$ROOT)
;;
/dev/*)
ROOT=$ROOT
;;
*)
ROOT=
esac
;;
init=*)
INIT=${i#init=}
;;
ro)
ro=-r
;;
rw)
ro=
;;
debug)
DEBUG=1
;;
noaufs)
NOAUFS=1
;;
esac
done
if [ X$DEBUG != X ]
then
echo "enter debug mode..."
PS1='\[\033[0;34m(debug)\033[0m\]$ ' /bin/sh -i
else
PS1='\[033[0;31m(initramfs)\033[0m\]$ '
[ -d /mnt/cdrom ] || mkdir /mnt/cdrom
[ -d /mnt/root ] || mkdir /mnt/root
[ -d /mnt/roroot ] || mkdir /mnt/roroot
[ -d /mnt/rwroot ] || mkdir /mnt/rwroot
if [ X$ROOT == X ]
then
echo "mount cdrom ......"
modprobe iso9660
for i in 1 2 4 8
do
for CDROM in /dev/cdrom*
do
mount -nt iso9660 -o ro $CDROM /mnt/cdrom
mountpoint -q /mnt/cdrom && break
[ -f /mnt/cdrom/root.sqfs ] && break
umount /mnt/cdrom
done
[ -f /mnt/cdrom/root.sqfs ] && break
sleep $i
done
else
echo "mount rootdev(${ROOT}) ......"
FSTYPE=$(/lib/udev/vol_id -t "${ROOT}" 2> /dev/null)
if [ X$FSTYPE != X ]
then
modprobe nls_iso8859-1
modprobe nls_cp437
modprobe $FSTYPE
for i in 1 2 4 8
do
mount -nt $FSTYPE -o ro $ROOT /mnt/cdrom
mountpoint -q /mnt/cdrom && break
sleep $i
done
fi
fi
mountpoint -q /mnt/cdrom || (echo "no rootdev";/bin/sh -i)
if [ X$AUFS == X ]
then
echo "mount roroot ......"
mount -o remount,rw /mnt/cdrom
modprobe loop
modprobe squashfs
for i in 1 2 4 8
do
mount -nt squashfs -o loop,ro /mnt/cdrom/root.sqfs /mnt/roroot
mountpoint -q /mnt/roroot && break
sleep $i
done
mountpoint -q /mnt/roroot || (echo "no roroot";/bin/sh -i)
mount -nt tmpfs -o mode=755 tmpfs /mnt/rwroot
mountpoint -q /mnt/rwroot || (echo "no tmpfs";/bin/sh -i)
echo "mount realroot ......"
modprobe aufs
for i in 1 2 4 8
do
mount -nt aufs -o br:/mnt/rwroot=rw:/mnt/roroot=ro aufsroot /mnt/root
mountpoint -q /mnt/root && break
sleep $i
done
mountpoint -q /mnt/root || (echo "no root";/bin/sh -i)
mkdir /mnt/root/mnt/.rootdev
mount --bind /mnt/cdrom /mnt/root/mnt/.rootdev
touch /mnt/root/fastboot
touch /mnt/root/.livecd
else
mount -n -o move /mnt/cdrom /mnt/root
fi
#start up hook
[ -f /mnt/cdrom/onboot.sh ] && sh /mnt/cdrom/onboot.sh
killall udevd
umount /proc
umount /sys
fi
exec switch_root /mnt/root $INIT "$@"
EOF
tar xf zhcon-0.2.5.tar.gz
cd zhcon-0.2.5
zcat ../zhcon-0.2.5-to-0.2.6.diff.gz | patch -Np1
./configure --prefix=/usr --sysconfdir=/etc
make && make install
tar xf openssl-0.9.8d.tar.gz
cd openssl-0.9.8d
patch -Np1 -i ../openssl-0.9.8d-fix_manpages-1.patch
make MANDIR=/usr/share/man
make MANDIR=/usr/share/man install
cp -v -r certs /etc/ssl &&
install -v -d -m755 /usr/share/doc/openssl-0.9.8d &&
cp -v -r doc/{HOWTO,README,*.{txt,html,gif}} \
/usr/share/doc/openssl-0.9.8d
cd /sources/blfs/ && rm -rf openssl-0.9.8d
tar xf wget-1.10.2.tar.gz
cd wget-1.10.2
./configure --prefix=/usr --sysconfdir=/etc && make && make install
cd /sources/blfs/ && rm -rf wget-1.10.2
tar xf pcre-7.2.tar.bz2
cd pcre-7.2
./configure --prefix=/usr \
--docdir=/usr/share/doc/pcre-7.2 \
--enable-utf8 &&
make &&
make install
mv -v /usr/lib/libpcre.so.* /lib/ &&
ln -v -sf ../../lib/libpcre.so.0 /usr/lib/libpcre.so
cd /sources/blfs/ && rm -rf pcre-7.2
cat > /usr/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/bin/which
chown -v root:root /usr/bin/which
tar xf pkg-config-0.22.tar.gz
cd pkg-config-0.22
./configure --prefix=/usr && make && make install
cd /sources/blfs/ && rm -rf pkg-config-0.22
tar xf cpio-2.9.tar.bz2
cd cpio-2.9
./configure CPIO_MT_PROG=mt \
--prefix=/usr \
--bindir=/bin \
--libexecdir=/tmp \
--with-rmt=/usr/sbin/rmt &&
make && make install
cd /sources/blfs/ && rm -rf cpio-2.9
tar xf pciutils-2.2.3.tar.bz2
cd pciutils-2.2.3
sed -i 's/null ;/null 2>\&1 ;/' update-pciids.sh &&
make PREFIX=/usr &&
make PREFIX=/usr install &&
install -v -m 755 -d /usr/include/pci &&
install -v -m 644 lib/libpci.a /usr/lib &&
install -v -m 644 lib/*.h /usr/include/pci
update-pciids
cd /sources/blfs/ && rm -rf pciutils-2.2.3
tar xf gc6.8.tar.gz
cd gc6.8
sed -i "s|\$(datadir)/@PACKAGE@|&-6.8|" doc/Makefile.in &&
./configure --prefix=/usr \
--datadir=/usr/share/doc --enable-cplusplus &&
make && make install &&
install -v -m644 doc/gc.man /usr/share/man/man3/gc_malloc.3 &&
ln -v -s gc_malloc.3 /usr/share/man/man3/gc.3 &&
cd /sources/blfs/ && rm -rf gc6.8
tar xf w3m-0.5.2.tar.gz
cd w3m-0.5.2
./configure --prefix=/usr \
--libexecdir=/usr/lib \
--sysconfdir=/etc &&
make && make install &&
install -v -m644 -D doc/keymap.default /etc/w3m/keymap &&
install -v -m644 doc/menu.default /etc/w3m/menu &&
install -v -m755 -d /usr/share/doc/w3m-0.5.2 &&
install -v -m644 doc/{HISTORY,READ*,keymap.*,menu.*,*.html} \
/usr/share/doc/w3m-0.5.2
cd /sources/blfs/ && rm -rf w3m-0.5.2
tar xf screen-4.0.3.tar.gz
cd screen-4.0.3
./configure --prefix=/usr --with-socket-dir=/var/run/screen \
--with-sys-screenrc=/etc/screenrc &&
sed -i -e "s%/usr/local/etc/screenrc%/etc/screenrc%" {etc,doc}/* &&
make && make install &&
install -m 644 etc/etcscreenrc /etc/screenrc
cd /sources/blfs/ && rm -rf screen-4.0.3
tar xf openssh-4.6p1.tar.gz
cd openssh-4.6p1
install -v -m700 -d /var/lib/sshd &&
chown -v root:sys /var/lib/sshd &&
groupadd -g 50 sshd &&
useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd \
-s /bin/false -u 50 sshd
sed -i "s:-lcrypto:/usr/lib/libcrypto.a -ldl:g" configure
sed -i "s/lkrb5 -ldes/lkrb5/" configure &&
./configure --prefix=/usr --sysconfdir=/etc/ssh \
--libexecdir=/usr/lib/openssh --with-md5-passwords \
--with-privsep-path=/var/lib/sshd &&
make && make install &&
install -v -m755 -d /usr/share/doc/openssh-4.6p1 &&
install -v -m644 INSTALL LICENCE OVERVIEW README* WARNING.RNG \
/usr/share/doc/openssh-4.6p1
cd /sources/blfs/ && rm -rf openssh-4.6p1
tar xf dhcp-3.0.5.tar.gz
cd dhcp-3.0.5
patch -Np1 -i ../dhcp-3.0.5-client_dns-1.patch
patch -Np1 -i ../dhcp-3.0.5-iproute2-1.patch
./configure &&
make &&
make LIBDIR=/usr/lib INCDIR=/usr/include install
cat > /etc/dhclient.conf << "EOF"
# dhclient.conf
interface "eth0"{
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;
}
# end dhclient.conf
EOF
cd /sources/blfs/ && rm -rf dhcp-3.0.5
cat > /etc/sysconfig/network-devices/dhclient.example << "EOF"
ONBOOT="yes"
SERVICE="dhclient"
DHCP_START="-q"
DHCP_STOP="-q -r"
# Set PRINTIP="yes" to have the script print
# the DHCP assigned IP address
PRINTIP="no"
# Set PRINTALL="yes" to print the DHCP assigned values for
# IP, SM, DG, and 1st NS. This requires PRINTIP="yes".
PRINTALL="no"
EOF
tar xf ppp-2.4.4.tar.gz &&
cd ppp-2.4.4 &&
./configure --prefix=/usr &&
make &&
make install &&
make install-etcppp &&
cd /sources/blfs/ && rm -rf ppp-2.4.4
tar xf rp-pppoe-3.8.tar.gz &&
cd rp-pppoe-3.8 &&
patch -Np1 -i ../rp-pppoe-3.8-iproute2-1.patch &&
sed -i s%/usr/bin/logger%/bin/logger% scripts/pppoe-{connect,setup,stop}.in &&
cd src &&
./configure &&
make &&
make install &&
cat > /etc/sysconfig/network-devices/pppoe-example << "EOF"
ONBOOT="yes"
SERVICE="pppoe"
EOF
cd /sources/blfs/ && rm -rf rp-pppoe-3.8
cd blfs-bootscripts-20070726 &&
make install-service-pppoe &&
cd /sources/blfs
tar xf libpcap-0.9.6.tar.gz &&
cd libpcap-0.9.6 &&
./configure --prefix=/usr &&
make &&
make install &&
install -v -m755 -d /usr/share/doc/libpcap-0.9.6 &&
install -v -m644 doc/* /usr/share/doc/libpcap-0.9.6 &&
cd /sources/blfs/ && rm -rf libpcap-0.9.6
tar xf wireless_tools.28.tar.gz &&
cd wireless_tools.28 &&
make &&
make install &&
cd /sources/blfs/ && rm -rf wireless_tools.28
tar xf glib-2.12.12.tar.bz2 &&
cd glib-2.12.12 &&
./configure --prefix=/usr &&
make &&
make install &&
cat > /etc/profile.d/glib2-locale.sh << "EOF"
# Use the current locale charset for filenames
# in applications using GLib
export G_FILENAME_ENCODING=@locale
EOF
cd /sources/blfs/ && rm -rf glib-2.12.12
tar xf wireshark-0.99.6.tar.bz2 &&
cd wireshark-0.99.6 &&
./configure --prefix=/usr \
--sysconfdir=/etc \
--enable-threads \
--disable-wireshark &&
make &&
make install &&
install -v -m755 -d /usr/share/doc/wireshark-0.99.6 &&
install -v -m644 FAQ README{,.linux} doc/README.* doc/*.{pod,txt} \
/usr/share/doc/wireshark-0.99.6 &&
pushd /usr/share/doc/wireshark-0.99.6 &&
for FILENAME in ../../wireshark/*.html; do \
ln -s -v $FILENAME .
done &&
popd &&
cd /sources/blfs/ && rm -rf wireshark-0.99.6
tar xf nmap-4.20.tar.bz2 &&
cd nmap-4.20 &&
./configure --prefix=/usr --without-nmapfe &&
make &&
make install &&
cd /sources/blfs/ && rm -rf nmap-4.20
tar xf traceroute-1.4a12.tar.gz &&
cd traceroute-1.4a12 &&
sed -i -e 's/-o bin/-o root/' Makefile.in &&
./configure --prefix=/usr &&
make &&
make install &&
make install-man &&
cd /sources/blfs/ && rm -rf traceroute-1.4a12
tar xf whois_4.7.21.tar.gz &&
cd whois-4.7.21 &&
make &&
make prefix=/usr install &&
cd /sources/blfs/ && rm -rf whois-4.7.21
tar xf bind-9.4.1-P1.tar.gz &&
cd bind-9.4.1-P1 &&
./configure --prefix=/usr &&
make -C lib/dns &&
make -C lib/isc &&
make -C lib/bind9 &&
make -C lib/isccfg &&
make -C lib/lwres &&
make -C bin/dig &&
make -C bin/dig install &&
cd /sources/blfs/ && rm -rf bind-9.4.1-P1
tar xf lftp-3.5.12.tar.bz2 &&
cd lftp-3.5.12 &&
./configure --prefix=/usr &&
make &&
make install &&
cd /sources/blfs/ && rm -rf lftp-3.5.12
groupadd -g 46 proftpd &&
useradd -c proftpd -d /srv/ftp -g proftpd \
-s /usr/bin/proftpdshell -u 46 proftpd &&
install -v -d -m775 -o proftpd -g proftpd /srv/ftp &&
ln -v -s /bin/false /usr/bin/proftpdshell &&
echo /usr/bin/proftpdshell >> /etc/shells &&
tar xf proftpd-1.3.0.tar.bz2 &&
cd proftpd-1.3.0 &&
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var/run &&
make &&
make install &&
cat > /etc/proftpd.conf << "EOF"
# This is a basic ProFTPD configuration file
# It establishes a single server and a single anonymous login.
ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
# Port 21 is the standard FTP port.
Port 21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 30
# Set the user and group that the server normally runs at.
User proftpd
Group proftpd
# Normally, files should be overwritable.
AllowOverwrite on
# A basic anonymous configuration, no upload directories.
User proftpd
Group proftpd
# Clients should be able to login with "anonymous" as well as "proftpd"
UserAlias anonymous proftpd
# Limit the maximum number of anonymous logins
MaxClients 10
# 'welcome.msg' should be displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Limit WRITE everywhere in the anonymous chroot
DenyAll
EOF
cd /sources/blfs/ && rm -rf proftpd-1.3.0
cd /sources/blfs/blfs-bootscripts-20070726
make install-proftpd
cd /sources/blfs
tar xf gpm-1.20.1.tar.bz2 &&
cd gpm-1.20.1 &&
patch -Np1 -i ../gpm-1.20.1-segfault-1.patch &&
patch -Np1 -i ../gpm-1.20.1-silent-1.patch &&
./configure --prefix=/usr --sysconfdir=/etc &&
LDFLAGS="-lm" make &&
make install &&
cp -v conf/gpm-root.conf /etc &&
ldconfig &&
cat > /etc/sysconfig/mouse << "EOF"
# Begin /etc/sysconfig/mouse
MDEVICE="/dev/input/mouse0"
PROTOCOL="imps2"
GPMOPTS=""
# End /etc/sysconfig/mouse
EOF
cd /sources/blfs/ && rm -rf gpm-1.20.1
cd /sources/blfs/blfs-bootscripts-20070726
make install-gpm
cd /sources/blfs
tar xf slang-2.1.1.tar.bz2 &&
cd slang-2.1.1 &&
./configure --prefix=/usr --sysconfdir=/etc &&
make &&
make install_doc_dir=/usr/share/doc/slang-2.1.1 install-all &&
chmod -v 755 /usr/lib/libslang.so.2.1.1 \
/usr/lib/slang/v2/modules/*.so &&
cd /sources/blfs/ && rm -rf slang-2.1.1
tar xf mc-4.6.1.tar.gz &&
cd mc-4.6.1 &&
patch -Np1 -i ../mc-4.6.1-bash32-1.patch &&
patch -Np1 -i ../mc-4.6.1-debian_fixes-1.patch &&
CPPFLAGS="-DUTF8" ./configure --prefix=/usr \
--enable-charset &&
make &&
convert-mans ISO-8859-1 UTF-8 lib/mc.hint{,.es,.it,.nl} &&
convert-mans ISO-8859-2 UTF-8 lib/mc.hint{.cs,.hu,.pl} &&
convert-mans ISO-8859-5 UTF-8 lib/mc.hint.sr &&
convert-mans KOI8-R UTF-8 lib/mc.hint.ru &&
convert-mans KOI8-U UTF-8 lib/mc.hint.uk &&
convert-mans BIG5 UTF-8 lib/mc.hint.zh &&
convert-mans ISO-8859-1 UTF-8 doc/{es,it}/mc.hlp.* &&
convert-mans ISO-8859-2 UTF-8 doc/{hu,pl}/mc.hlp.* &&
convert-mans ISO-8859-5 UTF-8 doc/sr/mc.hlp.sr &&
convert-mans KOI8-R UTF-8 doc/ru/mc.hlp.ru &&
make install &&
chmod 1755 /usr/lib/mc/cons.saver &&
cd /sources/blfs/ && rm -rf mc-4.6.1
#comiple p7zip need nasm
#wget ""
tar xf nasm-0.99.01.tar.bz2 &&
cd nasm-0.99.01 &&
./configure && make &&
cp nasm /usr/local/bin/ &&
cd /sources/blfs/ && rm -rf nasm-0.99.01
tar xf p7zip_4.51_src_all.tar.bz2 &&
cd p7zip_4.51 &&
cp makefile.linux_x86_asm_gcc_4.X makefile.machine &&
make clean &&
make all3 &&
sed -i "s@DEST_HOME=/usr/local@DEST_HOME=/usr@" install.sh &&
./install.sh &&
cd /sources/blfs/ && rm -rf p7zip_4.51
tar xf fuse-2.7.0.tar.gz &&
cd fuse-2.7.0 &&
./configure --disable-kernel-module --prefix=/usr &&
make &&
make install &&
cd /sources/blfs/ && rm -rf fuse-2.7.0
tar xf sshfs-fuse-1.8.tar.gz &&
cd sshfs-fuse-1.8 &&
./configure --prefix=/usr &&
make &&
make install &&
cd /sources/blfs/ && rm -rf sshfs-fuse-1.8
tar xf curl-7.16.3.tar.bz2 &&
cd curl-7.16.3 &&
./configure --prefix=/usr &&
make &&
make install &&
find docs -name "Makefile*" -o -name "*.1" -o -name "*.3" | xargs rm &&
install -v -d -m755 /usr/share/doc/curl-7.16.3 &&
cp -v -R docs/* /usr/share/doc/curl-7.16.3 &&
cd /sources/blfs/ && rm -rf curl-7.16.3
#wget "http://downloads.sourceforge.net/curlftpfs/curlftpfs-0.9.1.tar.gz?modtime=1175788159&big_mirror=0"
tar xf curlftpfs-0.9.1.tar.gz &&
cd curlftpfs-0.9.1 &&
./configure --prefix=/usr &&
make &&
make install &&
cd /sources/blfs/ && rm -rf curlftpfs-0.9.1
tar xf ntfs-3g-1.710.tgz &&
cd ntfs-3g-1.710 &&
./configure --prefix=/usr &&
make &&
make install &&
cd /sources/blfs/ && rm -rf ntfs-3g-1.710
ln -sf /proc/mounts /etc/mtab
cat > /etc/rc.d/init.d/mountfs <<"EOF"
#!/bin/sh
########################################################################
# Begin $rc_base/init.d/mountfs
#
# Description : File System Mount Script
#
# Authors : Gerard Beekmans - gerard@linuxfromscratch.org
#
# Version : 00.00
#
# Notes :
#
########################################################################
. /etc/sysconfig/rc
. ${rc_functions}
case "${1}" in
start)
boot_mesg "Remounting root file system in read-write mode..."
[ -f /.livecd ] || mount -n -o remount,rw / >/dev/null 2>&1
evaluate_retval
# Remove fsck-related file system watermarks.
rm -f /fastboot /forcefsck /.livecd
# This will mount all filesystems that do not have _netdev in
# their option list. _netdev denotes a network filesystem.
boot_mesg "Mounting remaining file systems..."
mount -an -O no_netdev >/dev/null 2>&1
evaluate_retval
;;
stop)
boot_mesg "Unmounting all other currently mounted file systems..."
umount -a -d -r >/dev/null 2>&1
evaluate_retval
;;
*)
echo "Usage: ${0} {start|stop}"
exit 1
;;
esac
# End $rc_base/init.d/mountfs
EOF
cat > /etc/profile << "EOF"
# Begin /etc/profile
# Written for Beyond Linux From Scratch
# by James Robertson
# modifications by Dagmar d'Surreal
# System wide environment variables and startup programs.
# System wide aliases and functions should go in /etc/bashrc. Personal
# environment variables and startup programs should go into
# ~/.bash_profile. Personal aliases and functions should go into
# ~/.bashrc.
# Functions to help us manage paths. Second argument is the name of the
# path variable to be modified (default: PATH)
pathremove () {
local IFS=':'
local NEWPATH
local DIR
local PATHVARIABLE=${2:-PATH}
for DIR in ${!PATHVARIABLE} ; do
if [ "$DIR" != "$1" ] ; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
export $PATHVARIABLE="$NEWPATH"
}
pathprepend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
}
pathappend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}
# Set the initial path
export PATH=/bin:/usr/bin
if [ $EUID -eq 0 ] ; then
pathappend /sbin:/usr/sbin
unset HISTFILE
fi
# Setup some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
# Setup a red prompt for root and a green one for users.
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi
for script in /etc/profile.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done
# Now to clean up
unset pathremove pathprepend pathappend
# End /etc/profile
EOF
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
cat > /etc/profile.d/dircolors.sh << "EOF"
# Setup for /bin/ls to support color, the alias is in /etc/bashrc.
if [ -f "/etc/dircolors" ] ; then
eval $(dircolors -b /etc/dircolors)
if [ -f "$HOME/.dircolors" ] ; then
eval $(dircolors -b $HOME/.dircolors)
fi
fi
alias ls='ls --color=auto'
EOF
cat > /etc/profile.d/readline.sh << "EOF"
# Setup the INPUTRC environment variable.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
INPUTRC=/etc/inputrc
fi
export INPUTRC
EOF
cat > /etc/profile.d/umask.sh << "EOF"
# By default we want the umask to get set.
if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
umask 002
else
umask 022
fi
EOF
cat > /etc/profile.d/i18n.sh << "EOF"
# Set up i18n variables
export LANG=zh_CN.UTF-8
EOF
cat > /etc/bashrc << "EOF"
# Begin /etc/bashrc
# Written for Beyond Linux From Scratch
# by James Robertson
# updated by Bruce Dubbs
# System wide aliases and functions.
# System wide environment variables and startup programs should go into
# /etc/profile. Personal environment variables and startup programs
# should go into ~/.bash_profile. Personal aliases and functions should
# go into ~/.bashrc
# Provides a colored /bin/ls command. Used in conjunction with code in
# /etc/profile.
alias ls='ls --color=auto'
# Provides prompt for non-login shells, specifically shells started
# in the X environment. [Review the LFS archive thread titled
# PS1 Environment Variable for a great case study behind this script
# addendum.]
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi
# End /etc/bashrc
EOF
cat > ~/.bash_profile << "EOF"
# Begin ~/.bash_profile
# Written for Beyond Linux From Scratch
# by James Robertson
# updated by Bruce Dubbs
# Personal environment variables and startup programs.
# Personal aliases and functions should go in ~/.bashrc. System wide
# environment variables and startup programs are in /etc/profile.
# System wide aliases and functions are in /etc/bashrc.
append () {
# First remove the directory
local IFS=':'
local NEWPATH
for DIR in $PATH; do
if [ "$DIR" != "$1" ]; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
# Then append the directory
export PATH=$NEWPATH:$1
}
if [ -f "$HOME/.bashrc" ] ; then
source $HOME/.bashrc
fi
if [ -d "$HOME/bin" ] ; then
append $HOME/bin
fi
unset append
# End ~/.bash_profile
EOF
cat > ~/.bashrc << "EOF"
# Begin ~/.bashrc
# Written for Beyond Linux From Scratch
# by James Robertson
# Personal aliases and functions.
# Personal environment variables and startup programs should go in
# ~/.bash_profile. System wide environment variables and startup
# programs are in /etc/profile. System wide aliases and functions are
# in /etc/bashrc.
if [ -f "/etc/bashrc" ] ; then
source /etc/bashrc
fi
# End ~/.bashrc
EOF
dircolors -p > /etc/dircolors
cat > /etc/shells << "EOF"
# Begin /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/proftpdshell
# End /etc/shells
EOF
cd /initrd
find . | cpio -o -H newc | gzip -9 > /boot/initrd.img-2.6.22.1
umount $LFS/{proc,sys,dev/shm,dev/pts,dev} #在宿主系统中执行
/sources/squashfs3.2-r2/squashfs-tools/mksquashfs bin boot dev etc home lib media mnt opt proc root sbin srv sys tmp usr var /sources/root.sqfs
cd $LFS
mkdir -p isolinux/boot/grub
cp ${LFS}/boot/{initrd.img-2.6.22.1,vmlinuz-2.6.22.1} isolinux/boot/
cp ${LFS}/usr/lib/grub/i386-pc/{stage2_eltorito,stage1,stage2} isolinux/boot/grub/
cp ${LFS}/sources/root.sqfs isolinux/
cat > isolinux/boot/grub/menu.lst <<"EOF"
default 0
timeout 5
title lfs(kernel 2.6.22.1)
kernel /boot/vmlinuz-2.6.22.1 vga=788
initrd /boot/initrd.img-2.6.22.1
EOF
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o lfs.iso isolinux