Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->网络应用 ->正文

高手进阶 学会做嵌入式Linux操作系统

来源:赛迪网技术社区  作者:Webmaster 时间:2007-06-03 点击: [收藏] [投稿]

#mkdir /mnt/cf

//把目标硬盘mount上来

#mount –t ext2 /dev/hdc1 /mnt/cf

回到rootfs

#cd ${PRJROOT}/rootfs

拷贝所有文件至目标硬盘

#cp –r * /mnt/cf

这样,我们所有的文件都被安装至目标硬盘了,当然,它还不能引导,因为没有bootloader。使用如下命令:

# lilo -r /mnt/cf -C etc/target.lilo.conf

Warning: LBA32 addressing assumed

Added Linux *

-r :改变根目标为/mnt/cf ,这样配置文件其实就是/mnt/cf/etc/target.lilo.conf,也就是我们先前建立的文件。

当然,完成这一步,需要lilo22.3及以后版本,如果你的版本太旧,比如Redhat9.0自带的,就会出现下面的信息:

#lilo –r /mnt/cf –C etc/target.lilo.conf

Fatal: open /boot/boot.b: No such file or directory

这时,你需要升级你的lilo,或者重新安装一个。

启动系统

#umount /mnt/cf

#reboot

将BIOS改为从IDE0启动,也就是目标硬盘。如果一切顺利,你将顺利进入一个属于你的系统。

回头再来看看我们的工作空间吧

[root@skynet lib]# df /dev/hda1

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/hda1 3953036 1628 3750600 1% /mnt/cf

总共花去了我1628KB的空间,看来是没有办法放到软盘里边去了^o^,不过一味求小,并不是我的目标。

[root@skynet skynet]# ls ${PRJROOT}

bootloader build-tools debug doc images kernel rootfs sysapps tmp tools

这几个目录中的文件,呵呵,与本文一开头规划的一样

[root@skynet skynet]# ls build-tools/

buildroot buildroot-0.9.27.tar.tar

包含了buildroot源码及压缩包,事实上buildroot下边还包括了GNU其它工具的源码、编译文件等诸多内容,是我们最重要的一个文件夹,不过到现在它已经没有多大用处了,如果你喜欢,可以将它删除掉(不建议)。

[root@skynet skynet]# ls images

2.4.18-rmk5 bzImage-2.4.18-rmk5 System-2.4.18-rmk5 vmlinux-2.4.18-rmk5

内核映像及配置文件等,如果你有模块,因为还有相应的目录

[root@skynet skynet]# ls kernel/

linux-2.4.27 linux-2.4.27.tar.bz2

内核源码及压缩包

[root@skynet skynet]# ls rootfs/

bin boot dev etc home lib linuxrc proc root sbin tmp usr var

制作好的根文件系统,重中之重,注意备份……

[root@skynet skynet]# ls sysapps/

busybox-1.00 busybox-1.00.tar.gz

busybox-1.00源码包,或许你还要继续添加/删除一些命令……

[root@skynet skynet]# ls tools

bin i386-linux i386-linux-uclibc include info lib man

这个也很重要,我们制作好的交叉开发工具链。如果你要继续开发程序,这个目录重要性就很高了。

其它目录暂时是空的。

第六章 完善MyLinux

关于进一步的调试,你可以在开发机上使用chroot /mnt/cf /bin/sh这样的命令,以使我们在目标根文件系统上工作。

支持多用户

因为我在编译busybox时,已经将它的多用户那一大堆命令编译了进来。现在关键是的要为其建立相应的文件;

进入原来的开发机,进入rootfs目录,切换根目录

#chroot rootfs/ /bin/sh

A、 建立/etc/passwd文件,我的文件内容如下:

root:x:0:0:root:/root:/bin/bash

B、 建立/etc/group文件,我的文件内容如下:

root:x:0:

bin:x:1:

sys:x:2:

kmem:x:3:

tty:x:4:

tape:x:5:

daemon:x:6:

disk:x:7:

C、 为root建立密码

#passwd root

试试用addgroup/addusr……这堆命令。然后重启,从目标硬盘上启动;从console口,9600登陆试试(因为我在inittab中启用了ttyS0,我未来的目标机,是没有显卡的,需要从console口或SSH进去管理)

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:修正Linux下丑陋的FireFox表单控件问题   下一篇:实用技巧两则 主机名修改与Cat命令退出

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号