构建根文件系统启动(2)
配置编译busybox
make menuconfig
[*] Tab completion
mkdir -p /work/nfs_root/frist_fs
make
make CONFIG_PREFIX=/work/nfs_root/frist_fs install
bin linuxrc sbin usr
book@book-de
sktop:/work/nfs_root/frist_fs$ ls -l
total 12
drwxr-xr-x 2 book book 4096 2015-12-26 01:23 bin
lrwxrwxrwx 1 book book 11 2015-12-26 01:23 linuxrc -> bin/busybox
drwxr-xr-x 2 book book 4096 2015-12-26 01:23 sbin
drwxr-xr-x 4 book book 4096 2015-12-26 01:23 usr
制作最小根文件系统
1、
crw------- 1 root root 5, 1 2015-12-24 12:24 /dev/console
crw-rw-rw- 1 root root 1, 3 2015-12-24 12:06 /dev/null
mkdir dev
cd dev /
sudo mknod console c 5 1
sudo mknod null c 1 3
3、
cd ..
mkdir etc
vi etc/inittab
console::askfirst:-/bin/sh
5、
mkdir /work/nfs_root/frist_fs/lib
book@book-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp *.so* /work/nfs_root/frist_fs/lib/ -d
怎么烧录到开发板上
制作yaffs2映像文件
tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
/work/system/Development_util_ok/yaffs2/utils$make
sudo cp mkyaffs2image /usr/local/bin/
sudo chmod +x /usr/local/bin/mkyaffs2image
book@book-desktop:/work/nfs_root$ mkyaffs2image
mkyaffs2image frist_fs frist_fs.yaffs2
添加ps功能
1、
mkdir proc
vi etc/inittab
console::askfrist:-/bin/sh
::sysinit:/etc/init.d/rcS
mkdir etc/init.d
mkdir etc/init.d
vi etc/init.d/rcS
mount -t proc none /proc
chmod +x etc/init.d/rcS
2、
mkdir proc
vi etc/inittab
console::askfirst:-/bin/sh ::sysinit:/etc/init.d/rcS
mkdir etc/init.d
mkdir etc/init.d
vi etc/init.d/rcS
mount -a
chmod +x etc/init.d/rcS
vi etc/fstab
# device mount-point type options dump fsck order
proc /proc proc defaults 0 0
添加设备驱动
udev自动创建/dev/设备节点
简化版本mdev
Here's a typical code snippet from the init script:
[1] mount -t sysfs sysfs /sys
[2] echo /bin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s
Of course, a more "full" setup would entail executing this before the previous code snippet:
[4] mount -t tmpfs mdev /dev
[5] mkdir /dev/pts
[6] mount -t devpts devpts /dev/pts
mkdir sys
vi etc/fstab 挂载sys目录
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
vi etc/init.d/rcS
#mount -t proc none /proc
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
制作jffs2映像
/work/GUI/xwindow/X/deps$
rm -rf zlib-1.2.3 强制删除
tar xzf zlib-1.2.3.tar.gz 解压
./configure --shared --prfix=/usr/ 配置
sudo make install 安装
book@book-desktop:/work/tools$ tar xjf mtd-utils-05.07.23.tar.bz2
book@book-desktop:/work/tools/mtd-utils-05.07.23/util$ make
book@book-desktop:/work/nfs_root$ mkfs.jffs2 -n -s 2048 -e 128KiB -d frist_fs -o first_fs.jffs2
-n表示不要在每个擦除块都加上清除标志
-s 2048 一页大小
-e 128 一块大小
-d表根目录
-o输出文件
set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 rootfstype=jffs2
修改根文件系统类型
1、服务器允许那个目录那个目录可以挂载
挂接nfs服务{
2、单板去挂接
配置文件、etc/exports
sudo vi /etc/exports
/work/nfs_root/first_fs *(rw,sync,no_root_squash) //允许目录被挂载
sudo /etc/init.d/nfs-kernel-server restart //重启nfs服务
sudo mount -t nfs 192.168.1.175:/work/nfs_root//frist_fs /mnt //自己挂载实验
a、从flash启动根文件系统再用命令挂载nfs系统
开发板
ifconfig会没反应,需先ifconfig eth0 ip 才有反应
而且还要重启在设置才能ping通
先设定ip 确认能与虚拟机ping通
mkdir /mnt
mount -t nfs -o nolock 192.168.1.175:/work/nfs_root/frist_fs /mnt //挂载
b、直接从nfs启动
ifconfig会没反应,需先ifconfig eth0 ip 才有反应
而且还要重启在设置才能ping通
bootargsnoinitrd=root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
linux-2.6.22.6\Documentation\nfsroot //有关于它的说明
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<auto>
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.175:/work/nfs_root/frist_fs ip=192.168.1.110:192.168.1.175:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
在主机上编写
t.c 交叉编译t.o
在单板上运行
挂载成功