完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
iTOP-4412开发板不仅可以运行Android,还可以运行简单的Linux最小文件系统。 最小Linux 系统“麻雀虽小,五脏俱全”,它不带图形界面的Linux 系统,剔除干扰因素便于理解,用来学习Linux系统编程非常合适。 另外,Linux最小系统占用的内存空间很小,也经常用于不带图形界面的项目。 1. 最小Linux系统简介 制作文件系统需要使用到Busybox工具。 BusyBox是一个集成了一百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了Linux系统的自带的shell。 Busybox的下载网址是http://www.busybox.net/,这是一个开源的程序,并且一直在更新中,这里使用的版本是busybox-1.21.1.tar.bz2。 2. 配置最小系统 在虚拟机的Ubuntu的目录“/home”下新建目录“mkdir minilinux”,这个目录可以根据个人习惯建立,并不是强制要求。 拷贝busybox-1.21.1.tar.bz2(这个软件在对应的实验视频目录文件下)到虚拟机的Ubuntu系统上的目录“/home/minilinux”下,然后在目录“/home/minilinux”下,执行解压命令“tar -xvf busybox-1.21.1.tar.bz2”解压,进入解压出的busybox-1.22.1目录中。 Busybox的编译配置和Linux内核编译配置使用的命令是一样的,下面配置Busybox,如下图所示,使用命令“make menuconfig”,会出现Busybox的配置界面,如下图所示。 选中Busybox Settings,进入到Busybox Settings界面。 接着进入Build Optiions-> Cross Compiler prefix配置界面,它是指定用什么编译器来编译,输入使用的交叉编译工具“ARM-none-linux-gnueabi-”。 然后回到Busybox Settings设置界面,进入Installation Options配置界面,选中BusyBox installation prefix,然后进入BusyBox installation prefix配置界面(这个界面是设置编译完Busybox,把最终生成的二进制文件安装到哪个目录下面)。 删除里面默认的./_install,然后输入“../system”(最终生成的二进制文件会安装到当前目录的上一级目录下的system目录里面)。 退出menuconfig配置界面,保存配置。 3. 编译和安装 Busybox的配置已经完成了,接下来编译Busybox,在Ubuntu的终端输入make命令开始编译Busybox。 编译完成之后,需要把编译生成的二进制文件安装到刚才指定的../system目录里面,使用命令“make install”安装二进制文件到“../system”目录。打开“../system”目录,可以看到安装的文件,如下图所示。 4. 完善最小系统 本节介绍如何添加最小系统需要的网络文件、用户文件、库等。 在system目录下,使用命令“mkdir dev etc lib mnt proc sys tmp var”创建文件夹。 进入到刚才创建的etc文件夹,在etc目录下建立eth0-setting文件,并在eth0-setting文件里输入下面的内容,保存之后修改权限位755。 IP=192.168.1.230 Mask=255.255.255.0 Gateway=192.168.1.1 DNS=192.168.1.1 MAC=08:90:90:90:90:90 在etc目录下建立init.d文件夹,进入到init.d文件夹,在init.d文件夹下建立ifconfig-eth0文件,然后在ifconfig-eth0文件输入下面的内容。保存并退出,修改 ifconfig-eth0文件的权限位755。 #!/bin/sh echo -n Try to bring eth0 interface up......>/dev/ttySAC2 if [ -f /etc/eth0-setting ] ; then source /etc/eth0-setting if grep -q "^/dev/root / nfs " /etc/mtab ; then echo -n NFS root ... > /dev/ttySAC2 else ifconfig eth0 down ifconfig eth0 hw ether $MAC ifconfig eth0 $IP netmask $Mask up route add default gw $Gateway fi echo nameserver $DNS > /etc/resolv.conf else if grep -q "^/dev/root / nfs " /etc/mtab ; then echo -n NFS root ... > /dev/ttySAC2 else /***in/ifconfig eth0 192.168.253.12 netmask 255.255.255.0 up fi fi echo Done > /dev/ttySAC2 然后在init.d文件夹下建立rcS文件,在rcS文件输入下面的内容,保存并退出rcS,修改rcS的权限为755。 #! /bin/sh PATH=/***in:/bin:/usr/***in:/usr/bin:/usr/local/bin: runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel # # Trap CTRL-C &c only in this shell so we can interrupt subprocesses. # trap ":" INT QUIT TSTP /bin/hostname iTOP-4412 #/bin/mount -n -t proc none /proc #/bin/mount -n -t sysfs none /sys #/bin/mount -n -t u***fs none /proc/bus/u*** #/bin/mount -t ramfs none /dev [ -e /proc/1 ] || /bin/mount -n -t proc none /proc [ -e /sys/class ] || /bin/mount -n -t sysfs none /sys [ -e /dev/tty ] || /bin/mount -t ramfs none /dev echo /***in/mdev > /proc/sys/kernel/hotplug /***in/mdev -s #/bin/hotplug # mounting file system specified in /etc/fstab mkdir -p /dev/pts mkdir -p /dev/shm /bin/mount -n -t devpts none /dev/pts -o mode=0622 /bin/mount -n -t tmpfs tmpfs /dev/shm #/bin/mount -n -t ramfs none /tmp #/bin/mount -n -t ramfs none /var mkdir -p /var/empty mkdir -p /var/log mkdir -p /var/log/boa mkdir -p /var/lock mkdir -p /var/run mkdir -p /var/tmp ln -sf /dev/ttyS2 /dev/tty2 ln -sf /dev/ttyS2 /dev/tty3 ln -sf /dev/ttyS2 /dev/tty4 syslogd /etc/rc.d/init.d/netd start echo " " > /dev/tty1 echo "Starting networking..." > /dev/tty1 #sleep 1 #/etc/rc.d/init.d/httpd start #echo " " > /dev/tty1 #echo "Starting web server..." > /dev/tty1 #sleep 1 #/etc/rc.d/init.d/leds start #echo " " > /dev/tty1 #echo "Starting leds service..." > /dev/tty1 #echo " " #sleep 1 #echo "*************************************" > /dev/ttySAC2 #echo " http://www.topeet.com.cn " > /dev/ttySAC2 #echo "*************************************" > /dev/ttySAC2 #echo "*************************************" #echo " http://www.topeet.com.cn " #echo "*************************************" mkdir /mnt/disk sleep 1 /***in/ifconfig lo 127.0.0.1 /etc/init.d/ifconfig-eth0 返回到init.d的上一级目录etc,接下来在etc目录下建立文件passwd,如下图所示,保存并退出,修改passwd的权限为755。 root::0:0:root:/:/bin/sh bin:*:1:1:bin:/bin: daemon:*:2:2:daemon:/***in: nobody:*:99:99:Nobody:/: 然后在etc目录建立profile文件,在profile输入下面的内容,保存并退出,修改profile的权限为755。 # Ash profile # vim: syntax=sh # No core files by default ulimit -S -c 0 > /dev/null 2>&1 USER="`id -un`" LOGNAME=$USER PS1='[$USER@$HOSTNAME]# ' PATH=$PATH HOSTNAME=`/bin/hostname` export USER LOGNAME PS1 PATH 接下来在etc目录建立文件夹rc.d,进入到刚才建立的rc.d文件夹。在rc.d目录下建立init.d文件夹,进入到建立的init.d文件夹。接着在init.d文件夹,建立netd文件,在netd文件里面输入下面的内容。保存并退出netd,修改netd的权限为755。 #!/bin/sh base=inetd # See how we were called. case "$1" in start) /usr/***in/$base ;; stop) pid=`/bin/pidof $base` if [ -n "$pid" ]; then kill -9 $pid fi ;; esac exit 0 进入system/lib目录。因为使用的交叉编译环境和编译内核的相同,所以编译器是/usr/local/arm/arm-2009q3,Busybox编译生成的二进制文件十一动态链接库的形式运行,所以需要拷贝编译器里面的库文件到lib目录,使用命令 “cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/* ./”拷贝。 库文件拷贝完成后,返回到system/var目录,在var目录下建立lib,lock,log,run,tmp五个目录。至此,文件系统所需要的文件都已经创建好了。 5. 安装打包软件和编译 打包工具make_ext4fs可以文件系统制作成二进制文件,先来安装一下make_ext4fs工具。 拷贝压缩包“linux_tools.tgz”到Ubuntu 系统的“/”目录下然后解压,注意目录是“/”,如果前面在编译QtE的时候已经解压过了,这里可以跳过去。安装好打包编译工具“make_ext4fs”之后。 使用命令进入目录“/home/minilinux/”,使用命令 “make_ext4fs -s -l 314572800 -a root -L linux system.img system”生成system.img文件系统镜像,如下图所示。 现在已经完成了Linux文件系统的制作。 6. 最小Linux系统的烧写 最后需要把制作好的system.img烧写到iTOP-4412开发板上,烧写的方式和Android文件系统的烧写一样。 Uboot文件不用烧写,是通用的,内核zImage和ramdisk-uboot.img文件使用QtE的即可。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4868 浏览 0 评论
87357 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4674 浏览 2 评论
3566 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2453 浏览 0 评论
1949浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1317浏览 1评论
1226浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1295浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1210浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 09:34 , Processed in 1.027297 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号