LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1138|回复: 8

建立 CLFS 2.0 ARM 的全自动傻瓜脚本

[复制链接]
发表于 2008-10-31 15:45:03 | 显示全部楼层 |阅读模式
为了简明,每一个包的编译都单独使用一个函数来执行
执行方法:把所有的package和patch下载回来,和脚本放在同一目录,执行脚本即可

#################################################

#!/bin/bash

set +h
umask 022
export LC_ALL=POSIX
export CLFS_HOST="$(echo $MACHTYPE | sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")"
export CLFS_TARGET="arm-unknown-linux-gnu"
export CLFS=$(pwd)/build_clfs
export PATH=${CLFS}/cross-tools/bin:/bin:/usr/bin
export CLFS_HOSTNAME=CLFS
unset CFLAGS
unset CXXFLAGS

create_dirs_files()
{
        mkdir -pv ${CLFS}/{bin,boot,dev,{etc/,}opt,home,lib,mnt}
        mkdir -pv ${CLFS}/{proc,media/{floppy,cdrom},sbin,srv,sys}
        mkdir -pv ${CLFS}/var/{lock,log,mail,run,spool}
        mkdir -pv ${CLFS}/var/{opt,cache,lib/{misc,locate},local}
        install -dv -m 0750 ${CLFS}/root
        install -dv -m 1777 ${CLFS}{/var,}/tmp
        mkdir -pv ${CLFS}/usr/{,local/}{bin,include,lib,sbin,src}
        mkdir -pv ${CLFS}/usr/{,local/}share/{doc,info,locale,man}
        mkdir -pv ${CLFS}/usr/{,local/}share/{misc,terminfo,zoneinfo}
        mkdir -pv ${CLFS}/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}
        for dir in ${CLFS}/usr{,/local}; do
          ln -sfnv share/{man,doc,info} ${dir}
        done

        cat > ${CLFS}/etc/passwd << "EOF"
root::0:0:root:/root:/bin/bash
EOF
        cat > ${CLFS}/etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape: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:
EOF
        touch ${CLFS}/var/run/utmp ${CLFS}/var/log/{btmp,lastlog,wtmp}
        chmod -v 664 ${CLFS}/var/run/utmp ${CLFS}/var/log/lastlog
}

linux_headers()
{
        tar xf linux-2.6.22.tar.bz2 &&
        cd linux-2.6.22 &&
        make include/linux/version.h &&
        install -dv ${CLFS}/usr/include &&
        cp -av include/{asm-generic,linux,mtd,scsi,sound} ${CLFS}/usr/include &&
        cp -av include/asm-arm ${CLFS}/usr/include/asm &&
        sed -i 's/asm/&-generic/g' ${CLFS}/usr/include/linux/errno.h &&
        cd .. &&
        rm -rf linux-2.6.22
}

cross_binutils()
{
        tar xf binutils-2.18.tar.bz2 &&
        cd binutils-2.18 &&
        patch -Np1 -i ../binutils-2.18-posix-1.patch &&
        mkdir ../binutils-build &&
        cd ../binutils-build &&
        AR=ar AS=as ../binutils-2.18/configure --prefix=${CLFS}/cross-tools \
           --host=${CLFS_HOST} --target=${CLFS_TARGET} --with-sysroot=${CLFS} \
           --disable-nls --enable-shared --disable-multilib &&
        make configure-host &&
        make &&
        make install &&
        cp -v ../binutils-2.18/include/libiberty.h ${CLFS}/usr/include &&
        cd .. &&
        rm -rf binutils-2.18 binutils-build
}

cross_glibc_headers()
{
        tar xf glibc-2.6.1.tar.bz2 &&
        cd glibc-2.6.1 &&
        cp configure{,.orig} &&
        sed -e 's/3.4/3.[0-9]/g' configure.orig > configure &&
        tar xf ../glibc-ports-2.6.1.tar.bz2 &&
        mv -v glibc-ports-2.6.1 ports &&
        mkdir -v ../glibc-build &&
        cd ../glibc-build &&
        echo "libc_cv_forced_unwind=yes" > config.cache &&
        echo "libc_cv_c_cleanup=yes" >> config.cache &&
        echo "libc_cv_arm_tls=yes" >> config.cache &&
        echo "install_root=${CLFS}" > configparms &&
        CC=gcc ../glibc-2.6.1/configure --prefix=/usr \
            --host=${CLFS_TARGET} --build=${CLFS_HOST} \
            --with-headers=${CLFS}/usr/include --cache-file=config.cache &&
        make install-headers &&
        cp -v bits/stdio_lim.h ${CLFS}/usr/include/bits &&
        touch ${CLFS}/usr/include/gnu/stubs.h &&
        cp -v ../glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h ${CLFS}/usr/include/bits &&
        cd .. &&
        rm -rf glibc-2.6.1 glibc-build
}

cross_gcc_static()
{
        tar xf gcc-4.2.1.tar.bz2 &&
        cd gcc-4.2.1 &&
        patch -Np1 -i ../gcc-4.2.1-posix-1.patch &&
        patch -Np1 -i ../gcc-4.2.1-cross_search_paths-1.patch &&
        mkdir -v ../gcc-build &&
        cd ../gcc-build &&
        ../gcc-4.2.1/configure --prefix=${CLFS}/cross-tools \
            --host=${CLFS_HOST} --target=${CLFS_TARGET} --disable-multilib \
            --with-sysroot=${CLFS} --disable-nls --disable-shared \
            --enable-languages=c &&
        make all-gcc &&
        make install-gcc &&
        cd .. &&
        rm -rf gcc-4.2.1 gcc-build
}

