vivi,kernel,root系统详细制作与问题解决办法.docx_第1页
vivi,kernel,root系统详细制作与问题解决办法.docx_第2页
vivi,kernel,root系统详细制作与问题解决办法.docx_第3页
vivi,kernel,root系统详细制作与问题解决办法.docx_第4页
vivi,kernel,root系统详细制作与问题解决办法.docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(一) 配置编译vivi(编译时用2.95.3)把vivi文件复制到bootldr中,并解压缩$cp /smb/vivi.tar.bz2 /home/arm/dev_home/bootldr adrf$tar jxvf vivi.tar.bz21. 建立环境变量脚本$ cd /home/arm/dev_home/bootldr/$vi ent_sh在里面插入:export PATH=/usr/local/arm/2.95.3/bin:$PATH然后保存并推出VI模式$. ent_sh(执行脚本)$export (查看环境变量)查看declare x PATH=/usr/local/arm/2.95.3/bin是否存在$ls$cd vivi$vi Makefile在里面修改:(1).修改LIUNX-INCLUDE-DIR =/opt/host/armv4l/include/为:LIUNX-INCLUDE-DIR =/usr/local/arm/2.95.3/include/(2).修改 CROSS_COMPILE = /opt/host/armv4l/bin/armv4l_unknown_linux-为CROSS_COMPILE =/usr/local/arm/2.95.3/bin/ arm-linux-(3).修改ARM_GCC_LIBS =/opt/host/armv4l/lib/gcc-lib/armv4l-unknown-linux/2.95.2为ARM_GCC_LIBS =/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3保存并退出2. 修改分区表在图形模式下进入:/home/arm/dev_home/bootldr/vivi/arch/s3c2410/smdk.c按下表修改: name offset size flag (1). vivi 0x00000000 0x00020000 0(2).param 0x00020000 0x00010000 0(3).kernel 0x00030000 0x00300000 0(4).root 0x00330000 0x01e00000 4需按上述项添加(5).user 0x02130000 0x01ed0000 8注意:保存,分区表中的“.”是按“tab”键3. 在root下执行文件#su root#password在vivi文件夹里执行:#make menuconfig (默认值无需修改)#make4. 烧写vivi到实验板上(1).打开终端进入minicom(2).复位进入vivipart showbon part 0 128k 192k 3264k 33984k:mpart save (保存)load flash vivi x (烧写文件到实验板上)Ctrl+A-z-s,选择传送协议为xmodem模式,选择要传送的vivi文件即可。如果不能传送可试如下方法:(1)、把vivi文件通过samba服务烤到windows的D盘的bootloader文件夹中(2)、打开dos的cmd格式dcd bootloadersjf2410-s.exe/f:vivi00 (对它编程)0 (从0开始)2 (退出)注意:此时的实验板断电后分区消失,所以要把vivi文件烧过去 (3)、连接好串口,用超级终端传送vivi文件part showbon part 0 128k 192k 3264k 33984k:mpart save (保存)load flash vivi x (烧写文件到实验板上)点击“传送”选择D盘的boorloader中的vivi文件确定即可传送截止到这vivi的移植完成。(二)rootfs制作与配置1.安装busybox1.9.2.bz2tar jxvf 2.修改其Makefile ARCH?= armCROSS_COMPILE?=/usr/local/arm/3.3.2/bin/arm-linux-3.编译Make(二) Build shared libbusyboxMake defconfigMake menuconfigDont use /usr【】下有改生成bin sbin的存放路径 原有的事_install如果选中动态链接编译,就没不会出现编译错误,不过交叉编译器arm-linux-gcc 3.3.2的动态链接库特别大,c库好像是20M多,这个地方挺郁闷的,要不就在使用的用nfs挂上去用, * Produce a binary for each applet, linked against libbusybox * Produce additional busybox binary linked against libbusybox Build with Large File Support (for accessing files 2 GB) installation option- * Dont use /usr Applets links (as soft-links) - (./_install) BusyBox installation prefix这个地方选中,把安装路径选择刚刚建立的目录 /home/skyily/rootfsBusybox Library Tuning - MD5: Trade Bytes for Speed * Faster /proc scanning code (+100 bytes) * Support for /etc/networks * Support for /etc/networks* Additional editing keys * vi-style line editing commands * History saving * Tab completion * Username completion * Fancy shell promptsLinux Module Utilities - * Support version 2.6.x Linux kernels * insmod * Enable load map (-m) option * Symbols in load map * rmmod * lsmod * lsmod pretty output for 2.6.x Linux kernels * modprobe Multiple options parsing Fancy alias parsing - Options common to multiple modutils Support tainted module checking with new kernels Support version 2.2.x to 2.4.x Linux kernels * Support version 2.6.x Linux kernels 其他的用默认值5、make (编译会出错)(当然若是选的动态链接这一步就没了)applets/applets.c:15:2: warning: #warning Static linking against glibc produces buggy executables applets/applets.c:16:2: warning: #warning (glibc does not cope well with ld -gc-sections). applets/applets.c:17:2: warning: #warning See /bugzilla/show_bug.cgi?id=3400 applets/applets.c:18:2: warning: #warning Note that glibc is unsuitable for static linking anyway. applets/applets.c:19:2: warning: #warning If you still want to do it, remove -Wl,-gc-sections applets/applets.c:20:2: warning: #warning from scripts/trylink and remove this warning. applets/applets.c:21:2: error: #error Aborting compilation. make1: * applets/applets.o Error 1按照提示,修改文件 applets/applets.c 第 21 行, 将最好把其中的wanging几项也去掉 /#error Aborting compilation. 注释掉: #make编译通过,就生成了busybox。7.制动生成rootfs文件夹#! /bin/sh echo creatint rootfs dir. mkdir rootfs cd rootfs echo making dir : bin dev etc lib proc sbin sys usr mkdir bin dev etc lib proc sbin sys usr #必备的8个目录 mkdir usr/bin usr/lib usr/sbin lib/modules# Dont use mknod ,unless you run this Script as root !# mknod -m 600 dev/console c 5 1# mknod -m 666 dev/null c 1 3 echo making dir : mnt tmp var mkdir mnt tmp var chmod 1777 tmp mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp mkdir var/lib var/lock var/log var/run var/tmp chmod 1777 var/tmp echo making dir : home root boot mkdir home root boot echo done下面就是整理rootfs目录下的文件6、以root身份建立节点文件/dev/console, /dev/null# mknod -m 600 dev/console c 5 1# mknod -m 666 dev/console c 3 17、建立配置文件如下:etc下 可先把busybox-1.9.2/example/bootflopy/etc下的文件拷贝到rootfs下的etc下#cp -r ./busybox-1.9.2/examples/bootfloppy/etc/* ./下面再做修改:1修改profile文件: #!/bin/sh#/etc/profile:system-wide .profile file for the Bourne shellsechoecho -n Processing /etc/profile.# Set search library pathexport LD_LIBRARY_PATH=/lib:/usr/lib# set user pathexport PATH=/bin:/sbin:/usr/bin:/usr/sbin#Set PS1echo Set PS1 in /etc/profileexport PS1=uhW$echo Done!2修改inittab文件::sysinit:/etc/init.d/rcS:respawn:-/bin/sh:restart:/sbin/init :shutdown:/bin/umount -a -r:shutdown:/sbin/swapoff -a3修改fstab文件:proc /proc proc defaults 0 0none /tmp ramfs defaults 0 0none /var ramfs defaults 0 0mdev /dev ramfs defaults 0 0sysfs /sys sysfs defaults 0 04修改初始化脚本init.d/rcS#! /bin/shecho -mount all/bin/mount -aecho -Starting mdev./bin/echo /sbin/mdev /proc/sys/kernel/hotplugmdev -secho *echo GGskyily 2410 Rootfs 2009.6 echo Love Linux ! ! LoveGG ! ! echo *5为mdev创建配置文件:(etc下)root etc# touch mdev.conf创建一个mdev.conf文件,内容可为空!6创建登陆账户把自己pc上的/etc下的group shadow passwd 文件拷贝到制作的./etc下#cp /etc/group ./#cp /etc/passwd ./#cp /etc/shadow ./8、动态编译时所要查的(所需动态链接库)# arm-linux-readelf busybox Dynamic section at offset 0xb8014 contains 22 entries:Tag Type Name/Value0x00000001 (NEEDED) Shared library:libcrypt.so.10x00000001 (NEEDED) Shared library: libm.so.60x00000001 (NEEDED) Shared library: libc.so.60x0000000c (INIT) 0xc04c0x0000000d (FINI) 0xa26f00x00000004 (HASH) 0x80e80x00000005 (STRTAB) 0xa3840x00000006 (SYMTAB) 0x8b24.复制lib 文件到lib目录下:rootcentos libcp -d /usr/local/arm/3.4.1/arm-linux/lib/ld* .rootcentos libcp -d /usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so .rootcentos libcp -d /usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 .rootcentos libcp -d /usr/local/arm/3.4.1/arm-linux/lib/libm * .rootcentos libcp -d /usr/local/arm/3.4.1/arm-linux/lib/libcrypt* .注:这样的话制作的.cramfs文件挺大的10M多。9、使用工具mkcramfs将整个s3c2440文件夹制作成文件系统# mkcramfs rootfs rootfs.cramfs烧入nand flash 启动注:还有一些脚本需要添加和修改,使得其他功能得以实现,正在实验中,以后添加注意:使用busybox制作文件系统时,运行make时,系统会马上提示: 没有/dev/null这个文件。(这里没有什么问题)最终编译出根文件系统没有问题,问题出在重启自己pc的linux系统时,机器进不去了。提示出错,信息如下:/etc/rc.d/rc.sysinit: line 173:/dev/null: read-only file system /etc/rc.d/rc.sysinit: line 173:/dev/null: read-only file system /etc/rc.d/rc.sysinit: line 184:/dev/null: read-only file system /etc/rc.d/rc.sysinit: line 184:/dev/null: read-only file system /etc/rc.d/rc.sysinit: line 200:/dev/null: read-only file system . . . *An error occured during the file system check. *Dropping you to a shell;the system will reboot *when you leave the shell Give root password for maintenance (or type Control-D to continue):解决办法:按照提示输入root用户的密码,回车就可以看到提示修复信息:依次输入命令:(Repair filesystem)1# mount -n -o remount, rw /(Repair filesystem)2# rm -f /dev/null(Repair filesystem)3# mknod -m 0666 /dev/null c 1 3(Repair filesystem)4# reboot问题解决。 TAG: busybox-1.9.2 根文件系统制作 0.01391下载root修改vivi的参数Param set Linux_cmd_line “root=/dev/mtdblock3 rootfstype=jffs2 init=linuxrc console=ttySAC0,115200”(三)ecc问题的解决及内核配置第一步:根据自己nand flash的分区情况,修改kernel中的相关参数: 由于kernel 对s3c2410中文件的组织风格有了变化,所以要修改的文件不再是 arch/arm/mach-s3c2410/devs.c,而是arch/arm/plat_s3c24xx/common-smdk.c。在其中找到分区的定义 smdk_default_nand_part = . 根据自己的分区情况修改其中的内容(分区情况可以通过bootloader查看) 第二步:修改nand flash的参数: 在同一个文件中找到 smdk_nand_info = .tacls=20, .twrph0=60, .twrph1=20, . 改成 smdk_nand_info = .tacls=0, .twrph0=30, .twrph1=0, . 第三步:修改ECC校验: 根据kernel官方网站上的说明,从已经修改了ECC校验的问题(这也是我移植的一个重要原因)。但实验下来发现,不管是用软件ECC还是硬件ECC都不行。只好改成NAND_ECC_NONE: 在driver/mtd/nand/s3c2410.c中找到s3c2410_nand_init_chip()函数,将其中的 chip-ecc.mode=NAND_ECC_SOFT; 改成 chip-ecc.mode=NAND_ECC_NONE; 第四步:修改Makefile文件: 修改其中的目标平台和交叉编译器为: ARCH ?= arm CROSS_COMPILE ?= arm-linux- 第五步:配置内核(编译时用3.4.1修要打补丁apt-get install libncurses5-dev)Make s3c2410_defconfig make menuconfig 配置分区文件linux-/arch/arm/plat-s3c24xx/common-smdk.cstatic struct s3c2410_platform_nand smdk_nand_info = .tacls= 0,.twrph0= 30,.twrph1= 0,.nr_sets= ARRAY_SIZE(smdk_nand_sets),.sets= smdk_nand_sets,;分区/*128kB*/ name:vivi, size:0x00020000, offset:0x0,/*64kB*/ name:param, size:0x00010000, offset:0x00020000,/*3MB*/ name:kernel, size:0x00300000, offset:0x00030000,/*30MB*/ name:root, size:0x01e00000, offset:0x00330000,/*30MB*/ name:user, size:0x01ed0000, offset:0x02130000,注意,要将tmpfs(filesystem下的filesystem in usespace support下的pseudo filesystem里)选上,否则kernel找不到root分区。 第六步:编译内核: make 到此内核的移植已经完成,但由于中已经不包含devfs,所以还需要在root filesystem中配置console设备,否则将不能进入交互界面(不会出现提示符#) 第七步:配置console设备: 在root filesystem的/dev中,生成console设备: mknod -m 600 console c 5 1 最后将kernel和root filesystem烧到na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论