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.out 和ECOFF 是两种可执行文件的格式,
在ARM -Linux 下一般都用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 ,因为这是给每页大于1024B 的NAND 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 移植过程。