内核交叉编译步骤
(针对不同的开发板使用交叉编译器不相同,参考前面提到的根据时间段和开发板进行选择):

1、下载源码,进入内核源码目录,以linux-2.6.32-el6为例:

git clone git://cgit.loongnix.org/kernel/linux-2.6.32-el6.git
cd linux-2.6.32-el6

2、拷贝对应的配置文件,然后进行配置,主要是读入.config中的配置信息,生成内核配置图形界面,可以根据需要手动的对kernel进行裁剪:

如果编译龙芯3系列板卡,kernel则按照下面方式拷贝配置文件:
cp arch/mips/configs/loongson3_defconfig .config

如果龙芯最新的3A2000系列板卡,kernel则按照下面方式拷贝配置文件:
cp arch/mips/configs/loongson3a2000_defconfig .config

如果龙芯2Hsoc板卡,kernel则按照下面方式拷贝配置文件:
cp arch/mips/configs/loongson2h_defconfig .config

选择完毕,可以执行下面命令进行内核配置:

make menuconfig ARCH=mips CROSS_COMPILE=mips64el-linux-  //如果执行出错,请根据出错提示,yum update最新的包

可能会有的错误提示:

*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
*** 
*** Install ncurses (ncurses-devel) and try again.
*** 
make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1

错误提示: 系统缺少ncurses libraries。解决办法:

yum install ncurses-devel  或者  yum update ncurses-devel

3、编译内核,成功后会在当前目录下生成vmlinux.32(32位)、vmlinux(64位,我们使用的是vmlinux)

make ARCH=mips CROSS_COMPILE=mips64el-redhat-linux-   -j 16

提示:在服务器上,-j参数可以大幅度提高编译速度

4、模块安装,默认会把编译的模块安装到/lib/modules/,由于我们是在x86服务器上交叉编译龙芯的kernel源码,所以建议创建一个新目录,然后将模块编译到自己指定的目录

mkdir  ~/mymodules 
make modules_install  INSTALL_MOD_PATH=~/mymodules ARCH=mips CROSS_COMPILE=mips64el-redhat-linux- 

注:编译3.10内核和2.6.32内核步骤相同,只是使用配置文件不同。3.10内核在3a1000板卡和3a2000板卡使用如下通用配置文件:

cp arch/mips/configs/loongson3_defconfig .config

5.上传内核文件
对于编译出来的内核,需要使用下面的3个文件:

vmlinuz(或者vmlinux)
 mymodules 目录
 System.map

把这些文件都上传到龙芯机器上。

把/dev/sda1挂载到 /mnt 下,

# mount /dev/sda1 /mnt

把内核文件放置到相应目录下:

 # cp vmlinuz  /mnt
 # cp System.map    /mnt/System.map-3.10.0+
 # cp mymodules/lib/* /lib -rf

6.修改操作系统的引导菜单

这一步非常容易出错,注意:

如果硬盘有多个分区,一定要修改第一个分区(sda1)下的boot.cfg
如果是昆仑固件,则是改grub.cfg
修改boot.cfg时,为了防止写错,一般是保留原来的所有title,复制出一个新的title进行修改。

 这样即使新加的title写的不正确,仍然可以选择原来的title正常进入系统。

boot.cfg的典型内容(只改kernel一行):

 title Loongnix
       kernel (wd0,0)/vmlinuz
       initrd (wd0,0)/initramfs-3.10.84-17.fc21.loongson.mips64el.img
       args  root=UUID=f8cc9919-415f-427d-8cdd-1feae1fdf55e ro rhgb quiet loglevel=0 LANG=zh_CN.UTF-8

grub.cfg也是只改linux一行。

7.重启计算机验证内核
开机的操作系统选择菜单,选择新添加的一项
验证确实启动的是新内核:

 # uname -a

看内核的编译时间,应该是最新的时间

Last modification:November 16th, 2019 at 10:19 pm
如果觉得我的文章对你有用,请随意赞赏