Linux下DOM制作流程


制作系统盘现在使用32M电子盘(DOM)。以下比较详细的说明怎样制作一个嵌入式Linux系统盘。
1. 首先可以先把电子盘挂到一台机器上作为从盘,使用PQMagic分区工具进行分区操作,因为DOS分区所有内容只有1.56M,所以第一个分区只需要2M就足够了。分区类型是基本分区(primary),文件系统类型是FAT,并且设为活动分区(A ctive)。
2. Linux分区可以现在分好,也可以等制作文件系统时再分。现在分可以把剩余空间都作为第二个分区。分区类型是基本分区(primary),文件系统类型是Linux Ext2。
3. 重启机器,可以看到一个两兆的分区。把编译好的Linux内核和DOS加载工具等内容(见系统文件清单)全部拷到这个分区上,第一个分区就做好了。如果分了三个区,而且想把第三个分区作为工作分区,则需要把AUTOEXEC.BAT中的工作分区指向 /dev/hda2 改为/dev/hda3即可。
4. 在机器上安装一个Linux系统,把电子盘挂在IDE2上。如果没有进行第二步操作,打开一个终端,进行分区和制作文件系统操作。
fdisk /dev/hdd
回车,出现提示,输入p,可以看见现在hdd的分区状态;
输入n,增添分区,回车;
输入2,指定设备号,回车;
输入3,指定起始柱面号,回车;
输入+30M,指定分区大小,回车;
输入w,把刚才的分区设置写入分区表;
mkfs.ext2 /dev/hdd2,制作文件系统,类型是ext2。
mount /dev/hdd2 /mnt,加载到主盘的mnt下
5. 现在开始制作第二个分区上的文件系统。因为原有文件系统大约有53M左右,必须有所删减。而其中最大的是lib,大约占了40M,而使用lib中库的主要是bin和sbin中的工具。因而使用了嵌入式Linux常用的busybox和tinylog in。
从网上下载了busybox-1.00-pre3.tar和tinylogin-1.4.tar,把busybox-1.00-pre3.tar解压到一个指定的目录下。
运行“make menuconfig”命令,选择想要在工作系统中使用的工具。保存设置。
找到init目录下的init.c文件,找到 INIT_SCRIPT "/etc/init.d/rcS",更改为“/etc/rc”。
看Makefile中是否有“DOSTATIC = false”,如果有,改false为true,使busybox静态编译。
修改了/usr/include/asm/errno.h头文件中27行的一个错行,否则编译通不过。
在当前目录下用命令“make menuconfig”进入工具选择界面,选项如下所示:
进入“Build Options” ,选择“Build Busybox as a static binary”选项;
进入“Archival Utilities” ,选择“gunzip, gzip, tar” 选项;
进入“Console Utilities” ,选择“clear, reset” 选项;
进入“Finding Utilities” ,选择“find, grep” 选项;
进入“Init Utilities” ,选择全部的选项;
进入“Login/Password Management Utilities” ,选择除第一项和最后两项的全部选项;
进入“Linux Module Utilities” ,选择全部的选项;
进入“Networking Utilities” ,选择“arping, ftpget, ftpput, hostname, ifconfig下一共5项, ifupdown, use busybox ifconfig and route applets, Enable support for IPV4, Enable support for IPX, Enable mapping support, inetd全选,ip全选, ipcalc全选, netstat, nslookup, ping, telnet, telnetd” 选项;
进入“Process Utilities” ,选择“free, kill, killall, ps, uptime” 选项;
进入“Linux System Utilities” ,选择“dmesg, fdisk, write support, ” 选项,其余默认。
别的其他选项默认,保存退出。
make,在当前目录下生成一个大约800k的“busybox”,就是我们所需要的了。把它拷到mnt下的bin目录下。然后就可以把自己想要的工具在bin下面建立一个链接就可以了。如:
ln –s busybox cp
ln –s busybox ls
……
对于tinylogin,操作和busybox完全相同。也要静态编译,然后把login,passwd,adduser等帐户管理的工具建立和tinylogin的链接即可。需要注意的是有些工具是在sbin当中的,所以也可以把tinylogin拷到 sbin目录下,bin下的工具要想链接到tinylogin,可以如下操作:
ln –s tinylogin ../bin/login
6. 有些bin和sbin下的工具是busybox和tinylogin中所没有的,必须从完整的系统中拷过来,例如在这个系统中,由于选择vi时编译出错,所以vi是直接从主盘上拷过来的,而且必须把这个工具使用的相应的库也拷到lib下面。如使用l dd vi,就可以看到vi使用了哪些库,然后把这些库拷到/mnt/lib下就可以了。
7. 在bin中还有两个命令ro和rw,是自己定义的两个可执行脚本。作用是使系统变更为只读和可读写,也要拷到bin下面。
8. 在lib中建立目录modules和tls,使用命令mkdir modules和 mkdir tls。把原来lib中这两个目录下的东西拷过来即可。把应用程序所需要的cpr-2.0.1.so和jpeg-6a.so拷到lib中。这样bin,sbin和lib就做好了。这样lib只有8M左右。
9. 把剩下的目录etc、dev、proc、usr、var、boot、mnt和root全部拷到mnt目录下。因为要求系统不使用页面交换,所以在etc下的rc脚本中添加了一句swapoff –a
如果需要新添加用户或者更改用户密码,还需要建立一个home目录。
10.这时mnt下所用空间大小大约是16M左右。umount /mnt,电子盘就可以在工作机上启动了。
以下是各目录中建立链接的详细清单:
bin:
ln –s busybox ash
ln –s busybox cat
ln –s busybox chmod
ln –s busybox chown
ln –s busybox chroot
ln –s busybox chvt
ln –s busybox clear
ln –s busybox cp
ln –s busybox cut
ln –s busybox date
ln –s busybox dd
ln –s busybox df
ln –s busybox dirname
ln –s busybox dmesg
ln –s busybox du
ln –s busybox echo
ln –s busybox env
ln –s busybox false
ln –s busybox find
ln –s busybox grep
ln –s busybox gunzip
ln –s busybox gzip
ln –s busybox head
ln –s busybox hostname
ln –s busybox id
ln –s busybox insmod
ln –s busybox kill
ln –s busybox killall
ln –s busybox klogd
ln –s busybox linuxrc
ln –s busybox ln
ln –s busybox logger
ln –s ../sbin/tinylogin login
ln –s busybox ls
ln –s busybox mkdir
ln –s busybox mkswap
ln –s busybox more
ln –s busybox mount
ln –s busybox mv
ln –s busybox netstat
ln –s ../sbin/tinylogin passwd
ln –s busybox pidof
ln –s busybox ps
ln –s busybox pwd
ln –s busybox reset
ln –s busybox rm
ln –s busybox rmdir
ln –s busybox route
ln –s busybox sh
ln –s busybox sleep
ln –s busybox sort
ln –s ../sbin/tinylogin su
ln –s busybox sync
ln –s busybox tar
ln –s busybox test
ln –s busybox touch
ln –s busybox true
ln –s busybox tty
ln –s busybox umount
ln –s busybox uname
ln –s busybox uptime
ln –s busybox wc
ln –s busybox zcat
sbin:
ln –s tinylogin addgroup
ln –s tinylogin adduser
ln –s tinylogin delgroup
ln –s tinylogin deluser
ln –s tinylogin sulogin
lib:
ln –s ld-2.3.2.so ld-linux.so.2
ln –s libacl.so.1.0.3 libacl.so.1
ln –s libattr.so.1.0.1 libattr.so.1
ln –s libc-2.3.2.so libc.so.6
ln –s libcom_err.so.2.0 libcom_err.so.2
ln –s libcrypt-2.3.2.so libcrypt.so.1
ln –s libdl-2.3.2.so libdl.so.2
ln –s libe2p.so.2.3 libe2p.so.2
ln –s libext2fs.so.2.4 libext2fs.so.2
ln –s libgcc_s-.3.2.2-20030225.so.1 libgcc_s.so.1
ln –s libm-2.3.2.so libm.so.6
ln –s libnss1_files-2.2.4.so libnss1.so.1
ln –s libnss_files-2.2.4.so libnss_files.so.1
ln –s libnss_files-2.3.2.so libnss_files.so.2
ln –s libpam.so.0.75 libpam.so.0
ln –s libpthread-0.10.so libpthread.so.0
ln –s libresolv-2.3.2.so libresolv.so.2
ln –s libtermcap.so.2.0.8 libtermcap.so.2
ln –s libutil-2.3.2.so libutil.so.1
ln –s libuuid.so.1.2 libuuid.so.1
lib/tls:
ln –s libc-2.3.2.so libc.so.6
ln –s libm-2.3.2.so libm.so.6
ln –s libpthread-0.10.so libpthread.so.0

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4ed6351eaf847437bc4c45a3c611a7ed.html