问题:tar -zxvf 解压压缩文件出现问题,无法识别.
解决:1.通过file linux-2.6.36.1.tar.bz2 查看压缩格式
2.通过命令 bzip2 -d linux-2.6.36.1.tar.bz2解压
3.再通过tar xvf linux-2.6.36.1.tar解压,不能使用
tar zxvf linux-2.6.22.6.tar解压
4.上面也可以通过一条指令bzip2 -dc linux-2.6.XX.tar.bz2 | tar xvf -
其中XX为内核压缩包文件名
2.下载patch-2.6.36.1.bz2补丁文件
1.解压 bzip2 -d patch-2.6.36.1.bz2
2.cd linux-2.6.36.1/
3.patch -p1 < ../patch-2.6.36.1
3.先编译看下内核有没有问题,运行make命令出现下面的错误:
问题:drivers/input/touchscreen/eeti_ts.c:65: 错误: 隐式声明函数‘irq_to_gpio’
解决:重新make menuconfig,将driver中的输入设备->触摸设备中,将EETI选项不选,保存退出后,重新make.
4.将编译成功的内核zImage下载到板子中,出现如下问题:
问题:NOW, Booting Linux......
Uncompressing Linux... done, booting the kernel.
然后没有反应....
解决:1.Device Drivers--->Character devices--->Serial drivers
下,选择:Samsung SoC serial support
Support for console on Samsung SoC serial port
Samsung S3C2440/S3C2442 Serial port support
2.发现对应选项在Device Drivers->Character devices->Serial drivers中
一看,原来根本就没有加载Samsung SoC serial support , 选成静态编译之后又出现了
Support for console on Samsung SoC serial port ,就是它了,选上, 退出的时候顺便把
Kernel low-level debugging functions给取消了否则我们设置的printk会自行输出,就不知道ttySAC有没有加载成功了
3.最后发现原来时内核编译时需要传入一个启动命令:noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,
make menuconfig -> Boot options -> 第三行添加上面的启动命令,保存退出,启动成功~
5.启动过程中,出现问题:
问题:Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 80000005 [#1]
last sysfs file:
Modules linked in:
CPU: 0 Not tainted (2.6.36.1 #20)
PC is at 0x0
LR is at s3c_gpio_setpull+0x80/0x8c
解决:参考网址: 重新make menuconfig最后发现原来是要将General setup --->Choose SLAB allocator --->选上SLAB,不要选择SLUB。重新make