cross_glibc()
{
        tar xf glibc-2.6.1.tar.bz2 &&
        cd glibc-2.6.1 &&
        tar xf ../glibc-ports-2.6.1.tar.bz2 &&
        mv -v glibc-ports-2.6.1 ports &&
        patch -Np1 -i ../glibc-2.6.1-libgcc_eh-1.patch &&
        patch -Np1 -i ../glibc-2.6.1-localedef_segfault-1.patch &&
        patch -Np1 -i ../glibc-2.6.1-cross_hacks-1.patch &&
        patch -Np1 -i ../glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch &&
        mkdir -v ../glibc-build &&
        cd ../glibc-build &&
        echo "libc_cv_forced_unwind=yes" > config.cache &&
        echo "libc_cv_c_cleanup=yes" >> config.cache &&
        echo "install_root=${CLFS}" > configparms &&
        BUILD_CC="gcc" CC="${CLFS_TARGET}-gcc" \
            AR="${CLFS_TARGET}-ar" RANLIB="${CLFS_TARGET}-ranlib" \
            ../glibc-2.6.1/configure --prefix=/usr \
            --libexecdir=/usr/lib/glibc --host=${CLFS_TARGET} --build=${CLFS_HOST} \
            --disable-profile --enable-add-ons --with-tls --enable-kernel=2.6.0 \
            --with-__thread --with-binutils=${CLFS}/cross-tools/bin \
            --with-headers=${CLFS}/usr/include --cache-file=config.cache &&
        make &&
        make install &&
        make localedata/install-locales &&
        cat > ${CLFS}/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
        cp -v --remove-destination ${CLFS}/usr/share/zoneinfo/Asia/Shanghai \
            ${CLFS}/etc/localtime &&
        cat > ${CLFS}/etc/ld.so.conf << "EOF" &&
# Begin /etc/ld.so.conf

/usr/local/lib
/opt/lib

# End /etc/ld.so.conf
EOF
        cd .. &&
        rm -rf glibc-2.6.1 glibc-build
}

cross_gcc_final()
{
        tar xf gcc-4.2.1.tar.bz2 &&
        cd gcc-4.2.1 &&
        patch -Np1 -i ../gcc-4.2.1-posix-1.patch &&
        patch -Np1 -i ../gcc-4.2.1-cross_search_paths-1.patch &&
        mkdir -v ../gcc-build &&
        cd ../gcc-build &&
        ../gcc-4.2.1/configure --prefix=${CLFS}/cross-tools \
            --host=${CLFS_HOST} --target=${CLFS_TARGET} --disable-multilib \
            --with-sysroot=${CLFS} --disable-nls --enable-shared \
            --enable-languages=c,c++ --enable-__cxa_atexit \
            --enable-c99 --enable-long-long --enable-threads=posix &&
        make &&
        make install &&
        cd .. &&
        rm -rf gcc-4.2.1 gcc-build
}

cross_file()
{
        tar xf file-4.21.tar.gz &&
        cd file-4.21
        ./configure --prefix=${CLFS}/cross-tools &&
        make &&
        make install &&
        cd .. &&
        rm -rf file-4.21
}

cross_groff()
{
        tar xf groff-1.19.2.tar.gz &&
        cd groff-1.19.2 &&
        PAGE=letter ./configure --prefix=${CLFS}/cross-tools --without-x &&
        make &&
        make install &&
        cd .. &&
        rm -rf groff-1.19.2
}

cross_shadow()
{
        tar xf shadow-4.0.18.1.tar.bz2 &&
        cd shadow-4.0.18.1 &&
        patch -Np1 -i ../shadow-4.0.18.1-fixes-1.patch &&
        patch -Np1 -i ../shadow-4.0.18.1-sysroot_hacks-1.patch &&
        echo "shadow_cv_passwd_dir=${CLFS}/bin" > config.cache &&
        echo "ac_cv_func_lckpwdf=no" >> config.cache &&
        ./configure --prefix=${CLFS}/cross-tools --sbindir=${CLFS}/cross-tools/bin \
            --sysconfdir=$CLFS/etc --disable-shared --without-libpam \
            --without-audit --without-selinux --program-prefix=${CLFS_TARGET}- \
            --cache-file=config.cache &&
        cp config.h{,.orig} &&
        sed "/PASSWD_PROGRAM/s/passwd/${CLFS_TARGET}-&/" config.h.orig > config.h &&
        make &&
        make install &&
        cd .. &&
        rm -rf shadow-4.0.18.1
}

cross_tool()
{
        linux_headers &&
        cross_binutils &&
        cross_glibc_headers &&
        cross_gcc_static &&
        cross_glibc &&
        cross_gcc_final &&
        cross_file &&
        cross_groff &&
        cross_shadow
}

target_man_pages()
{
        tar xf man-pages-2.64.tar.bz2 &&
        cd man-pages-2.64 &&
        make prefix=${CLFS}/usr install &&
        cd .. &&
        rm -rf man-pages-2.64
}

target_binutils()
{
        tar xf binutils-2.18.tar.bz2 &&
        cd binutils-2.18 &&
        patch -Np1 -i ../binutils-2.18-posix-1.patch &&
        mkdir -v ../binutils-build &&
        cd ../binutils-build &&
        AR=ar AS=as ../binutils-2.18/configure --prefix=/usr \
            --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --target=${CLFS_TARGET} --enable-shared &&
        make configure-host &&
        make tooldir=/usr &&
        make DESTDIR=${CLFS} tooldir=/usr install &&
        cd .. &&
        rm -rf binutils-2.18 binutils-build
}

target_gcc()
{
        tar xf gcc-4.2.1.tar.bz2 &&
        cd gcc-4.2.1 &&
        patch -Np1 -i ../gcc-4.2.1-posix-1.patch &&
        cp libiberty/Makefile.in{,.orig} &&
        sed 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in.orig > libiberty/Makefile.in &&
        cp gcc/gccbug.in{,.orig} &&
        sed 's/@have_mktemp_command@/yes/' gcc/gccbug.in.orig > gcc/gccbug.in &&
        cp gcc/Makefile.in{,.orig} &&
        sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in &&
        mkdir -v ../gcc-build &&
        cd ../gcc-build &&
        ../gcc-4.2.1/configure --prefix=/usr --libexecdir=/usr/lib \
            --build=${CLFS_HOST} --host=${CLFS_TARGET} --target=${CLFS_TARGET} \
            --enable-shared --enable-threads=posix --enable-__cxa_atexit \
            --enable-c99 --enable-long-long --enable-clocale=gnu \
            --enable-languages=c,c++ --disable-libstdcxx-pch &&
        make &&
        make DESTDIR=${CLFS} install &&
        ln -sfv ../usr/bin/cpp ${CLFS}/lib &&
        ln -sfv gcc ${CLFS}/usr/bin/cc &&
        cd .. &&
        rm -rf gcc-4.2.1 gcc-build
}

target_sed()
{
        tar xf sed-4.1.5.tar.gz &&
        cd sed-4.1.5 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --bindir=/bin --enable-html &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf sed-4.1.5
}

target_e2fsprogs()
{
        tar xf e2fsprogs-1.40.2.tar.gz &&
        cd e2fsprogs-1.40.2 &&
        mkdir -v build &&
        cd build &&
        ../configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --with-root-prefix="" \
            --enable-elf-shlibs --disable-evms &&
        make &&
        make DESTDIR=${CLFS} install &&
        make DESTDIR=${CLFS} install-libs &&
        cd ../.. &&
        rm -rf e2fsprogs-1.40.2
}

target_coreutils()
{
        tar xf coreutils-6.9.tar.bz2 &&
        cd coreutils-6.9 &&
        patch -Np1 -i ../coreutils-6.9-suppress_uptime_kill_su-1.patch &&
        patch -Np1 -i ../coreutils-6.9-uname-1.patch &&
        sed -i "s/futimens/gl_&/" $(grep -lr futimens *) &&
        touch man/uname.1 man/touch.1 &&
        echo "fu_cv_sys_stat_statfs2_bsize=yes" > config.cache &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --cache-file=config.cache  &&
        make &&
        make DESTDIR=${CLFS} install &&
        mv -v ${CLFS}/usr/bin/{cat,chgrp,chmod,chown,cp,date} ${CLFS}/bin &&
        mv -v ${CLFS}/usr/bin/{dd,df,echo,false,hostname,ln,ls,mkdir} ${CLFS}/bin &&
        mv -v ${CLFS}/usr/bin/{mknod,mv,pwd,rm,rmdir,stty,true,uname} ${CLFS}/bin &&
        mv -v ${CLFS}/usr/bin/chroot ${CLFS}/usr/sbin &&
        mv -v ${CLFS}/usr/bin/{[,basename,head,install,nice} ${CLFS}/bin &&
        mv -v ${CLFS}/usr/bin/{readlink,sleep,sync,test,touch} ${CLFS}/bin &&
        ln -sfv ../../bin/install ${CLFS}/usr/bin &&
        cd .. &&
        rm -rf coreutils-6.9
}

target_iana_etc()
{
        tar xf iana-etc-2.20.tar.bz2 &&
        cd iana-etc-2.20 &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf iana-etc-2.20
}

target_m4()
{
        tar xf m4-1.4.10.tar.bz2 &&
        cd m4-1.4.10 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf m4-1.4.10
}

target_bison()
{
        tar xf bison-2.3.tar.bz2 &&
        cd bison-2.3 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        echo '#define YYENABLE_NLS 1' >> config.h &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf bison-2.3
}

target_ncurses()
{
        tar xf ncurses-5.6.tar.gz &&
        cd ncurses-5.6 &&
        patch -Np1 -i ../ncurses-5.6-bash_fix-1.patch &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
           --prefix=/usr --libdir=/lib --with-shared \
           --without-debug --without-ada --with-build-cc=gcc &&
        make &&
        make DESTDIR=${CLFS} install &&
        mv -v ${CLFS}/lib/lib{panel,menu,form,ncurses,ncurses++,curses}.a ${CLFS}/usr/lib &&
        rm -v ${CLFS}/lib/lib{ncurses,menu,panel,form,curses}.so &&
        ln -sfv ../../lib/libncurses.so.5 ${CLFS}/usr/lib/libcurses.so &&
        ln -sfv ../../lib/libncurses.so.5 ${CLFS}/usr/lib/libncurses.so &&
        ln -sfv ../../lib/libmenu.so.5 ${CLFS}/usr/lib/libmenu.so &&
        ln -sfv ../../lib/libpanel.so.5 ${CLFS}/usr/lib/libpanel.so &&
        ln -sfv ../../lib/libform.so.5 ${CLFS}/usr/lib/libform.so &&
        chmod -v 755 ${CLFS}/lib/lib{panel,menu,form,ncurses}.so.5.6 &&
        cd .. &&
        rm -rf ncurses-5.6
}

target_procps()
{
        tar xf procps-3.2.7.tar.gz &&
        cd procps-3.2.7 &&
        make CPPFLAGS= &&
        make DESTDIR=${CLFS} lib64=lib ldconfig= install="install -D" install &&
        cd .. &&
        rm -rf procps-3.2.7
}

target_libtool()
{
        tar xf libtool-1.5.24.tar.gz &&
        cd libtool-1.5.24 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf libtool-1.5.24
}

target_perl()
{
        tar xf perl-5.8.8.tar.bz2 &&
        cd perl-5.8.8 &&
        patch -Np1 -i ../perl-5.8.8-gcc42_fix-1.patch &&
        patch -Np1 -i ../perl-5.8.8-cross_compile-5.patch &&
        sed -i -e "s@pldlflags=''@pldlflags=\"\$cccdlflags\"@g" \
            -e "s@static_target='static'@static_target='static_pic'@g" Makefile.SH &&
        cd Cross &&
        make ARCH=arm CROSS_COMPILE=${CLFS_TARGET}- &&
        make DESTDIR=${CLFS} install &&
        cd ../.. &&
        rm -rf perl-5.8.8
}

target_readline()
{
        tar xf readline-5.2.tar.gz &&
        cd readline-5.2 &&
        patch -Np1 -i ../readline-5.2-fixes-3.patch &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr --libdir=/lib &&
        make SHLIB_XLDFLAGS=-lncurses &&
        make DESTDIR=${CLFS} install &&
        chmod -v 755 ${CLFS}/lib/lib{readline,history}.so* &&
        mv -v ${CLFS}/lib/lib{readline,history}.a ${CLFS}/usr/lib &&
        rm -v ${CLFS}/lib/lib{readline,history}.so &&
        ln -sfv ../../lib/libreadline.so.5 ${CLFS}/usr/lib/libreadline.so &&
        ln -sfv ../../lib/libhistory.so.5 ${CLFS}/usr/lib/libhistory.so &&
        cd .. &&
        rm -rf readline-5.2
}

target_zlib()
{
        tar xf zlib-1.2.3.tar.bz2 &&
        cd zlib-1.2.3 &&
        patch -Np1 -i ../zlib-1.2.3-fPIC-1.patch &&
        ./configure --prefix=/usr --shared &&
        make AR="${AR} rc" &&
        make prefix=${CLFS}/usr install &&
        mv -v ${CLFS}/usr/lib/libz.so.* ${CLFS}/lib &&
        ln -sfv ../../lib/libz.so.1 ${CLFS}/usr/lib/libz.so &&
        chmod -v 644 ${CLFS}/usr/lib/libz.a &&
        cd .. &&
        rm -rf zlib-1.2.3
}

target_autoconf()
{
        tar xf autoconf-2.61.tar.bz2 &&
        cd autoconf-2.61 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf autoconf-2.61
}

target_automake()
{
        tar xf automake-1.10.tar.bz2 &&
        cd automake-1.10 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf automake-1.10
}

target_bash()
{
        tar xf bash-3.2.tar.gz &&
        cd bash-3.2 &&
        tar xf ../bash-doc-3.2.tar.gz &&
        patch -Np1 -i ../bash-3.2-fixes-7.patch &&
        echo "bash_cv_sys_named_pipes=yes" > config.cache &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --bindir=/bin --cache-file=config.cache \
            --without-bash-malloc --with-installed-readline &&
        make &&
        make DESTDIR=${CLFS} htmldir=/usr/share/doc/bash-3.2 install &&
        ln -sfv bash ${CLFS}/bin/sh &&
        cd .. &&
        rm -rf bash-3.2
}

target_bzip2()
{
        tar xf bzip2-1.0.4.tar.gz &&
        cd bzip2-1.0.4 &&
        cp Makefile{,.orig} &&
        sed -e "/^all:/s/ test//" Makefile.orig > Makefile &&
        make -f Makefile-libbz2_so CC="${CC}" AR="${AR}" RANLIB="${RANLIB}" &&
        make clean &&
        make CC="${CC}" AR="${AR}" RANLIB="${RANLIB}" &&
        make PREFIX=${CLFS}/usr install &&
        cp -v bzip2-shared ${CLFS}/bin/bzip2 &&
        cp -av libbz2.so* ${CLFS}/lib &&
        ln -sfv ../../lib/libbz2.so.1.0 ${CLFS}/usr/lib/libbz2.so &&
        rm -v ${CLFS}/usr/bin/{bunzip2,bzcat,bzip2} &&
        ln -sfv bzip2 ${CLFS}/bin/bunzip2 &&
        ln -sfv bzip2 ${CLFS}/bin/bzcat &&
        cd .. &&
        rm -rf bzip2-1.0.4
}

target_diffutils()
{
        tar xf diffutils-2.8.7.tar.gz &&
        cd diffutils-2.8.7 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf diffutils-2.8.7
}

target_file()
{
        tar xf file-4.21.tar.gz
        cd file-4.21
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf file-4.21
}

target_findutils()
{
        tar xf findutils-4.2.31.tar.gz &&
        cd findutils-4.2.31 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --libexecdir=/usr/lib/locate \
            --localstatedir=/var/lib/locate &&
        make &&
        make DESTDIR=${CLFS} install &&
        mv -v ${CLFS}/usr/bin/find ${CLFS}/bin &&
        cp ${CLFS}/usr/bin/updatedb{,.orig} &&
        sed 's@find:=${BINDIR}@find:=/bin@' ${CLFS}/usr/bin/updatedb.orig > ${CLFS}/usr/bin/updatedb &&
        rm ${CLFS}/usr/bin/updatedb.orig &&
        cd .. &&
        rm -rf findutils-4.2.31
}

target_flex()
{
        tar xf flex-2.5.33.tar.bz2 &&
        cd flex-2.5.33 &&
        cp -v Makefile.in{,.orig} &&
        sed "s/-I@includedir@//g" Makefile.in.orig > Makefile.in &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make CC="${CC} -fPIC" libfl.a &&
        make &&
        make DESTDIR=${CLFS} install &&
        ln -sfv libfl.a ${CLFS}/usr/lib/libl.a &&
        cat > ${CLFS}/usr/bin/lex << "EOF" &&
#!/bin/sh
# Begin /usr/bin/lex

exec /usr/bin/flex -l "$@"

# End /usr/bin/lex
EOF
        chmod -v 755 ${CLFS}/usr/bin/lex &&
        cd .. &&
        rm -rf flex-2.5.33
}

target_gawk()
{
        tar xf gawk-3.1.5.tar.bz2 &&
        cd gawk-3.1.5 &&
        patch -Np1 -i ../gawk-3.1.5-segfault_fix-1.patch &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr --libexecdir=/usr/lib &&
        cat >> config.h << "EOF" &&
#define HAVE_LANGINFO_CODESET 1
#define HAVE_LC_MESSAGES 1
EOF
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf gawk-3.1.5
}

target_gettext()
{
        tar xf gettext-0.16.1.tar.gz &&
        cd gettext-0.16.1 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf gettext-0.16.1
}

target_grep()
{
        tar xf grep-2.5.3.tar.bz2 &&
        cd grep-2.5.3 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --bindir=/bin --disable-perl-regexp &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf grep-2.5.3
}

target_groff()
{
        tar xf groff-1.19.2.tar.gz &&
        cd groff-1.19.2 &&
        PAGE=letter ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make TROFFBIN=troff GROFFBIN=groff GROFF_BIN_PATH= &&
        make prefix=${CLFS}/usr install &&
        ln -sfv soelim ${CLFS}/usr/bin/zsoelim &&
        ln -sfv eqn ${CLFS}/usr/bin/geqn &&
        ln -sfv tbl ${CLFS}/usr/bin/gtbl &&
        cd .. &&
        rm -rf groff-1.19.2
}

target_gzip()
{
        tar xf gzip-1.3.12.tar.gz &&
        cd gzip-1.3.12 &&
        sed -i "s/futimens/gl_&/" $(grep -lr futimens *) &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr --bindir=/bin &&
        make &&
        make DESTDIR=${CLFS} install &&
        mv ${CLFS}/bin/z{egrep,cmp,diff,fgrep,force,grep,less,more,new} ${CLFS}/usr/bin &&
        cd .. &&
        rm -rf gzip-1.3.12
}

target_inetutils()
{
        tar xf inetutils-1.5.tar.gz &&
        cd inetutils-1.5 &&
        patch -Np1 -i ../inetutils-1.5-no_server_man_pages-2.patch &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --libexecdir=/usr/sbin --sysconfdir=/etc \
            --localstatedir=/var --disable-logger --disable-syslogd \
            --with-ncurses-include-dir="${CLFS}/usr/include" \
            --disable-whois --disable-servers &&
        make &&
        make DESTDIR=${CLFS} SUIDMODE="-m 4775" install &&
        mv -v ${CLFS}/usr/bin/ping{,6} ${CLFS}/bin &&
        cd .. &&
        rm -rf inetutils-1.5
}

target_iproute2()
{
        tar xf iproute2-2.6.19-061214.tar.gz &&
        cd iproute2-2.6.19-061214 &&
        for dir in ip misc tc; do
            cp ${dir}/Makefile{,.orig}
            sed 's/0755 -s/0755/' ${dir}/Makefile.orig > ${dir}/Makefile
        done &&
        cp misc/Makefile{,.orig} &&
        sed '/^TARGETS/s@arpd@@g' misc/Makefile.orig > misc/Makefile &&
        make CC="${CC}" SBINDIR=/sbin &&
        make DESTDIR=${CLFS} SBINDIR=/sbin install &&
        cd .. &&
        rm -rf iproute2-2.6.19-061214
}

target_kbd()
{
        tar xf kbd-1.13.tar.bz2 &&
        cd kbd-1.13 &&
        cp configure{,.orig} &&
        sed -e "s@&& ./conftest@@" configure.orig > configure &&
        cp src/Makefile.in{,.orig} &&
        sed -e "s/install -s/install/" src/Makefile.in.orig > src/Makefile.in &&
        ./configure --datadir=/lib/kbd &&
        cp make_include{,.orig} &&
        sed "/^ARCH/s/=.*/=arm/" make_include.orig > make_include &&
        make CC="${CC}" &&
        make DESTDIR=${CLFS} install &&
        mv -v ${CLFS}/usr/bin/{kbd_mode,openvt,setfont} ${CLFS}/bin &&
        cd .. &&
        rm -rf kbd-1.13
}

target_less()
{
        tar xf less-406.tar.gz &&
        cd less-406 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr --sysconfdir=/etc &&
        make &&
        make prefix=${CLFS}/usr install &&
        mv -v ${CLFS}/usr/bin/less ${CLFS}/bin &&
        cd .. &&
        rm -rf less-406
}

target_make()
{
        tar xf make-3.81.tar.bz2 &&
        cd make-3.81 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf make-3.81
}

target_man()
{
        tar xf man-1.6e.tar.gz &&
        cd man-1.6e &&
        cp configure{,.orig} &&
        sed -e "/PREPATH=/s@=.*@=\"$(eval echo ${CLFS}/{,usr/}{sbin,bin})\"@g" \
            -e 's@-is@&R@g' configure.orig > configure &&
        cp src/man.conf.in{,.orig} &&
        sed -e 's@MANPATH./usr/man@#&@g' \
            -e 's@MANPATH./usr/local/man@#&@g' \
            src/man.conf.in.orig > src/man.conf.in &&
        ./configure -confdir=/etc &&
        cp conf_script{,.orig} &&
        sed "s@${CLFS}@@" conf_script.orig > conf_script &&
        gcc src/makemsg.c -o src/makemsg &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf man-1.6e
}

target_mktemp()
{
        tar xf mktemp-1.5.tar.gz &&
        cd mktemp-1.5 &&
        patch -Np1 -i ../mktemp-1.5-add_tempfile-3.patch &&
        cp Makefile.in{,.orig} &&
        sed -e 's/-s $(PROG)/$(PROG)/' Makefile.in.orig > Makefile.in &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr --with-libc &&
        make &&
        make prefix=${CLFS}/usr install &&
        make prefix=${CLFS}/usr install-tempfile &&
        cd .. &&
        rm -rf mktemp-1.5
}

target_module_init_tools()
{
        tar xf module-init-tools-3.2.2.tar.bz2 &&
        cd module-init-tools-3.2.2 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/ --enable-zlib &&
        make &&
        make DESTDIR=${CLFS} INSTALL=install install &&
        cd .. &&
        rm -rf module-init-tools-3.2.2
}

target_patch()
{
        tar xf patch-2.5.9.tar.gz &&
        cd patch-2.5.9 &&
        echo "ac_cv_path_ed_PROGRAM=ed" > config.cache &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr --cache-file=config.cache &&
        make &&
        make prefix=${CLFS}/usr install &&
        cd .. &&
        rm -rf patch-2.5.9
}

target_psmisc()
{
        tar xf psmisc-22.5.tar.gz &&
        cd psmisc-22.5 &&
        echo "ac_cv_func_malloc_0_nonnull=yes" > config.cache &&
        echo "ac_cv_func_realloc_0_nonnull=yes" >> config.cache &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --exec-prefix="" \
            --cache-file=config.cache &&
        make &&
        make DESTDIR=${CLFS} install &&
        mv -v ${CLFS}/bin/pstree* ${CLFS}/usr/bin &&
        ln -sfv killall ${CLFS}/bin/pidof &&
        cd .. &&
        rm -rf psmisc-22.5
}

target_shadow()
{
        tar xf shadow-4.0.18.1.tar.bz2 &&
        cd shadow-4.0.18.1 &&
        patch -Np1 -i ../shadow-4.0.18.1-fixes-1.patch &&
        echo "ac_cv_func_setpgrp_void=yes" > config.cache &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --libdir=/lib --sysconfdir=/etc --enable-shared \
            --without-libpam --without-audit --without-selinux \
            --cache-file=config.cache &&
        cp src/Makefile{,.orig} &&
        sed 's/groups$(EXEEXT) //' src/Makefile.orig > src/Makefile &&
        cp man/Makefile{,.orig} &&
        sed -e '/groups1.xml/d' \
            -e 's/groups.1//' man/Makefile.orig > man/Makefile &&
        make &&
        make DESTDIR=${CLFS} install &&
        cp ${CLFS}/etc/login.defs login.defs.orig &&
        sed -e's@#MD5_CRYPT_ENAB.no@MD5_CRYPT_ENAB yes@' \
            -e 's@/var/spool/mail@/var/mail@' \
            login.defs.orig > ${CLFS}/etc/login.defs &&
        mv -v ${CLFS}/usr/bin/passwd ${CLFS}/bin &&
        mv -v ${CLFS}/lib/libshadow.*a ${CLFS}/usr/lib &&
        rm -v ${CLFS}/lib/libshadow.so &&
        ln -sfv ../../lib/libshadow.so.0 ${CLFS}/usr/lib/libshadow.so &&
        ${CLFS_TARGET}-pwconv &&
        ${CLFS_TARGET}-grpconv &&
        ${CLFS_TARGET}-passwd root &&
        cd .. &&
        rm -rf shadow-4.0.18.1
}

target_sysklogd()
{
        tar xf sysklogd-1.5.tar.gz &&
        cd sysklogd-1.5 &&
        cp Makefile{,.orig} &&
        sed -e 's/-o ${MAN_USER} -g ${MAN_GROUP}//' \
            -e 's/500 -s/500/' Makefile.orig > Makefile &&
        make CC="${CC}" &&
        make prefix=${CLFS} install &&
        cat > ${CLFS}/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
*.info;mail.none;authpriv.none;cron.none        -/var/log/messages
*.emerg                                         *

# log the bootscript output:
local2.*                                        -/var/log/boot.log

# End /etc/syslog.conf
EOF
        cd .. &&
        rm -rf sysklogd-1.5
}

target_sysvinit()
{
        tar xf sysvinit-2.86.tar.gz &&
        cd sysvinit-2.86 &&
        cp src/init.c{,.orig} &&
        sed 's@Sending processes@& started by init@g' \
            src/init.c.orig > src/init.c &&
        cp -v src/Makefile src/Makefile.orig &&
        sed -e 's@/dev/initctl@$(ROOT)&@g' \
            -e 's@\(mknod \)-m \([0-9]* \)\(.* \)p@\1\3p; chmod \2\3@g' \
            -e '/^ifeq/s/$(ROOT)//' \
            -e 's@/usr/lib@$(ROOT)&@' \
            src/Makefile.orig > src/Makefile &&
        make -C src clobber &&
        make -C src ROOT=${CLFS} CC="${CC}" &&
        make -C src ROOT=${CLFS} INSTALL="install" install &&
        cat > ${CLFS}/etc/inittab << "EOF" &&
# Begin /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc sysinit

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016nce:/sbin/sulogin

1:2345:respawn:/sbin/agetty -I '\033(K' tty1 9600
2:2345:respawn:/sbin/agetty -I '\033(K' tty2 9600
3:2345:respawn:/sbin/agetty -I '\033(K' tty3 9600
4:2345:respawn:/sbin/agetty -I '\033(K' tty4 9600
5:2345:respawn:/sbin/agetty -I '\033(K' tty5 9600
6:2345:respawn:/sbin/agetty -I '\033(K' tty6 9600

# End /etc/inittab
EOF
        cd .. &&
        rm -rf sysvinit-2.86
}

target_tar()
{
        tar xf tar-1.18.tar.bz2 &&
        cd tar-1.18 &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf tar-1.18
}

target_texinfo()
{
        tar xf texinfo-4.9.tar.bz2 &&
        cd texinfo-4.9 &&
        patch -Np1 -i ../texinfo-4.9-tempfile_fix-1.patch &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} --prefix=/usr &&
        make &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf texinfo-4.9
}

target_udev()
{
        tar xf udev-115.tar.bz2 &&
        cd udev-115 &&
        make CROSS_COMPILE="${CLFS_TARGET}-" CC="${CC}" LD="${CC}" \
            EXTRAS="extras/ata_id extras/cdrom_id extras/collect \
            extras/edd_id extras/firmware extras/floppy extras/path_id extras/rule_generator \
            extras/scsi_id extras/usb_id extras/volume_id" udevdir=/dev &&
        make DESTDIR="${CLFS}" \
            EXTRAS="extras/ata_id extras/cdrom_id extras/collect \
            extras/edd_id extras/firmware extras/floppy extras/path_id extras/rule_generator \
            extras/scsi_id extras/usb_id extras/volume_id" udevdir=/dev install &&
        install -v -m644 -D docs/writing_udev_rules/index.html ${CLFS}/usr/share/doc/udev-115/index.html &&
        install -dv ${CLFS}/lib/firmware &&
        cd .. &&
        rm -rf udev-115
}

target_util_linux()
{
        tar xf util-linux-ng-2.13.tar.bz2 &&
        cd util-linux-ng-2.13 &&
        cp hwclock/hwclock.c{,.orig} &&
        sed -e 's@etc/adjtime@var/lib/hwclock/adjtime@g' \
            hwclock/hwclock.c.orig > hwclock/hwclock.c &&
        mkdir -pv ${CLFS}/var/lib/hwclock &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --enable-partx --disable-wall --enable-write \
            --disable-makeinstall-chown &&
        make &&
        make DESTDIR=${CLFS} install &&
        mv -v ${CLFS}/usr/bin/logger ${CLFS}/bin &&
        cd .. &&
        rm -rf util-linux-ng-2.13
}

target_vim()
{
        tar xf vim-7.1.tar.bz2 &&
        cd vim71 &&
        patch -Np1 -i ../vim-7.1-cross_compile-1.patch &&
        patch -Np1 -i ../vim-7.1-fixes-3.patch &&
        echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h &&
        ./configure --build=${CLFS_HOST} --host=${CLFS_TARGET} \
            --prefix=/usr --enable-multibyte --enable-gui=no \
                --disable-gtktest --disable-xim --with-features=normal \
                    --disable-gpm --without-x --disable-netbeans \
                        --with-tlib=ncurses &&
        make &&
        make DESTDIR=${CLFS} install &&
        ln -sfv vim ${CLFS}/usr/bin/vi &&
        ln -sfnv ../vim/vim71/doc ${CLFS}/usr/share/doc/vim-7.1 &&
        cat > ${CLFS}/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 .. &&
        rm -rf vim71
}

target_strip()
{
        find ${CLFS}/{,usr/}{bin,lib,sbin} -type f -exec ${CLFS_TARGET}-strip --strip-debug '{}' ';'
}

make_target()
{
        export CC="${CLFS_TARGET}-gcc"
        export CXX="${CLFS_TARGET}-g++"
        export AR="${CLFS_TARGET}-ar"
        export AS="${CLFS_TARGET}-as"
        export RANLIB="${CLFS_TARGET}-ranlib"
        export LD="${CLFS_TARGET}-ld"
        export STRIP="${CLFS_TARGET}-strip"

        target_man_pages &&
        target_binutils &&
        target_gcc &&
        target_sed &&
        target_e2fsprogs &&
        target_coreutils &&
        target_iana_etc &&
        target_m4 &&
        target_bison &&
        target_ncurses &&
        target_procps &&
        target_libtool &&
        target_perl &&
        target_readline &&
        target_zlib &&
        target_autoconf &&
        target_automake &&
        target_bash &&
        target_bzip2 &&
        target_diffutils &&
        target_file &&
        target_findutils &&
        target_flex &&
        target_gawk &&
        target_gettext &&
        target_grep &&
        target_groff &&
        target_gzip &&
        target_inetutils &&
        target_iproute2 &&
        target_kbd &&
        target_less &&
        target_make &&
        target_man &&
        target_mktemp &&
        target_module_init_tools &&
        target_patch &&
        target_psmisc &&
        target_shadow &&
        target_sysklogd &&
        target_sysvinit &&
        target_tar &&
        target_texinfo &&
        target_udev &&
        target_util_linux &&
        target_vim &&
        target_strip
}

