创建跟文件系统

声明:文章来自于韦东山老师的课程006_u-boot_内核_根文件系统(新1期_2期间的衔接)(1)\视频\第004课_根文件系统
因为不小心把虚拟机弄炸了,打不开了,所以直接删了虚拟机,重新构件最小跟文件系统:
1. 解压打补丁配置编译内核
book@www.100ask.org:/work/nfs_root$ cd /work/
book@www.100ask.org:/work$ ls
busybox lost+found nfs_root system tools
book@www.100ask.org:/work$ cd system/
book@www.100ask.org:/work/system$ ls
linux-2.6.22.6_jz2440_v2v3.patch linux-2.6.22.6.tar.bz2 u-boot-1.1.6_jz2440.patch u-boot-1.1.6.tar.bz2
book@www.100ask.org:/work/system$ tar xjf linux-2.6.22.6.tar.bz2
book@www.100ask.org:/work/system$ cd linux-2.6.22.6/
book@www.100ask.org:/work/system/linux-2.6.22.6$ patch -p1 < …/linux-2.6.22.6_jz2440_v2v3.patch
cp config_ok .config
make menuconfig
make uImage
因为以前做过了,很熟悉,不想详细解释了

2.  创建最小跟文件系统
	2.1 inti  busybox
		cd /work/busybox
		tar -xjf busybox-1.7.0-patch.tar.bz2
		vi Makefile
		CROSS_COMPILE   ?=arm-linux-
		mkdir -p /work/nfs_root/first_fs   //-p的作用是递归创建目录
		make CONFIG_PREFIX=/work/nfs_root/first_fs install
		cd /work/nfs_root/first_fs/
		ls
		bin  linuxrc  sbin  usr
		
	2.2 跟文件系统
	建立dev目录
	book@www.100ask.org:/work/nfs_root/first_fs$ mkdir dev
	book@www.100ask.org:/work/nfs_root/first_fs$ ls
	bin  dev  linuxrc  sbin  usr
	book@www.100ask.org:/work/nfs_root/first_fs$ cd dev
	book@www.100ask.org:/work/nfs_root/first_fs/dev$ ls
	book@www.100ask.org:/work/nfs_root/first_fs/dev$ ls /dev/null /dev/console -l
	crw------- 1 root root 5, 1 6月  25 14:54 /dev/console
	crw-rw-rw- 1 root root 1, 3 6月  25 14:54 /dev/null
	book@www.100ask.org:/work/nfs_root/first_fs/dev$ sudo mknod console c 5 1
	[sudo] password for book: 
	book@www.100ask.org:/work/nfs_root/first_fs/dev$ sudo mknod null c 1 3
	book@www.100ask.org:/work/nfs_root/first_fs/dev$ ls null console -l
	crw-r--r-- 1 root root 5, 1 6月  25 15:28 console
	crw-r--r-- 1 root root 1, 3 6月  25 15:28 null
	
	建立etc目录
	cd /work/nfs_root/first_fs
	mkdir etc
	vi /work/busybox/busybox-1.7.0/examples/inittab
	::askfirst:-/bin/sh   //复制这一句话
	vi etc/inittab
	console::askfirst:-/bin/sh   //标准输出,标准输入,标注错误就定位到console中去
	
	
	
	建立C库
	cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
	mkdir /work/nfs_root/first_fs/lib
	cp *.so* /work/nfs_root/first_fs/lib -d   //-d是将链接一起拷贝过来,要不然就太大了
	
	
	
	建立proc目录
	proc的作用是查看当前有哪些应用程序在跑,是内核提供的一个虚拟文件系统
	mkdir proc
	即使创建了proc,此时ps仍旧看不见有哪些应用程序在运行,除非:
	mount -t proc none /proc
	ps
	cd /proc
	ls
	这个时候就可以看见进程了
	上面是手动挂载,要是不愿意手动挂载可以添加一个配置文件(脚本):
	vi /work/busybox/busybox-1.7.0/examples/inittab
	vi etc/inittab
	::sysinit:/etc/init.d/rcS
	:wq
	chmod +x etc/init.d/rcS   //给其加上可执行属性
	
	第二种方法:
	mount -a  //作用是读出/etc/fstab,根据配置文件里面的内容来挂载跟文件系统
	vi etc/init.d/rcS
	##mount -t proc none /proc
	mount -a
	vi etc/fstab
	#device     mount-point     type     options     dump   fsck   order
	proc        /proc           proc     defaults    0      0   //自动挂载proc
	tmpfs       /tmp            tmpfs    defaults    0      0
	sysfs       /sys            sysfs    defaults    0      0 
	tmpfs       /dev            tmpfs    defaults    0      0
	
	
	
	完善dev
	在linux中有一种机制,自动创建dev目录下的节点,在busybox中有一个mdev,是udev的简化版本
	vi /work/busybox/busybox-1.7.0/docs/mdev.txt
	17 Here's a typical code snippet from the init script:
	18 [1] mount -t sysfs sysfs /sys
	19 [2] echo /bin/mdev > /proc/sys/kernel/hotplug
	20 [3] mdev -s
	21 
	22 Of course, a more "full" setup would entail executing this before the previous
	23 code snippet:
	24 [4] mount -t tmpfs mdev /dev
	25 [5] mkdir /dev/pts
	26 [6] mount -t devpts devpts /dev/pts
	[1][2]前面 已经做了,然后将[2][3][5][6]加入rcS中去:
	vi etc/init.d/rcS
	cat etc/init.d/rcS
	book@www.100ask.org:/work/nfs_root/first_fs$ vi etc/init.d/rcS
	book@www.100ask.org:/work/nfs_root/first_fs$ cat 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     //注意一下, 这个是sbin,bin目录下没有mdev		
	mdev -s
	解释一下下面两句话:
	echo /sbin/mdev > /proc/sys/kernel/hotplug  //自动加载驱动或插入u盘,内核就调用hotplug指向/sbin/mdev,自动创建节点
	mdev -s的作用是将内核那些现有的驱动都创建出来
	
	
	自动挂载跟文件系统:
	条件:  服务器允许被挂接;
		   单板去挂接
	服务器允许被挂接: 
	sudo vi /etc/exports    //注意是/etc,不是etc
	/work/nfs_root/first_fs   *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)  //加上这句话服务器就可以被挂接了
	book@www.100ask.org:/work/nfs_root/first_fs$ sudo /etc/init.d/nfs-kernel-server restart   //重启nfs服务
	[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
	book@www.100ask.org:/work/nfs_root/first_fs$ sudo mount -t nfs 192.168.1.100:/work/nfs_root/first_fs /mnt //尝试挂载自己,
	book@www.100ask.org:/work/nfs_root/first_fs$   //挂载到/mnt上。输出结果说明已经成功挂载
	
	单板去挂载:
	set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.100:/work/nfs_root/first_fs ip=
	192.168.1.103:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值