上次文章中记录了一个简单的根文件系统的制作,不过最后留了一些瑕疵在里面,为了具有像乔布斯那样追求完美的精神,这次就来完善一下,现在主要存在的问题就是下图所示:
这里提示到的问题主要有三个:
1、ifconfig问题
(ps:我们还没有对当前开发板修改并移植网卡驱动DM9000,所以这个是难免的。)
2、tmpfs问题
(ps:应该可以一眼看出来吧,我在初始化脚本里边,把defaults拼成了devaults,很混蛋的做法,纯粹的手误,这是不影响启动的情况下,它报错出来了,这要是影响启动还不报错,那估计我得好一阵子找的。从而有引发了下边无法mount的问题,这个好办。)
3、pts的创建问题,因为我们用的mdev自动动态生成的设备文件,这里pts创建报错的是因为已经存在了
这些文件都是我们前边自己制作的root文件系统时,手工建立的。
这里把/etc/init.d/rcS的内容摘出来:
#!/bin/sh
ifconfig eth0192.168.1.111
mount -a
mkdir /dev/pts
mount -t devpts devpts/dev/pts
echo /sbin/mdev >/proc/sys/kernel/hotplug
mdev -s
由此脚本可以分析出它的过程,就是在此脚本执行过程中,又调用了/etc/fstab (其实这里就是通过mount -a去挂在fstab里边的所有文件系统的)
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs devaults 0 0 #就是这里,我拼写错了!
#更悲剧的是前边文章中的记录也是错的,也没人提出来,一个报错过程不但反映出了linux内核初始化执行的流程,也反映出了之前的文章就没有读者去认真的读,这对写者来说是很沉重的打击啊!
所以还是那句话,出错并不可怕,排错的过程才是成长的过程!
有些问题是连锁反应产生的,所以这里我们先对fstab进行更改。把那个可恶的v改成f以后,重新把文件系统目录制成root文件系统镜像:(额,我的环境变了很多,重新配置的原生态linux,安全环保,没有用虚拟机,所以可能跟前边的目录名字有些不一致,不过知道my_fs就是制作的root文件系统的那个目录就可以了,话说变则通么,呵呵):
$ mkyaffs2image my_fs/ my_fs.bin #当前所在目录在my_fs的上层目录
下载到板子测试一下先。
OK,看来后两个问题是连带关系,现在只剩下移植DM9000的驱动,然后ifconfig问题应该就可以迎刃而解了。
DM9000的驱动移植就不谢了吧,可以参照不同开发板的手册。这跟平台比较相关,且不同平台移植不同,我也没到达对该驱动完全了解的地步,其实是很不怎么了解,从原理讲的话,也没那个能力,就此别过了吧,哈哈。