您的位置: 飞扬精品软件园 >> 文章中心 >> 系统教程 >> Linux系统 >> Linux下DOM制作流程[嵌入式系统盘]

相关文章链接

最新新闻资讯

    Linux下DOM制作流程[嵌入式系统盘]

    Linux下DOM制作流程[嵌入式系统盘]


    • 阅览次数: 文章来源: 原文作者: 整理日期: 2010-05-22

    由于工作需要建立一个嵌入式Linux系统盘,经过多方折腾,终于成了。和大家分享一下。

    制作系统盘现在使用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


查看所有评论

网友对Linux下DOM制作流程[嵌入式系统盘]的评论

网名:
主题:
内容:
验证码: