1.下载linux-2.6.36.1.tar.bz2
      问题: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

相关文章: