《2022年内核及文件系统 .pdf》由会员分享,可在线阅读,更多相关《2022年内核及文件系统 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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/my24
2、40/linux-2.6.32.2/1.进入内核根目录修改Makefile使之编译成 ARM 平台#cd linux-2.6.3 2.2#gedit Makefile 在 193 行ARCH?=$(SUBARCH)CROSS_COMPILE?=修改为ARCH?=arm CROSS_COMPILE?=arm-linux-其中,ARCH 是指定目标平台为arm,CROSS_COMPILE 是指定交叉编译器,这里指定的是系统默认的交叉编译器,如要使用其它的,则要把编译器的名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 14 页 -全路径在这里写出2.拷贝,建立自己的文件Linux-2.
3、6.32.2 本身已经包含了 mini2440 的支持,这样就出现了重名。那怎么办呢?在此我们依然使用MINI2440 这个名称,只不过在后面的移植步骤中,把原始内核自带的mini2440 代码部分直接删除就可以了,以免和我们自己移植的混淆了。接下来,我们注意到 linux-2.6.32.2/arch/arm/mach-s3c2440 目录下有个mach-mini2440.c 文件,它其实就是国外爱好者为mini2440 移植添加的主要内容了,但我们不用它,把它直接删除。将以前修改好的mach-mini2440.c复制到此目录下,要注意 时钟、分区、机器码 等的修改3.编译测试在 Linux
4、源代码根目录下执行/#make mini2440_defconfig;使用 Linux 官方自带的 mini2440 配置#make menuconfig 首先加载 s3c24xx 系列的通用配置,然后在此基础上修改名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 14 页 -罗列简单的配置,其它的默认Kernel Features-Boot options-System Type-名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 14 页 -上面除了 S3C2440 Machines(只选*MINI2440 development board)外,其它的 S3C24X
5、X 里面都不选。Device Drivers -Graphics support -Console display driver support -名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 14 页 -*Bootup logo -File systems -*Miscellaneous filesystems -YAFFS2 file system support4.保存配置完后将配置文件保存为.config,这样方便下次make menuconfig时默认加载上次配置过的文件名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 14 页 -5.交叉编译内核#mak
6、e zImage#make uImage如果没有任何错误,编译出来的内核在arch/arm/boot/目录下,文件 uImage即是。6.将内核镜像文件 uImage下载到 Mini2440 上测试三、结束语Ok,新的内核移植成功,但是现在开发板还不能正常运行,因为还有各种设备的驱动和文件系统没有移植,这些将在后续的篇章中一一讲述。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 14 页 -嵌入式 Linux 之我行 Linux-2.6.30.4在 2440 上的移植之文件系统一、移植环境主机:VMWare-Fedora 9开发板:Mini2440-64MB Nand编译器:ar
7、m-linux-gcc-4.3.2yaffs补丁: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.编译 busybox 生成文件系统所需要的应用程序 1)解压 busybox 源码,修改 Makefile使之编译成 ARM 平台:#tar-jxvf busybox-1.13.0.tar.tar#
8、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 libs)Installation Options -Dont use/usr 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 14 页 -Applets li
9、nks(as soft-links)-(这里添加绝对路径/roots/)BusyBox installation prefix Busybox Library Tuning -*vi-style line editing commands vi命令编辑风格 *Fancy shell prompts 这一项一定要选上,不然无法识别/etc/profile中的 PS1变量。Linux Module Utilities -首先取消 Simplified modutils,然后在新出现的菜单中选中insmod,rmmod,lsmod,modprobe,这几项是对模块操作的命令保存配置单,退出。3)编译
10、和安装 busybox,安装完后会/roots目录下生成:bin、linuxrc、sbin、usr#make#make install3.开始构建文件系统 1)在 rootfs目录下建立其它目录#cdrootfs /#mkdir dev etc home lib mnt opt proc tmp var www 2)向各目录中添加文件系统所需要的目录或文件,没有提到的就不用添加。这里要注意各种文件的权限,建议都改为 777,命令:#chmod 777 文件名dev 目录,创建两个设备文件:#sudo mknod console c 5 1#sudo mknod null c 1 3 名师资料总
11、结-精品资料欢迎下载-名师精心整理-第 8 页,共 14 页 -#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:daemon:*:1:bin:*:2:sys:*:3:adm
12、:*:4:tty:*:5:disk:*:6:lp:*:7:lp mail:*:8:news:*:9:uucp:*:10:proxy:*:13:kmem:*:15:dialout:*:20:fax:*:21:voice:*:22:cdrom:*:24:floppy:*:25:tape:*:26:名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 14 页 -sudo:*:27:audio:*:29:ppp:x:99:500:x:500:plg 501:x:501:fainittab:系统 init进程配置文件,内容如下:#/etc/inittab:sysinit:/etc/init.d
13、/rcS ttySAC0:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount-a-rmime.types:暂时为空。passwd:系统密码文件,内容如下:root:0:0:root:/:/bin/sh ftp: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:内容如下:#
14、!/bin/sh base=boa#See how we were called.case$1 in 名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 14 页 -start)/usr/sbin/$base ;stop)pid=/bin/pidof$base if -n$pid;then kill-9$pid fi ;esac exit 0sysconfig/HOSTNAME:主机名称文件,内容如下:MY2440fstab:系统挂载文件系统列表,内容如下:#device mount-point type options dump fsck order none /proc pro
15、c defaults 0 0 none /dev/pts devpts mode=0622 0 0 tmpfs /dev/shm tmpfs defaults 0 0init.d/rcS:系统启动加载项,内容如下:#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin runlevel=S prevlevel=N umask 022 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 14 页 -export PATH runlevel prevlevel#Trap CTRL-C&c only in this shell so we can int
16、errupt subprocesses.#/bin/mount-t proc none/proc/bin/mount-t tmpfs none/tmp/bin/mount-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/
17、null 2&1 USER=id-unLOGNAME=$USER PS1uh W#PATH=$PATH:/usr/local/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib HOSTNAME=/bin/hostname 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 14 页 -export USER LOGNAME PS1 PATH LD_LIBRARY_PATHresolv.conf:DNS配置文件,内容如下:nameserver 61.144.56.100home目录:创建一个 sky 目录,与 etc 目录 pas
18、swd文件中的 sky 相对应lib目录:这个里面放的都是库文件,直接从交叉编译器的库文件目录中拷贝过来:#cp-f/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*.so*lib/-a4.使用 yaffs制作工具编译构建好的文件系统。先解压 mkyaffs2image.tgz(这个工具是友善提供的,可以在他们的网站上下载),会自动解压到开发主机的/usr/sbin/目录下,在这个目录下将mkyaffs2imag 这个文件拷贝到/usr/local/bin目录下,这样就可以在任何目录下执行mkyaffs2image 命令了
19、。#tar-zxvf mkyaffs2image.tgz 将生成的 mkyaffs2imag 这个文件拷贝到/usr/local/bin目录下回到 rootfs目录所在的目录,运行下面的命令#mkyaffs2image rootfs/rootfs.img5.下载文件系统镜像到开发板上测试,使用情况如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 14 页 -三、结束语现在文件系统成功移植上去了,加上上一篇章的内核移植,至此开发板可以运行起来了。但是各种外设还不能正常使用,后续的篇章将逐步移植各种设备的驱动,使之完善。名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 14 页 -