3. 编译
[root@localhost vivi]# make
------------------------------------------------------------------------
会在 vivi目录生成你要的 vivi 程序(bootloader)
------------------------------------------------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
说明:我的nand falsh的一块为16k,
所以上面的分区:
**************************************
分区信息
**************************************
bootloader: 128k
param : 896k
kernel : 3M
root : 20M
user : 40M
**************************************
bon 操作
**************************************
bon part 0 1M 4M:m 24M:m
解释一下上面的命令:
第1个分区从0开始;
第2个分区从0x30000(即192K)开始;
第3个分区从0x200000(即2M)开始;
第4个分区从0x400000(即4M)开始.
***********************************
bon part info
***********************************
bon part info
BON info. (4 partitions)
N offset size flags bad
---------------------------------------------
0: 0x00000000 0x00100000 00000000 0 1M
1: 0x00100000 0x00300000 00000000 0 3M
2: 0x00400000 0x01400000 00000001 0 20M
3: 0x01800000 0x027fc000 00000001 0 39M+1008k
***********************************
part show
***********************************
mtdpart info. (5 partitions)
name offset size flag
------------------------------------------------
bootloader : 0x00000000 0x00020000 0 128k
param : 0x00020000 0x000e0000 0 896k
kernel : 0x00100000 0x00300000 0 3M
root : 0x00400000 0x01400000 4 20M
user : 0x01800000 0x02c00000 4 44M
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^==============================================================
三: 内核 编译
===============================================================
三: 内核 编译
注意:用的编译器是4.2.0的交叉编译器
1. 修改 Makefile
[root@localhost porting]# cd linux-2.6.22
[root@localhost linux-2.6.22]# vim Makefile
修改 ARCH 和 CROSS_COMPILE
--------------------------------------------------------------
ARCH ?= arm
CROSS_COMPILE ?=/usr/local/arm/4.2.0/bin/arm-none-eabi-
2. 修改common-smdk.c文件
[root@localhost linux-2.6.22]# vim arch/arm/plat-s3c24xx/common-smdk.c
------------------------------------------------------------------------------
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "Boot",
.size = SZ_128K,
.offset = 0,
},
[1] = {
.name = "param",
.offset = MTDPART_OFS_APPEND,
.size = SZ_1M - SZ_128K,
},
[2] = {
.name = "kernel",
.offset = SZ_1M,
.size = SZ_1M * 3,
},
[3] = {
.name = "root",
.offset = MTDPART_OFS_APPEND,
.size = SZ_2M * 10,
},
/*
,
[5] = {
.name = "S3C2410 flash partition 5",
.offset = SZ_1M * 14,
.size = SZ_1M * 10,
},
[6] = {
.name = "S3C2410 flash partition 6",
.offset = SZ_1M * 24,
.size = SZ_1M * 24,
},
[7] = {
.name = "S3C2410 flash partition 7",
.offset = SZ_1M * 48,
.size = SZ_16M,
}
*/
};
---------------------------------------------------------------------------------
3. 去掉nand flash 的ECC
[root@localhost linux-2.6.22]# vim drivers/mtd/nand/s3c2410.c
---------------------------------------------------------------------------------
1、打开drivers/mtd/nand/s3c2410.c
2、搜索关键字NAND_ECC_SOFT,在s3c2410_nand_init_chip函数里
3、修改NAND_ECC_SOFT为NAND_ECC_NONE
---------------------------------------------------------------------------------
4. 支持启动时挂载devfs
为了我们的内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev为devfs文件系统。
[root@localhost linux-2.6.22]# vi fs/Kconfig
-----------------------------------------------------------------------------------
找到menu "Pseudo filesystems"
添加如下语句:
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
----------------------------------------------------------------------------------
5. 编译内核
[root@localhost linux-2.6.22]# cp ./arch/arm/configs/s3c2410_defconfig .config
[root@localhost linux-2.6.21.5]# make xconfig
----------------------------------------------------------------------------------
Userspace binary formats
[ ]Kernel support for a.out and ECOFF binaries (BINFMT_AOUT) (去除该选项)
Boot options
Default kernel command string
改成:
noinitrd root=/dev/mtdblock3 console=ttySAC0,115200 init=/linuxrc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
再选上你想选的选项,如果编译通不过,对照着错误,看下把哪些选项去除,或添加哪些选项。
-----------------------------------------------------------------------------------
6. 编译
[root@localhost linux-2.6.22]# make zImage
============================================================
四: 文件系统的制作
===============================================================
四: 文件系统的制作
注意:交叉编译器 3.3.2, busybox1.5.1, 静态编译
编译更详细的内容:
1. busybox的编译
-----------------------------------------------------------------------------
一 修改busybox中的 Makefile文件
找到 ARCH 和 CROSS_COMPILE 修改成如下
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/3.3.2/bin/arm-linux-