要点

  • 龙芯处理器使用开源Linux操作系统,定期发布内核kernel的二进制包以及源码。
  • 社区发布的内核kernel版本会结合龙芯处理器的特点进行优化。
  • 内核Kernel源码的编译方式:可选择直接编译、交叉编译(X86平台下)的方式。
  • 源码发布地址: http://cgit.loongnix.org/
  • 龙芯内核kernel的管理基于git,下载kernel前需要熟悉一下git版本管理工具的使用。

龙芯环境编译步骤

如果您有一台龙芯的电脑,那么可以直接进行内核的编译。

  • 1、内核Kernel的源码发布地址: http://cgit.loongnix.org
  • 2、下载源码,进入内核源码目录,以linux-2.6.32-el6为例:
git clone git://cgit.loongnix.org/kernel/linux-2.6.32-el6.git
cd linux-2.6.32-el6
  • 3、拷贝对应的配置文件,然后进行配置,主要是读入.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    //如果执行出错,请根据出错提示,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
  • 4、编译内核,成功后会在当前目录下生成vmlinux.32(32位)、vmlinux(64位,我们使用的是vmlinux)
 make -j4    //执行make命令进行编译,-j4表示使用系统4个核进行编译,如果系统多核可以指定这个参数
  • 5、模块安装,默认会把编译的模块安装到/lib/modules/
make modules_install

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

   cp arch/mips/configs/loongson3_defconfig .config

X86环境交叉编译步骤

  • 龙芯内核交叉编译器(运行在X86_64机器上):

http://ftp.loongnix.org/toolchain/gcc/release/gcc-4.4.7-7215-n64-loongson.tar.gz

  • 将编译器解压到/opt/目录下
  • 环境变量配置:执行 gcc-4.4.7-7215-n64-loongson 下的setenv.sh
$ source setenv.sh

内核交叉编译步骤

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

  • 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-redhat-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

测试编译出来的内核

上传内核文件

对于编译出来的内核,需要使用下面的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

修改操作系统的引导菜单

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

  • 如果硬盘有多个分区,一定要修改第一个分区(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一行。

重启机器

  • 开机的操作系统选择菜单,选择新添加的一项
  • 验证确实启动的是新内核:
 # uname -a

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

参考

本页面最后修改于2018年3月20日 (星期二) 13:55。

© 2019 by 龙芯开源社区 • Powered by MediaWiki
京ICP备14017781号