$ su - # cat > $LFS/etc/passwd << "EOF" root:x:0:0:root:/root:/bin/bash claudio:x:500:500:Claudio Nieder:/home/claudio:/bin/bash EOF # cat > $LFS/etc/group << "EOF" root:x:0: bin:x:1: sys:x:2: kmem:x:3: tty:x:4: uucp:x:5: daemon:x:6: floppy:x:7: disk:x:8: claudio:x:500: admin:x:50000:claudio EOF # mount proc $LFS/proc -t proc # cat > $LFS/root/.bashrc << 'EOF' umask 022 export LESS='-degiqMh3' export LESSCHARSET='latin1' export PAGER='/usr/bin/less' export PATH=/bin:/usr/bin:/sbin:/usr/sbin if [ "$PS1" != "" ]; then export PS1='\nRC=$?; \d \t; \u@\H ${DISPLAY}\nLFS: ${DIRSTACK[*]}\n\$ ' auto_resume='prefix' shopt -s checkhash shopt -s checkwinsize shopt -s cmdhist shopt -s execfail shopt -s histreedit shopt -s histverify shopt -s mailwarn shopt -s shift_verbose dir() { ls -CF "$@"; } ll() { ls -lF "$@"; } fi EOF # ln -s .bashrc $LFS/root/.bash_profile
The devfs filesystem is used later, but some devices are needed already during installation, so they have to be created right away.
Note:To keep the setting of TERM one should add TERM=$TERM after HOME=/root. I don't know if here it does more harm than good, as glibc is not installed, maybe it's better to add later.
# cd $LFS # chroot $LFS /usr/bin/env -i HOME=/root /bin/bash --login # mknod /dev/null c 1 3 # chmod 666 /dev/null # mknod /dev/hda13 b 3 13 # chmod 600 /dev/hda13
# cd /var/src/man-pages # tar xyvf man-pages-1.35.tar.bz2 # cd man-pages-1.35 # make install
# cd /var/src/glibc # tar xzvf glibc-2.2.3.tar.gz # cd glibc-2.2.3 # tar xzvf ../glibc-linuxthreads-2.2.3.tar.gz # mkdir /var/src/glibc/glibc-build # cd /var/src/glibc/glibc-build # sed s/"\$(PERL)"/"\/usr\/bin\/perl"/ ../glibc-2.2.3/malloc/Makefile > tmp~ # mv tmp~ ../glibc-2.2.3/malloc/Makefile # sed "s/root/0/" ../glibc-2.2.3/login/Makefile > tmp~ # mv tmp~ ../glibc-2.2.3/login/Makefile # ../glibc-2.2.3/configure --prefix=/usr --enable-add-ons --libexecdir=/usr/bin # sed s/"cross-compiling = yes"/"cross-compiling = no"/ config.make > config.make~ # mv config.make~ config.make # make # touch /etc/ld.so.conf # make install # make localedata/install-locales # ln -sf /usr/share/zoneinfo/right/Europe/Zurich /etc/localtime # exit # chroot $LFS /usr/bin/env -i HOME=/root TERM=$TERM /bin/bash --login
I want again to be able to compile under a non-root user
# mkdir /home/claudio # chown claudio:claudio /home/claudio # cp -i /root/.bashrc /home/claudio/.bashrc # ln -s .bashrc /home/claudio/.bash_profile
# su - claudio $ cd /var/src/ed $ tar xzvf ed-0.2.tar.gz $ cd ed-0.2 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/ed/ed-0.2 # make install # mv -i /usr/bin/ed /usr/bin/red /bin
# su - claudio $ cd /var/src/patch $ tar xzvf patch-2.5.4.tar.gz $ cd patch-2.5.4 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/patch/patch-2.5.4 # make install
# su - claudio $ cd /var/src/findutils $ tar xzvf findutils-4.1.tar.gz $ cd findutils-4.1 $ bzcat ../findutils-4.1.patch.bz2 | patch -Np1 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/findutils/findutils-4.1 # make libexecdir=/usr/bin install
# su - claudio $ cd /var/src/mawk $ mv -i mawk-1.3.3 mawk-1.3.3-static $ tar xzvf mawk1.3.3.tar.gz $ cd mawk-1.3.3 $ ./configure $ make $ exit # cd /var/src/mawk/mawk-1.3.3 # make BINDIR=/usr/bin MANDIR=/usr/share/man/man1 install # cd /usr/bin # ln -s mawk awk
# su - claudio $ cd /var/src/ncurses $ tar xzvf ncurses-5.2.tar.gz $ cd ncurses-5.2 $ ./configure --prefix=/usr --libdir=/lib --with-shared --disable-termcap $ make $ exit # cd /var/src/ncurses/ncurses-5.2 # make install # cd /lib # ln -s libncurses.a libcurses.a
# su - claudio $ cd /var/src/vim $ tar xzvf vim-5.7-src.tar.gz $ tar xzvf vim-5.7-rt.tar.gz $ cd vim-5.7 $ ./configure --prefix=/usr --localstatedir=/var/lib/vim $ make $ exit # cd /var/src/vim/vim-5.7 # make install # cd /usr/bin # ln -s vim vi # mkdir /var/lib/vim
# su - claudio $ cd /var/src/gcc $ mv -i gcc-2.95.3 gcc-2.95.3-static $ mv -i gcc-build gcc-build-static $ tar xzvf gcc-2.95.3.tar.gz $ mkdir /var/src/gcc/gcc-build $ cd /var/src/gcc/gcc-build $ ../gcc-2.95.3/configure --prefix=/usr \ --with-gxx-include-dir=/usr/include/g++ \ --enable-shared --enable-languages=c,c++ $ make bootstrap $ exit # cd /var/src/gcc/gcc-build # make install
# su - claudio $ cd /var/src/bison $ tar xzvf bison-1.28.tar.gz $ cd bison-1.28 $ ./configure --prefix=/usr --datadir=/usr/share/bison $ make $ exit # cd /var/src/bison/bison-1.28 # make install # cat > /usr/bin/yacc << "EOF" #!/bin/sh /usr/bin/bison -y "$@" EOF # chmod 755 /usr/bin/yacc
# su - claudio $ cd /var/src/less $ tar xzvf less-358.tar.gz $ cd less-358 $ ./configure --prefix=/usr --bindir=/bin $ make $ exit # cd /var/src/less/less-358 # make install
It seems groff 1.17 exists. Review build instructions
# su - claudio $ cd /var/src/groff $ tar xzvf groff-1.16.1.tar.gz $ cd groff-1.16.1 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/groff/groff-1.16.1 # make install
# su - claudio $ cd /var/src/man $ tar xyvf man-1.5i.tar.bz2 $ cd man-1.5i $ bzcat ../man-1.5i.patch.bz2 | patch -Np1 $ ./configure -default $ make $ exit # cd /var/src/man/man-1.5i # make install
Note:If possible I'd prefer building perl only after a reboot into LFS.
# su - claudio $ cd /var/src/perl $ tar xzvf perl-5.6.1.tar.gz $ cd perl-5.6.1 $ ./Configure -Dprefix=/usr $ make $ exit # cd /var/src/perl/perl-5.6.1 # make install
# su - claudio $ cd /var/src/m4 $ tar xzvf m4-1.4.tar.gz $ cd m4-1.4 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/m4/m4-1.4 # make install
# su - claudio $ cd /var/src/texinfo $ mv -i texinfo-4.0 texinfo-4.0-static $ tar xzvf texinfo-4.0.tar.gz $ cd texinfo-4.0 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/texinfo/texinfo-4.0 # make install # make TEXMF=/usr/share/texmf install-tex
# su - claudio $ cd /var/src/autoconf $ tar xzvf autoconf-2.13.tar.gz $ cd autoconf-2.13 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/autoconf/autoconf-2.13 # make install
# su - claudio $ cd /var/src/automake $ tar xzvf automake-1.4.tar.gz $ cd automake-1.4 $ ./configure --prefix=/usr $ exit # cd /var/src/automake/automake-1.4 # make install
# su - claudio $ cd /var/src/bash $ mv -i bash-2.05 bash-2.05-static $ tar xzvf bash-2.05.tar.gz $ cd bash-2.05 $ ./configure --prefix=/usr --enable-usg-echo-default --with-curses $ make $ exit # cd /var/src/bash/bash-2.05 # make install # exit # mv $LFS/usr/bin/bash $LFS/usr/bin/bashbug $LFS/bin # chroot $LFS /usr/bin/env -i HOME=/root TERM=$TERM /bin/bash --login
# su - claudio $ cd /var/src/flex $ tar xzvf flex-2.5.4a.tar.gz $ cd flex-2.5.4 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/flex/flex-2.5.4 # make install # cd /usr/bin # ln -s flex lex
# su - claudio $ cd /var/src/file $ tar xzvf file-3.35.tar.gz $ cd file-3.35 $ ./configure --prefix=/usr --datadir=/usr/share/misc $ make $ exit # cd /var/src/file/file-3.35 # make install
libtool is up to 1.4. Review build instructions.
# su - claudio $ cd /var/src/libtool $ tar xzvf libtool-1.3.5.tar.gz $ cd libtool-1.3.5 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/libtool/libtool-1.3.5 # make install
Needs INSTALL_OPTS="-m 755" in make install.
# su - claudio $ cd /var/src/bin86 $ tar xzvf bin86-0.15.5.tar.gz $ mv -i bin86 bin86-0.15.5 $ cd bin86-0.15.5 $ make $ exit # cd /var/src/bin86/bin86-0.15.5 # make PREFIX=/usr install
# su - claudio $ cd /var/src/binutils $ mv -i binutils-2.11 binutils-2.11-static $ tar xzvf binutils-2.11.tar.gz $ cd binutils-2.11 $ ./configure --prefix=/usr --enable-shared $ make -e tooldir=/usr $ exit # cd /var/src/binutils/binutils-2.11 # make -e tooldir=/usr install # make -e tooldir=/usr install-info
# su - claudio $ cd /var/src/bzip2 $ mv -i bzip2-1.0.1 bzip2-1.0.1-static $ tar xzvf bzip2-1.0.1.tar.gz $ cd bzip2-1.0.1 $ make -f Makefile-libbz2_so $ make bzip2recover libbz2.a $ exit # cd /var/src/bzip2/bzip2-1.0.1 # cp bzip2-shared /bin/bzip2 # cp bzip2recover /bin # cp bzip2.1 /usr/share/man/man1 # cp bzlib.h /usr/include # cp -a libbz2.so* libbz2.a /lib # rm /usr/lib/libbz2.a # cd /bin # ln -sf bzip2 bunzip2 # ln -sf bzip2 bzcat # cd /usr/share/man/man1 # ln -s bzip2.1 bunzip2.1 # ln -s bzip2.1 bzcat.1 # ln -s bzip2.1 bzip2recover.1
# su - claudio $ cd /var/src/gettext $ tar xzvf gettext-0.10.37.tar.gz $ cd gettext-0.10.37 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/gettext/gettext-0.10.37 # make install
# su - claudio $ cd /var/src/kbd $ tar xzvf kbd-1.05.tar.gz $ cd kbd-1.05 $ ./configure --datadir=/usr/share/kbd $ make $ exit # cd /var/src/kbd/kbd-1.05 # make install # rm /usr/share/kbd/keymaps/i386/qwerty/defkeymap.map.gz # cd /usr/share/kbd/keymaps # ln -s i386/qwertz/sg-latin1.map.gz defkeymap.map.gz
# su - claudio $ cd /var/src/diffutils $ mv -i diffutils-2.7 diffutils-2.7-static $ tar xzvf diffutils-2.7.tar.gz $ cd diffutils-2.7 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/diffutils/diffutils-2.7 # make install
# su - claudio $ cd /var/src/e2fsprogs $ tar xzvf e2fsprogs-1.19.tar.gz $ cd e2fsprogs-1.19 $ ./configure --prefix=/usr --with-root-prefix= --enable-elf-shlibs $ make $ exit # cd /var/src/e2fsprogs/e2fsprogs-1.19 # make install # make install-libs
It seems fileutils-4.1 is out. Verify the build instructions.
# su - claudio $ cd /var/src/fileutils $ mv -i fileutils-4.0 fileutils-4.0-static $ tar xzvf fileutils-4.0.tar.gz $ cd fileutils-4.0 $ bzcat ../fileutils-4.0.patch.bz2 | patch -Np1 $ ./configure --prefix=/usr --bindir=/bin --libexecdir=/bin $ make $ exit # cd /var/src/fileutils/fileutils-4.0 # make install
# su - claudio $ cd /var/src/grep $ mv -i grep-2.4.2 grep-2.4.2-static $ tar xzvf grep-2.4.2.tar.gz $ cd grep-2.4.2 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/grep/grep-2.4.2 # make install
# su - claudio $ cd /var/src/gzip $ mv -i gzip-1.2.4a gzip-1.2.4a-static $ tar xzvf gzip-1.2.4a.tar.gz $ cd gzip-1.2.4a $ ./configure --prefix=/usr $ make $ exit # cd /var/src/gzip/gzip-1.2.4a # make install # cd /usr/bin # mv gzip /bin # cd /bin # ln -sf gzip gunzip # ln -sf gzip zcat # ln -s gzip compress # ln -s gzip uncompress
# su - claudio $ cd /var/src/lilo $ tar xzvf lilo-21.7.3.tar.gz $ mv -i lilo-21.7.3 lilo-21.7.4 $ cd lilo-21.7.4 $ patch -Np1 -i ../patch-21.7.3-to-21.7.4-diff.txt $ make $ exit # cd /var/src/lilo/lilo-21.7.4 # make install
Note: make want to install itself sgid kmem, to be able to get loadavg (needed for working -l option). Because /dev/kmem is missing, configure can't determine the group of kmem. Because of that chgrp fails during make install, but that's harmless.
# su - claudio $ cd /var/src/make $ mv -i make-3.79.1 make-3.79.1-static $ tar xzvf make-3.79.1.tar.gz $ cd make-3.79.1 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/make/make-3.79.1 # make install
newer version available.review build instructions
# su - claudio $ cd /var/src/modutils $ tar xyvf modutils-2.4.5.tar.bz2 $ cd modutils-2.4.5 $ ./configure $ make $ exit # cd /var/src/modutils/modutils-2.4.5 # make install
# su - claudio $ cd /var/src/procinfo $ tar xzvf procinfo-18.tar.gz $ cd procinfo-18 $ sed "s/-ltermcap/-lncurses/" Makefile | make -f - $ exit # cd /var/src/procinfo/procinfo-18 # make install
# su - claudio $ cd /var/src/procps $ tar xzvf procps-2.0.7.tar.gz $ cd procps-2.0.7 $ sed "s/XConsole/#XConsole/" Makefile | make -f - $ exit # cd /var/src/procps/procps-2.0.7 # sed "s/XConsole/#XConsole/" Makefile | make -f - install # mv -i /usr/bin/kill /bin
# su - claudio $ cd /var/src/psmisc $ tar xzvf psmisc-19.tar.gz $ mv -i psmisc psmisc-19 $ cd psmisc-19 $ sed "s/-ltermcap/-lncurses/" Makefile | make -f - $ exit # cd /var/src/psmisc/psmisc-19 # make install
# su - claudio $ cd /var/src/sed $ mv -i sed-3.02 sed-3.02-static $ tar xzvf sed-3.02.tar.gz $ cd sed-3.02 $ ./configure --prefix=/usr --bindir=/bin $ make $ exit # cd /var/src/sed/sed-3.02 # make install
Note: newer LFS book patches sh-utils
# su - claudio $ cd /var/src/sh-utils $ mv -i sh-utils-2.0 sh-utils-2.0-static $ tar xzvf sh-utils-2.0.tar.gz $ cd sh-utils-2.0 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/sh-utils/sh-utils-2.0 # make install # cd /usr/bin # mv date echo false pwd stty /bin # mv su true uname hostname /bin # ln -s test [
# su - claudio $ cd /var/src/shadowpwd $ tar xzvf shadow-20001016.tar.gz $ cd shadow-20001016 $ bzcat ../shadow-20001016.patch.bz2 | patch -Np1 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/shadowpwd/shadow-20001016 # make install # cd etc # cp -i limits login.access /etc # sed "s|/var/spool/mail|/var/mail|" login.defs.linux > /etc/login.defs
# su - claudio $ cd /var/src/sysvinit $ tar xzvf sysvinit-2.78.tar.gz $ cd sysvinit-2.78 $ bzcat ../sysvinit-2.78.patch.bz2 | patch -Np1 $ cd src $ make $ exit # cd /var/src/sysvinit/sysvinit-2.78/src # make install
Note: newer LFS version add --bindir=$LFS/bin to configure and tar is NOT moved from /usr/bin to /bin.
# su - claudio $ cd /var/src/tar $ mv -i tar-1.13 tar-1.13-static $ tar xzvf tar-1.13.tar.gz $ cd tar-1.13/src $ bzcat ../../gnutarpatch.txt.bz2 | patch $ cd .. $ ./configure --prefix=/usr --libexecdir=/usr/bin $ make $ exit # cd /var/src/tar/tar-1.13 # make install # mv /usr/bin/tar /bin
# su - claudio $ cd /var/src/textutils $ mv -i textutils-2.0 textutils-2.0-static $ tar xzvf textutils-2.0.tar.gz $ cd textutils-2.0 $ ./configure --prefix=/usr $ make $ exit # cd /var/src/textutils/textutils-2.0 # make install # mv /usr/bin/cat /bin
# su - claudio $ cd /var/src/utillinux $ tar xyvf util-linux-2.11a.tar.bz2 $ cd util-linux-2.11a $ sed "s|etc/adjtime\"\$|var/lib/hwclock/adjtime\"|" hwclock/hwclock.c > hwclock~ $ mv hwclock~ hwclock/hwclock.c $ sed -e s/HAVE_SLN=no/HAVE_SLN=yes/ MCONFIG > MCONFIG~ $ mv MCONFIG~ MCONFIG $ ./configure $ make $ exit # cd /var/src/utillinux/util-linux-2.11a # make install # mkdir /var/lib/hwclock
This is installed as I did in the past. I wonder if some or all binaries should rather be installed in /bin or /sbin.
# su - claudio $ cd /var/src/daemontools $ tar xzvf daemontools-0.70.tar.gz $ tar xzvf daemontools-0.70-man.tar.gz $ cd daemontools-0.70 $ echo '/opt/daemontools-0.70' >conf-home $ sed "s|<sys/time.h>|<time.h>|" tai64nlocal.c > tai64nlocal.c~ $ mv tai64nlocal.c~ tai64nlocal.c $ make $ exit # cd /var/src/daemontools/daemontools-0.70 # mkdir -p /opt/daemontools-0.70 # make setup check # cd ../daemontools-0.70-man # mkdir -p /opt/daemontools-0.70/man/man8 # cp -i *.8 /opt/daemontools-0.70/man/man8 # ln -s /opt/daemontools-0.70/bin/* /usr/bin # ln -s /opt/daemontools-0.70/man/man8/* /usr/man/man8
# su - claudio $ cd /var/src/read_syslog $ gcc -Wall -o read_syslog read_syslog.c $ exit # cd /var/src/read_syslog # cp -i read_syslog /usr/bin
# su - claudio $ cd /var/src/devfsd $ tar xyvf devfsd-v1.3.11.tar.bz2 $ mv -i devfsd devfsd-1.3.11 $ cd devfsd-1.3.11 $ make $ exit # cd /var/src/devfsd/devfsd-1.3.11 # make install
# su - claudio $ cd /var/src/net-tools $ tar xyvf net-tools-1.60.tar.bz2 $ cd net-tools-1.60 $ make $ exit # cd /var/src/net-tools/net-tools-1.60 # make install
# su - claudio $ cd /var/src/wget $ tar xzvf wget-1.6.tar.gz $ cd wget-1.6 $ ./configure --prefix=/opt/wget-1.6 $ make $ exit # cd /var/src/wget/wget-1.6 # make install
# touch /root/.vimrc # cat > /etc/nsswitch.conf << "EOF" passwd: files group: files shadow: files publickey: files hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: db files EOF # pwconv # passwd # passwd claudio # cat > /etc/protocols << "EOF" ip 0 IP icmp 1 ICMP 1gmp 2 IGMP ipencap 4 IP-ENCAP tcp 6 TCP udp 17 UDP ipv6 41 IPv6 ipv6-route 43 IPv6-Route ipv6-frag 44 IPv6-Frag ipv6-crypt 50 IPv6-Crypt ipv6-auth 51 IPv6-Auth ipv6-icmp 58 IPv6-ICMP ipv6-nonxt 59 IPv6-NoNxt ipv6-opts 60 IPv6-Opts EOF # cat > /etc/services << "EOF" ssh 22/tcp smtp 25/tcp domain 53/tcp domain 53/udp http 80/tcp pop3 110/tcp auth 113/tcp imap2 143/tcp https 443/tcp EOF # cat > /etc/hosts << "EOF" 127.0.0.1 localhost.localdomain localhost EOF # cat > /etc/inittab << "EOF" id:2:initdefault: si::sysinit:/etc/rc.d/rc.startup l0:0:wait:/etc/rc.d/rc.halt l1:S1:wait:/etc/rc.d/rc.single l2:2:wait:/etc/rc.d/rc.2 l3:3:wait:/etc/rc.d/rc.3 l4:4:wait:/etc/rc.d/rc.4 l5:5:wait:/etc/rc.d/rc.5 l6:6:wait:/etc/rc.d/rc.reboot ft:06:respawn:/sbin/sulogin ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now su:S1:respawn:/sbin/sulogin 1:2345:respawn:/sbin/agetty /dev/vc/1 9600 2:2345:respawn:/sbin/agetty /dev/vc/2 9600 3:2345:respawn:/sbin/agetty /dev/vc/3 9600 4:2345:respawn:/sbin/agetty /dev/vc/4 9600 5:2345:respawn:/sbin/agetty /dev/vc/5 9600 6:2345:respawn:/sbin/agetty /dev/vc/6 9600 EOF # touch /var/log/wtmp /var/log/btmp /var/log/lastlog # chmod 644 /var/log/wtmp /var/log/btmp /var/log/lastlog # mkdir /etc/rc.d # cd /etc/rc.d # cat >rc.startup << "EOF" #!/bin/bash -v /sbin/hwclock -u --hctosys /usr/bin/loadkeys -d /sbin/ifconfig lo 127.0.0.1 /bin/hostname garfield.inodes.ch /bin/mount -n -t proc /proc /proc # Otherwise fsck can't use labels /bin/mount -n -o remount,ro / # Make sure root is ro for fsck /sbin/fsck -a -A -C -T if [ $? -gt 1 ]; then /sbin/sulogin /sbin/reboot -f fi /bin/mount -n -o remount,rw / || /sbin/sulogin ln -sf /proc/mounts /etc/mtab ln -sf /boot/System.map-`uname -r` /boot/System.map /bin/mount -n -a /sbin/swapon -a touch /var/run/utmp chmod 644 /var/run/utmp rm /boot/System.map ln -s /boot/System.map-`uname -r` /boot/System.map EOF # cat >rc.single << "EOF" #!/bin/bash -v EOF # cat >rc.2 << "EOF" #!/bin/bash -v cp -a /etc/daemons/* /service ( cd /service; svscan & ) ifconfig wvlan0 inet 10.0.16.1 netmask 255.255.255.0 route add default gw 10.0.16.2 EOF # cat >rc.3 << "EOF" #!/bin/bash -v echo "This runlevel is not (yet) used." EOF # cp -i rc.3 rc.4 # cp -i rc.3 rc.5 # cat >rc.shutdown << "EOF" /sbin/hwclock -u --systohc /sbin/ifconfig eth0 down /sbin/ifconfig lo down /sbin/killall5 -15 /sbin/killall5 -9 /sbin/swapoff -a /bin/umount -n -a -r EOF # cat >rc.halt << "EOF" #!/bin/bash -v . /etc/rc.d/rc.shutdown /sbin/halt -d -f -i -p EOF # cat >rc.reboot << "EOF" #!/bin/bash -v . /etc/rc.d/rc.shutdown /sbin/reboot -d -f -i EOF # chmod 754 * # chmod 644 rc.shutdown
PCMCIA cardmgr
# mkdir -p /etc/daemons/cardmgr/log # cd /etc/daemons/cardmgr # cat >run << "EOF" #!/bin/sh /sbin/insmod /lib/modules/`uname -r`/pcmcia_core.o /sbin/insmod /lib/modules/`uname -r`/i82365.o /sbin/insmod /lib/modules/`uname -r`/ds.o touch /var/run/pcmcia-scheme exec /usr/bin/fghack /sbin/cardmgr -v -s /var/run/pcmcia_stab 2>&1 EOF # cat >log/run << "EOF" #!/bin/sh exec /usr/bin/multilog t /var/log/cardmgr EOF # chmod +t . # chmod 755 run log/run # mkdir /var/log/cardmgr
syslog
# mkdir -p /etc/daemons/syslog/log # cd /etc/daemons/syslog # cat >run << "EOF" #!/bin/sh exec /usr/bin/read_syslog 2>&1 EOF # cat >log/run << "EOF" #!/bin/sh exec /usr/bin/multilog t /var/log/syslog EOF # chmod +t . # chmod 755 run log/run # mkdir /var/log/syslog
klog
# mkdir /etc/daemons/klog # cd /etc/daemons/klog # cat >run << "EOF" #!/bin/sh exec /usr/bin/multilog t /var/log/klog </proc/kmsg EOF # chmod 755 run # mkdir /var/log/klog # mkdir /service # cat >/etc/fstab << "EOF" LABEL=lfs / ext2 defaults 1 1 /dev/ide/host0/bus0/target0/lun0/part6 swap swap defaults 0 0 proc /proc proc defaults 0 0 tmpfs /service tmpfs defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 tmpfs /var/lock tmpfs defaults 0 0 tmpfs /var/run tmpfs defaults 0 0 EOF
lilo.conf is set to install itself only in the boot record of the LFS partition, and not in the master boot record. This, because I use xosl as master boot loader.
# su - claudio $ cd /var/src/linux/linux-2.4.4 $ make mrproper $ make menuconfig $ sed 's/^EXTRAVERSION =.*$/EXTRAVERSION = _lfs1/' Makefile > Makefile~ $ mv Makefile~ Makefile $ make dep $ make bzImage $ make modules $ exit # cd /var/src/linux/linux-2.4.4 # make modules_install # cp -i arch/i386/boot/bzImage /boot/vmlinuz-2.4.4_lfs1 # cp -i System.map /boot/System.map-2.4.4_lfs1 # cp -i .config /boot/config-2.4.4_lfs1 # cat > /etc/lilo.conf << "EOF" boot=/dev/hda10 map=/boot/map install=/boot/boot.b timeout=100 delay=100 prompt lba32 default=linux image=/boot/vmlinuz-2.4.4_lfs1 label=linux read-only root=/dev/hda10 vga=2 append="devfs=mount" EOF # /sbin/lilo # exit # umount $LFS/proc # umount $LFS # init 6