今天没学到什么,因为自己偷懒,看LOL 的比赛. 花掉了大部分的时间.太惭愧了。
今天学到的东西。今天主要是把U-boot的部分再做了一遍。简单的学习了一些u-boot的命令。但是也没记住太多。诸如mm,md之类的命令,没有记住多少。这个个人感觉也不需要记住多少。用的时候查呗,谷歌百度干什么用的?
今天试着去编译了一个基于arm的linux内核,由于之前曾经编译过PC机的内核,所以这部分也没有太大的障碍。这里讲一下遇到的问题以及解决方法。
我用到的内核是linux2.6.38的版本。这里记录一下步骤。
1.清除原有配置以及中间文件。
X86下:make distclean
arm下:make distclean
2.配置内核。
X86下:make menuconfig
arm下:make menuconfig ARCH=arm
这里我出现了错误,错误提示是
Install ncurses(ncurses-devel) and try again.
主要原因是,ncurses是字符终端下屏幕控制的基本库。可能很多新开发的程序已经不再使用。假如要编译一些老的程序,还是会经常碰到。解决这个问题可以通过下面的解决方法来搞定。打开一个终端输入下面这条语句按回车进行安装即可。
sudo apt-get install libncurses5-dev 。这里解决完之后,继续刚才的配置,发现成功打开配置窗口。由于自己是第一次编译arm的 内核,配置也不清楚,文件系统,CPU处理之类的选择, 也不清晰,所以我直接用了别人写好的配置文件。每一个linux内核发行,其实都提供有一个配置文件。这里用到的是友善提供的arm内核配置。打开终端,进入linux内核目录,输入如下命令 cp config_linux_mini6410 ./.config 。 这样 ,在make menuconfig
的时候,就已经全部自动配置好了。
3.编译内核。
x86下:make bzImage
arm下:make uImage ARCH=arm CORSS_COMPILE=arm-linux-.
这条命令的意思,uImage,u的意思,是指u-boot的, 也就是arm的u-boot,这样指定,可以让u-boot 找到这个内核,之后才进行相关操作。这步比较麻烦,也比较耗时,编译就花了20多分钟。这里我自己又出现了一个错误。说是找不到mkimage 这个工具,之前有点傻逼了,直接复制了一个mkimage到任意目录下面,结果以为设置环境变量,什么事就结束了,结果折腾了一会,又编译了一次,还是失败了。最后一次,痛改前非,不自己去复制那个mkimage,也不自己去设置环境变量了,直接打开终端,输入如下命令:
sudo apt-get install mkimage ,安装这个工具,然后系统去帮我们配置。这次编译成功了。linux-2.6.38/arch/arm/boot 这里面的uImage就是编译完成的内核。
好吧,今天就做这件事。。惭愧啊。情人节就要到了,过一个快乐的情人节,预祝大家情人节快乐!