bootscripts_clfs_bootscripts()
{
        tar xf bootscripts-cross-lfs-1.1-pre4.tar.bz2 &&
        cd bootscripts-cross-lfs &&
        make DESTDIR=${CLFS} install &&
        cd .. &&
        rm -rf bootscripts-cross-lfs
}

bootscripts_set_clock()
{
        cat > ${CLFS}/etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock

UTC=0

# End /etc/sysconfig/clock
EOF
}

bootscripts_linux_console()
{
        cat >${CLFS}/etc/sysconfig/console <<"EOF"
KEYMAP="us"
FONT="lat1-16"
EOF
}

bootscripts_inputrc()
{
        cat > ${CLFS}/etc/inputrc << "EOF"
# Begin /etc/inputrc
# Modified by Chris Lynn <roryo@roryo.dynup.net>

# Allow the command prompt to wrap to the next line
set horizontal-scroll-mode Off

# Enable 8bit input
set meta-flag On
set input-meta On

# Turns off 8th bit stripping
set convert-meta Off

# Keep the 8th bit for display
set output-meta On

# none, visible or audible
set bell-style none

# All of the following map the escape sequence of the
# value contained inside the 1st argument to the
# readline specific functions

"\eOd": backward-word
"\eOc": forward-word

# for linux console
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert

# for xterm
"\eOH": beginning-of-line
"\eOF": end-of-line

# for Konsole
"\e[H": beginning-of-line
"\e[F": end-of-line

# End /etc/inputrc
EOF
}

