- 论坛徽章:
- 0
|
#!/bin/sh
BUSYBOX=/scratchbox/source2/busybox/busybox-1.1.2
COMPILER_PREFIX=/scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-
COMPILER_LIB=/scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/lib
if test "$1" = ""; then
CLFS_ROOTFS_DIR=rootfs
echo "CLFS_ROOTFS_DIR=$CLFS_ROOTFS_DIR"
else
CLFS_ROOTFS_DIR=$1
echo "CLFS_ROOTFS_DIR=$CLFS_ROOTFS_DIR"
fi
echo "Create a standard directory tree. . ."
echo "The directory tree is based on the Filesystem Hierarchy Standard (FHS) (available at http://www.pathname.com/fhs/)"
echo "http://cross-lfs.org/view/clfs-sysroot/arm/final-preps/creatingdirs.html"
mkdir -pv ${CLFS_ROOTFS_DIR}/{bin,boot,dev,{etc/,}opt,home,lib}
mkdir -pv ${CLFS_ROOTFS_DIR}/mnt/{etc,jffs2,yaffs,tmp,gpephone,enlightenment}
mkdir -pv ${CLFS_ROOTFS_DIR}/{proc,media,sbin,srv,sys}
mkdir -pv ${CLFS_ROOTFS_DIR}/var/{lock,log,mail,run,spool}
mkdir -pv ${CLFS_ROOTFS_DIR}/var/{opt,cache,lib/{misc,locate},local}
install -dv -m 0750 ${CLFS_ROOTFS_DIR}/root
install -dv -m 1777 ${CLFS_ROOTFS_DIR}{/var,}/tmp
mkdir -pv ${CLFS_ROOTFS_DIR}/usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv ${CLFS_ROOTFS_DIR}/usr/{,local/}share/{doc,info,locale,man}
mkdir -pv ${CLFS_ROOTFS_DIR}/usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv ${CLFS_ROOTFS_DIR}/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}
for dir in ${CLFS_ROOTFS_DIR}/usr{,/local}; do
ln -sfnv share/{man,doc,info} ${dir}
done
安装:busybox
http://busybox.net/downloads/busybox-1.9.0.tar.bz2
Busybox Settings --->
Installation Options --->
Don't use /usr
(/home/tekkamanninja/working/nfs/rootfs) BusyBox installation prefix
Busybox Library Tuning --->
Support for /etc/networks
Additional editing keys
vi-style line editing commands
(15) History size
History saving
Tab completion
Username completion
Fancy shell prompts
Login/Password Management Utilities --->选项全部N掉,后面单独使用TinyLogin
Linux Module Utilities --->
[N] Support version 2.2.x to 2.4.x Linux kernels
Shells --->
--- Ash Shell Options 下的选项全选
[sbox-rootfs: /scratchbox/source2/busybox/busybox-1.9.0] > make
[sbox-rootfs: /scratchbox/source2/busybox/busybox-1.9.0] > make PREFIX=/ install
补充:
在scratchbox中如果:make menuconfig 出现can't found -lncurse 那么请安装ncurse库
ftp://invisible-island.net/ncurses/ncurses-5.5.tar.gz
./configure --prefix=$PREFIX --with-shared --without-debug --without-ada --enable-overwrite
安装:TinyLogin
如果login的时候出现login: no valid shadow password 所以一定用下面的tinylogin
http://tinylogin.busybox.net/downloads/snapshots/tinylogin-snapshot.tar.bz2
指明tinyLogin使用自己的算法来处理用户密码
vim Makefile
USE_SYSTEM_PWD_GRP = false
. . .
CROSS =$COMPILER_PREFIX
CC = $(CROSS)gcc
AR = $(CROSS)ar
STRIPTOOL = $(CROSS)strip
或者直接
export PATH=/usr/local/arm/arm-linux-gcc-3.4.4-glibc-2.3.5/bin/:$PATH
make CROSS=arm-unknown-linux-gnu-
sudo make PREFIX=/nfsroot/rootfs install
/nfsroot/rootfs/bin/addgroup -> tinylogin
/nfsroot/rootfs/bin/adduser -> tinylogin
/nfsroot/rootfs/bin/delgroup -> tinylogin
/nfsroot/rootfs/bin/deluser -> tinylogin
/nfsroot/rootfs/bin/login -> tinylogin
/nfsroot/rootfs/bin/su -> tinylogin
/nfsroot/rootfs/sbin/getty -> ../bin/tinylogin
/nfsroot/rootfs/sbin/sulogin -> ../bin/tinylogin
/nfsroot/rootfs/usr/bin/passwd -> ../../bin/tinylogin
/nfsroot/rootfs/usr/bin/vlock -> ../../bin/tinylogin
创建修改必要的文件:
cp $BUSYBOX/examples/bootfloppy/etc/* ${CLFS_ROOTFS_DIR}/etc/ -rv
vim ${CLFS_ROOTFS_DIR}/etc/profile
----------------------------------
# /etc/profile: system-wide .profile file for the Bourne shells
echo
echo "Processing /etc/profile... "
# no-op
# Set search library path
echo "Set search library path in /etc/profile"
export LD_LIBRARY_PATH=/lib:/usr/lib
# Set user path
echo "Set user path in /etc/profile"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
# Set PS1
#注意:ash 除了SHELL变量外,支持\u、\h、\W、\$、\!、\n、\w 、\nnn(ASCII字符对应的八进制数)
#以及\e[xx;xxm (彩色特效)等等!
#而且前面还要多加一个 '\'!
echo "Set PS1 in /etc/profile"
export PS1="\\e[05;32m[$USER@\\w\\a]\\$\\e[00;34m"
echo "Done"
----------------------------------
修改初始化文件
vim ${CLFS_ROOTFS_DIR}/etc/inittab
----------------------------------
::sysinit:/etc/init.d/rcS
::respawn:-/bin/login
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
----------------------------------
使用login登录,如果直接进入sh,那么修改
::respawn:-/bin/login -> ::respawn:-/bin/sh
vim ${CLFS_ROOTFS_DIR}/etc/fstab
----------------------------------
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
----------------------------------
修改初始化脚本
vim ${CLFS_ROOTFS_DIR}/etc/init.d/rcS
----------------------------------
#! /bin/sh
echo "------>mount all"
/bin/mount -a
echo "------>Starting mdev......"
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
echo "********************************************************"
echo " hfrk s3c24xx rootfs (nfs) "
echo " Created by mohuifu 2008.04.30 "
echo "********************************************************"
-----------------------------------
mount -a 命令挂载 etc/fstab 中设定的分区
为mdev创建配置文件
vim ${CLFS_ROOTFS_DIR}/etc/mdev.conf
内容可无,也可参照规则填写
创建帐号以及密码文件
sudo vim ${CLFS_ROOTFS_DIR}/passwd
root:x:0:0:root:/root:/bin/sh
mhf:x:1000:1001:mohuifu,,,:/home/mhf:/bin/sh
sudo vim ${CLFS_ROOTFS_DIR}/group
root:x:0:
mhf:x:1000:
sudo vim ${CLFS_ROOTFS_DIR}/shadow
root:$1$.xuXaPSk$h2HawwCDectt5tZ4S7Lcz0:13908:0:99999:7:::
mhf:$1$aKa/RuJp$TUF5UOgeiKXYfsq8MOgZe1:13754:0:99999:7:::
拷贝必须的动态库文件
cd ${CLFS_ROOTFS_DIR}/lib
cp -d $COMPILER_LIB/ld* ./
cp $COMPILER_LIB/libc-2.3.5.so ./
cp -d $COMPILER_LIB/libc.so.6 ./
cp $COMPILER_LIB/libm-* ./
cp -d $COMPILER_LIB/libm.s* ./
cp $COMPILER_LIB/libcrypt-* ./
cp -d $COMPILER_LIB/libcrypt.s* ./
拷贝可选的动态库文件
如果需要域名解析:
1)增加/etc/resolv.conf
[root@lqm /etc]#cat resolv.conf
nameserver 192.168.x.x //加入域名解析器
2)增加相应动态库的支持
增加如下:
libnss_files
libnss_dns
libresolv.so
find find . -name "libnss*" $COMPILER_LIB/
./libnss_files.so.2
./libnss_files.so
./libnss_dns-2.3.2.so
./libnss_dns.so
./libnss_files-2.3.2.so
./libnss_dns.so.2
find . -name "libresolv*" /scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/lib/
./libresolv.so
./libresolv.so.2
./libresolv-2.3.2.so
参考文档:
http://blog.chinaunix.net/u1/34474/showart_485837.html
http://linux.chinaunix.net/techdoc/beginner/2008/03/25/987207.shtml
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/49742/showart_653256.html |
|