《内核及文件系统.doc》由会员分享,可在线阅读,更多相关《内核及文件系统.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、内核和根文件系统移植一、移植环境 主 机:VMWare-Fedora 9 开发板:Mini2440-64MB Nand 编译器:arm-linux-gcc-4.4.3二、移植步骤本移植是一个简单的过程,比较详细全面的要参考MINI2440开发板提供的文档,目录如下:mini2440开发板友善之臂编写或整理的参考文档ni2440 Linux移植开发实战指南.pdf下面开始移植:先做准备工作:在内核解压之后,给内核打上yaffs2补丁,使内核对yaffs2的支持 #tar -zxvf cvs-root.tar.gz#cd cvs/yaffs2/#./patch-ker.sh c /root/my2
2、440/linux-2.6.32.2/1. 进入内核根目录修改Makefile使之编译成ARM平台#cd linux-2.6.32.2#gedit Makefile在 193行ARCH ?= $(SUBARCH)CROSS_COMPILE ?=修改为ARCH ?= armCROSS_COMPILE ?= arm-linux-其中,ARCH 是指定目标平台为arm,CROSS_COMPILE 是指定交叉编译器,这里指定的是系统默认的交叉编译器,如要使用其它的,则要把编译器的全路径在这里写出2. 拷贝,建立自己的文件Linux-2.6.32.2 本身已经包含了mini2440 的支持,这样就出现了
3、重名。那怎么办呢?在此我们依然使用MINI2440 这个名称,只不过在后面的移植步骤中,把原始内核自带的mini2440 代码部分直接删除就可以了,以免和我们自己移植的混淆了。接下来, 我们注意到linux-2.6.32.2/arch/arm/mach-s3c2440 目录下有个mach-mini2440.c 文件,它其实就是国外爱好者为mini2440 移植添加的主要内容了,但我们不用它,把它直接删除。将以前修改好的mach-mini2440.c复制到此目录下,要注意时钟、分区、机器码等的修改3. 编译测试在 Linux 源代码根目录下执行/#make mini2440_defconfig
4、;使用Linux 官方自带的mini2440 配置#make menuconfig首先加载s3c24xx系列的通用配置,然后在此基础上修改罗列简单的配置,其它的默认Kernel Features -Boot options - System Type -上面除了S3C2440 Machines(只选* MINI2440 development board)外,其它的S3C24XX里面都不选。Device Drivers - Graphics support - Console display driver support - * Bootup logo -File systems -* Mis
5、cellaneous filesystems - YAFFS2 file system support4. 保存配置完后将配置文件保存为.config,这样方便下次make menuconfig时默认加载上次配置过的文件5. 交叉编译内核#make zImage#make uImage如果没有任何错误,编译出来的内核在arch/arm/boot/目录下,文件uImage即是。6. 将内核镜像文件uImage下载到Mini2440上测试三、结束语 Ok,新的内核移植成功,但是现在开发板还不能正常运行,因为还有各种设备的驱动和文件系统没有移植,这些将在后续的篇章中一一讲述。 嵌入式Linux之我行
6、Linux-2.6.30.4在2440上的移植之文件系统 一、移植环境 主 机:VMWare-Fedora 9 开发板:Mini2440-64MB Nand 编译器:arm-linux-gcc-4.3.2 yaffs补丁:cvs-root.tar.gz 这里下载http:/www.aleph1.co.uk/cgi-bin/viewcvs.cgi/ Busybox:busybox-1.13.0.tar.tar yaffs制作工具:mkyaffs2image.tgz(友善提供)二、移植步骤1. 准备工作目录和进入工作目录 #mkdir rootfs /准备使用的根文件系统目录2. 编译busybo
7、x生成文件系统所需要的应用程序 1)解压busybox源码,修改Makefile使之编译成ARM平台: #tar -jxvf busybox-1.13.0.tar.tar#cd busybox-1.13.0#gedit Makefile大概164行改成CROSS_COMPILE = arm-linux- 189行改成ARCH = arm 2)配置busybox选项,下面只列出了要注意的地方,没有列出的默认即可 #make menuconfigBusybox Settings -Buld Options -* Build Busybox as a static binary (no shared
8、 libs)Installation Options - Dont use /usrApplets links (as soft-links) -(这里添加绝对路径/roots/) BusyBox installation prefixBusybox Library Tuning -*vi-style line editing commands vi命令编辑风格*Fancy shell prompts 这一项一定要选上,不然无法识别/etc/profile中的PS1变量。Linux Module Utilities - 首先取消Simplified modutils,然后在新出现的菜单中选中i
9、nsmod,rmmod,lsmod,modprobe,这几项是对模块操作的命令保存配置单,退出。 3)编译和安装busybox,安装完后会/roots目录下生成:bin、linuxrc、sbin、usr #make# make install3. 开始构建文件系统1)在rootfs目录下建立其它目录#cd rootfs / #mkdir dev etc home lib mnt opt proc tmp var www 2)向各目录中添加文件系统所需要的目录或文件,没有提到的就不用添加。这里要注意各种文件的权限,建议都改为777,命令:#chmod 777 文件名dev目录,创建两个设备文件:
10、 # sudo mknod console c 5 1# sudo mknod null c 1 3# sudo mknod ttySAC0 c 204 64# sudo mknod mtdblock0 b 31 0 # sudo mknod mtdblock1 b 31 1 # sudo mknod mtdblock2 b 31 2# sudo mknod mtdblock3 b 31 3etc目录,创建各种配置文件并向里面添加内容,没有列出的就不用添加:boa/boa.conf: boa WEB服务器配置文件,暂时为空。group: 系统用户组配置文件,内容如下: root:*:0:dae
11、mon:*:1:bin:*:2:sys:*:3:adm:*:4:tty:*:5:disk:*:6:lp:*:7:lpmail:*:8:news:*:9:uucp:*:10:proxy:*:13:kmem:*:15:dialout:*:20:fax:*:21:voice:*:22:cdrom:*:24:floppy:*:25:tape:*:26:sudo:*:27:audio:*:29:ppp:x:99:500:x:500:plg501:x:501:fainittab: 系统init进程配置文件,内容如下: # /etc/inittab:sysinit:/etc/init.d/rcSttySAC
12、0:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a -rmime.types: 暂时为空。passwd: 系统密码文件,内容如下: root:0:0:root:/:/bin/shftp:14:50:FTP User:/var/ftp:bin:*:1:1:bin:/bin:daemon:*:2:2:daemon:/sbin:nobody:*:99:99:Nobody:/:sky:502:502:Linux User,:/home/sky:/bin/shrc.d/init.d/httpd: 内容如下: #!/bin
13、/shbase=boa# See how we were called.case $1 instart)/usr/sbin/$base;stop)pid=/bin/pidof $baseif -n $pid ; thenkill -9 $pidfi;esacexit 0sysconfig/HOSTNAME: 主机名称文件,内容如下: MY2440fstab: 系统挂载文件系统列表,内容如下: # device mount-point type options dump fsck ordernone/proc proc defaults0 0none/dev/pts devptsmode=062
14、20 0tmpfs/dev/shm tmpfsdefaults0 0init.d/rcS: 系统启动加载项,内容如下: #!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask 022export PATH runlevel prevlevel#Trap CTRL-C &c only in this shell so we can interrupt subprocesses.#/bin/mount -t proc none /proc/bin/mount -t tmpfs none /tmp/bin/mount
15、 -t tmpfs none /var/bin/mkdir -p /var/log/bin/hostname -F /etc/sysconfig/HOSTNAMEmdev.conf: mdev设备配置文件,暂时为空。net.conf: 网络配置文件,暂时为空。profile: 用户环境配置文件,内容如下: # Ash profile # vim: syntax=sh# No core files by default#ulimit -S -c 0 /dev/null 2&1USER=id -unLOGNAME=$USERPS1=uh W# PATH=$PATH:/usr/local/binLD
16、_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libHOSTNAME=/bin/hostnameexport USER LOGNAME PS1 PATH LD_LIBRARY_PATHresolv.conf: DNS配置文件,内容如下: nameserver 61.144.56.100home目录:创建一个sky目录,与etc目录passwd文件中的sky相对应lib目录:这个里面放的都是库文件,直接从交叉编译器的库文件目录中拷贝过来: #cp -f /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv
17、4t/lib/*.so* lib/ -a4. 使用yaffs制作工具编译构建好的文件系统。先解压mkyaffs2image.tgz(这个工具是友善提供的,可以在他们的网站上下载),会自动解压到开发主机的/usr/sbin/目录下,在这个目录下将mkyaffs2imag这个文件拷贝到/usr/local/bin目录下,这样就可以在任何目录下执行mkyaffs2image命令了。#tar -zxvf mkyaffs2image.tgz将生成的mkyaffs2imag这个文件拷贝到/usr/local/bin目录下回到rootfs目录所在的目录,运行下面的命令#mkyaffs2image rootfs/ rootfs.img5. 下载文件系统镜像到开发板上测试,使用情况如下:三、结束语 现在文件系统成功移植上去了,加上上一篇章的内核移植,至此开发板可以运行起来了。但是各种外设还不能正常使用,后续的篇章将逐步移植各种设备的驱动,使之完善。
限制150内