基于ZLG/BOOT的Linux2.6内核移植(s3c2410)(3)

6. 配置内核
在配置内核前,先拷贝s3c2410 开发板的默认配置(我的开发板默认配置文件是arch/arm/ZY2410x )到linux2.6 内核根目录下,以简化配置过程。
# cp arch/arm/ZY2410x .config
# make menuconfig

以下是在 s3c2410_defconfig 基础上要配置的选项
General setup --->
[*] Configure standard kernel features (for small systems) --->
选上这项,否则文件系统中的一些选项不会出现

System Type --->     
S3C2410 Machines --->
[*] SMDK2410/A9M2410   
留下这项就够了,其他全部“N”
“N”
S3C2412 Machines ---> S3C2440 Machines ---> S3C2443 Machines ---> 里的所有选项,都是和

2410 无关的选项。
Boot options --->
(root=/dev/hda1 ro init=/bin/bash console=ttySAC0) Default kernel command string
改成   (root=/dev/ram rw ramdisk=4096 console=tty0 console=ttySAC0,115200N8) Default kernel command

string : 很重要, 具体功能上面有解释.

Userspace binary formats --->
< > Kernel support for a.out and ECOFF binaries
(去除该选项,a.outECOFF 是两种可执行文件的格式,

ARMLinux 下一般都用ELF ,所以这两种基本用不上。)

Networking --->
Networking options --->
<*> Packet socket
[*]   Packet socket: mmapped IO
Device Drivers --->
“N”
掉   Parallel port support ---> 里的所有选项。
Plug and Play support --->
里的所有选项一定要“N” 掉,不然编译会出错!!!!!!!!
Network device support --->
Ethernet (10 or 100Mbit) --->
“N”
< > DM9000 support< >   Generic Media Independent Interface device support
“N”
[ ]   Ethernet (1000 Mbit) --->[ ]   Ethernet (10000 Mbit) --->
Wireless LAN --->
[*] Wireless LAN (pre-802.11)
[*] Wireless LAN (IEEE 802.11)
USB Network Adapters --->
<*> Multi-purpose USB Networking Framework
<*> MMC/SD card support --->
Real Time Clock --->
“N”
[ ]   Set system time from RTC on startup and resume
#
接下来做的是针对文件系统的设置,我实验时目标箱上要挂的根文件系统是ramdisk 故做如下配置
File systems -->
<*> Second extended fs support     #
注意ext2 相关的几项一定要选上, 因为我们使用的ramdisk 文件系统属于

ext2 格式, 很多移植后使用cramfs 的内核在配置时都把这项N 掉了.                             
[*]   Ext2 extended attributes                                  
[*]     Ext2 POSIX Access Control Lists                         
[*]     Ext2 Security Labels                                    
[*]   Ext2 execute in place support  
<*> Ext3 journalling file system support
<*> Kernel automounter support
<*> Kernel automounter version 4 support (also supports v3)
<*> Filesystem in Userspace support
Pseudo filesystems -->
[*] Virtual memory file system support (former shm fs)
<*> Userspace-driven configuration filesystem (EXPERIMENTAL)
Miscellaneous filesystems -->
<*> YAFFS2 file system support
“N”
[ ]Autoselect yaffs2 format
[ ]Cache short names in RAM
,因为这是给每页大于1024BNAND Flash 设计的
<*> Journalling Flash File System v2 (JFFS2) support
(0)   JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
[*]   JFFS2 write-buffering support
[ ]   JFFS2 summary support (EXPERIMENTAL)
[ ]   JFFS2 XATTR support (EXPERIMENTAL)
[*]   Advanced compression options for JFFS2
[*]     JFFS2 ZLIB compression support
[*]     JFFS2 RTIME compression support
[*]     JFFS2 RUBIN compression support
JFFS2 default compression mode (priority) --->
Network File Systems -->
<*> NFS file system support
--
以下最好选上,因为在挂载NFS 时可能出现protocol 不支持的情况--
[*]Provide NFSv3 client support
[*]Provide client support for the NFSv3 ACL protocol extension
[*]   Provide NFSv4 client support (EXPERIMENTAL)
[*]   Allow direct I/O on NFS files
-------------------------------------------------------------------------
<*> NFS server support
[*]   Provide NFSv3 server support
[*]Provide server support for the NFSv3 ACL protocol extension   
[*]     Provide NFSv4 server support (EXPERIMENTAL)       
---   Provide NFS server over TCP support                 
[*] Root file system on NFS

保存退出,产生.config 文件。
7
.编译内核
#make zImage   

从本质上讲, 基于ZLG/BOOT 完成一个最简单的linux2.6 内核移植只需把内核代码注释掉两句话, 然而我在做的过程中是饶了很大圈子的, 刚上来也是按网上的说明对nandflash 进行分区,ZLG/BOOT 源码中对nandflash 的分区部分只给了二进制文件, 所以二者一直对应不起来, 遇到了很多网上常见的问题, 然而他们的解决方法却很多不适合我, 直到弄清了ZLG/BOOT 的工作机制, 问题才迎刃而解.
过程中得到了网上不少资料的帮助, 尤其是下面这个链接, 在此表示感谢!  

移植好linux2.6 之后,在开发板上ping 不通,ifconfig 也没用,应该是网卡驱动的问题,所以接下来移植网卡驱动(我的开发板网卡是DM9000 ),下一篇进行介绍我的DM9000 移植过程

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxxxx.html