bootscripts_bash_startup()
{
        cat > ${CLFS}/etc/profile << "EOF"
# Begin /etc/profile

export LANG=en_US.UTF8
export INPUTRC=/etc/inputrc

# End /etc/profile
EOF
}

bootscripts_localnet()
{
        echo "HOSTNAME=CLFS" > ${CLFS}/etc/sysconfig/network
}

bootscripts_hosts()
{
        cat > ${CLFS}/etc/hosts << "EOF"
# Begin /etc/hosts

127.0.0.1 localhost

# End /etc/hosts
EOF
}

bootscripts_network()
{
        mkdir -v ${CLFS}/etc/sysconfig/network-devices/ifconfig.eth0 &&
        cat > ${CLFS}/etc/sysconfig/network-devices/ifconfig.eth0/ipv4 << "EOF" &&
ONBOOT=yes
SERVICE=ipv4-static
IP=[Your IP]
GATEWAY=[Your gateway]
PREFIX=[Your prefix]
BROADCAST=[Your broadcast address]
EOF
        cat > ${CLFS}/etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf

#domain [Your Domain Name]
#nameserver [IP address of your primary nameserver]
#nameserver [IP address of your secondary nameserver]

# End /etc/resolv.conf
EOF
}

setup_bootscripts()
{
        bootscripts_clfs_bootscripts &&
        bootscripts_set_clock &&
        bootscripts_linux_console &&
        bootscripts_inputrc &&
        bootscripts_bash_startup &&
        bootscripts_localnet &&
        bootscripts_hosts &&
        bootscripts_network
}

bootable_fstab()
{
        cat > ${CLFS}/etc/fstab << "EOF"
# Begin /etc/fstab

# file system  mount-point  type   options          dump  fsck
#                                                         order

/dev/ROOT      /            ROOT_TYPE  defaults         1     1
/dev/SWAP      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
}

linux_kernel()
{
        tar xf linux-2.6.22.tar.bz2 &&
        cd linux-2.6.22 &&
        make mrproper &&
        cp arch/arm/configs/s3c2410_defconfig .config &&
        make ARCH=arm CROSS_COMPILE=${CLFS_TARGET}- menuconfig &&
        make ARCH=arm CROSS_COMPILE=${CLFS_TARGET}- &&
        make ARCH=arm CROSS_COMPILE=${CLFS_TARGET}- INSTALL_MOD_PATH=${CLFS} modules_install &&
        cp vmlinux ${CLFS}/boot/clfskernel-2.6.22 &&
        cp System.map ${CLFS}/boot/System.map-2.6.22 &&
        cp .config ${CLFS}/boot/config-2.6.22
}

change_ownership()
{
        echo 'Give root password to change ownership.'
        su -c " chown -Rv 0:0 ${CLFS} &&
        chgrp -v 13 ${CLFS}/var/run/utmp ${CLFS}/var/log/lastlog &&
        chgrp -v 4 ${CLFS}/usr/bin/write &&
        chmod g+s ${CLFS}/usr/bin/write &&
        mknod -m 0666 ${CLFS}/dev/null c 1 3 &&
        mknod -m 0600 ${CLFS}/dev/console c 5 1"
}

make_bootable()
{
        bootable_fstab &&
        linux_kernel &&
        change_ownership
}

clfs()
{
        create_dirs_files &&
        cross_tool &&
        make_target &&
        setup_bootscripts &&
        make_bootable
}

clfs

#################################################
发表于 2008-11-2 14:56:54 | 显示全部楼层
如果中途出错,何解?
回复 支持 反对

使用道具 举报

发表于 2008-11-3 12:28:49 | 显示全部楼层
Post by 聚焦深空;1902799
如果中途出错,何解?

他应该在自己机上试过了,只方便于他自己下次自动化编译吧
要做到其他机子上通用,非常繁杂。
呵呵,也许我们可以对他的脚本修改后,使其适应于自己的机子吧
回复 支持 反对

使用道具 举报

发表于 2008-11-3 12:35:45 | 显示全部楼层
lz已经把LFS移植到ARM上了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-3 16:51:54 | 显示全部楼层
现在已完成CLFS_ARM + cs8900 + LCD~正在研究图形界面~
这个脚本是为了自动建立CLFS的最初状态~里面很多&&就是为了出错就退出~
回复 支持 反对

使用道具 举报

发表于 2008-11-3 18:07:39 | 显示全部楼层
Post by simdiak;1903310
出错就退出~

然后呢?一遍又一遍重复?
回复 支持 反对

使用道具 举报

发表于 2008-11-4 02:04:35 | 显示全部楼层
Post by simdiak;1903310
现在已完成CLFS_ARM + cs8900 + LCD~正在研究图形界面~
这个脚本是为了自动建立CLFS的最初状态~里面很多&&就是为了出错就退出~

你在ARM板上测试过了吗,用的是什么板子,能介绍下吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-4 12:02:45 | 显示全部楼层
我不是要做一个能解决所有问题的脚本~只是一个能够一直做到完成的脚本~所以中间出了问题它会退出~然后就需要你自己去判断出了什么问题了~
我的ARM是阳初v2.3的~s3c2410~我用这个脚本做出了一个系统~放在U盘上作为根文件系统~除了init有点问题不能自动运行需手动 “/etc/rc.d/init.d/rc sysinit” 之外没有别的问题~
移植了cs8900网卡和lcd驱动也都成功了~可以上网~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-4 12:09:55 | 显示全部楼层
网上很多移植都是2.6.1x的版本~有些2.6.2x的版本移植基本都是胡扯~正确的没几个~比如那个devfs在2.6.17之后就不能用了~居然还有人按照以前那个方法写了篇文章~就是改了版本号而已~
我现在做的这些一步一步都是自己实验通过的~做了一些patch包~等全部完成后会发上来~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表