Linux内核4.10在龙芯3A3000笔记本上的移植

http://ask.loongnix.org/?/article/66

http://ask.loongnix.org/?/article/67
http://ask.loongnix.org/?/article/68

1. 下载内核源码
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
此处下载的是 mainline 的所称为 vanilla 的内核源码

也可下载其它版本(如 stable 版)的源码,具体链接详见:
https://git.kernel.org/

2. 配置内核
   a) cd linux
   b) make mrproper
   c) 如果是想把内核安装到自己的系统上,建议使用已安装好的发行版拥有的配置文件,即:
      $ cp /boot/config-`uname -r` .config
      也可以:
      $ cp arch/mips/configs/loongson3_defconfig .config   *** 注意此处的 loongson3_defconfig 需先用
        http://www.loongnix.org/cgit/linux-4.4/tree/arch/mips/configs/ 下的同名文件替换
   d) $ make menuconfig (运行此命令前需要有依赖包 ncurses-devel)
      此命令可以在当前(缺省)内核配置的基础上修改一些小地方,比如说新内核多了些新功能,而你想要用到它们,可以在这儿进行配置,然后生成新的内核配置文件

3. 编译内核
   $ make all 配置完后,就可以进行编译了
   说明一下,上述命令其实包括以下命令,即:
   $ make dep       确定依赖性
   $ make zImage    编译压缩内核
   $ make modules   生成内核模块

4. 在编译过程中,会遇到以下问题:
make[1]: *** No rule to make target 'firmware/radeon/BTC_rlc.bin', needed by 'firmware/radeon/BTC_rlc.bin.gen.o'。 停止。
Makefile:1002: recipe for target 'firmware' failed
make: *** [firmware] Error 2

   解决办法:从 http://www.loongnix.org/cgit/linux-4.4/tree/firmware/radeon 链接拷贝以下文件到 firmware/radeon:

"BTC_rlc.bin CAICOS_mc.bin CAICOS_pfp.bin CAICOS_me.bin CAICOS_smc.bin SUMO_rlc.bin SUMO_pfp.bin SUMO_me.bin SUMO_uvd.bin SUMO2_me.bin SUMO2_pfp.bin CYPRESS_uvd.bin CEDAR_me.bin CEDAR_pfp.bin CEDAR_rlc.bin CYPRESS_me.bin CYPRESS_pfp.bin CYPRESS_rlc.bin JUNIPER_me.bin JUNIPER_pfp.bin JUNIPER_rlc.bin R600_rlc.bin R700_rlc.bin REDWOOD_me.bin REDWOOD_pfp.bin  RV710_pfp.bin RV710_me.bin TAHITI_uvd.bin PITCAIRN_pfp.bin PITCAIRN_me.bin PITCAIRN_ce.bin PITCAIRN_rlc.bin PITCAIRN_smc.bin PITCAIRN_mc.bin RV730_smc.bin RV710_uvd.bin BARTS_mc.bin BARTS_me.bin BARTS_pfp.bin BARTS_smc.bin TURKS_pfp.bin TURKS_me.bin TURKS_mc.bin RS780_me.bin RS780_pfp.bin RS780_uvd.bin TURKS_smc.bin"

5. 在编译中,可能会遇到:
  OBJCOPY arch/mips/boot/compressed/vmlinux.bin
  LZMA    arch/mips/boot/compressed/vmlinux.bin.z
/bin/sh: lzma: 未找到命令
arch/mips/boot/compressed/Makefile:70: recipe for target 'arch/mips/boot/compressed/vmlinux.bin.z' failed
make[1]: *** [arch/mips/boot/compressed/vmlinux.bin.z] Error 1
arch/mips/Makefile:377: recipe for target 'vmlinuz' failed
make: *** [vmlinuz] Error 2

  解决办法:安装 xz-lzma-compat 包   

编译完成后:
6. 安装模块
   $ sudo make modules_install

7. 安装内核
   $ sudo make install
 
8. 生成 initrd 文件
   $ sudo mkinitrd /boot/initramfs.4.10.0+ 4.10.0+    #后面的“4.10.0+”是在 /usr/lib/modules 目录下相应的目录名  
 
9. 更新 boot loader 相关配置文件,/boot/boot.cfg,添加下面内容,*** 注意是添加:
   title Fedora, with Linux 4.10.0+
   kernel (wd0,0)/boot/vmlinuz-4.10.0+
   initrd (wd0,0)/boot/initramfs-4.10.0+.img
   args root=UUID=414542a9-54f8-4c62-a500-6789dc759d05 rhgb quiet

10. 重启,测试新装内核 

系统重启后,没有显示或者说是黑屏,解决办法:
把本文所附附件,解压,是一系列 patch(共 6 个),给 kernel 打完后(其中 0004-MIPS-Loogson-Make-enum-loongson_cpu_type-more-clear.patch 和 0005-MIPS-cpu_full_name-to-make-CPU-names-more-huma.patch 不打关系也不大,其余 4 个为必需),rebuild,  再安装模块、内核,重新生成 initrd 文件,再重启,应该会有显示了。

11. 系统再重启后,在我的 fedora25 上,有显示,但到了 udev Kernel Device Manager 这儿就开始报错,之后是一系列的报错,这跟 systemd 有关系,它需要内核  CONFIG_PACKET 和 CONFIG_INET 这两项都选上;这两项都勾选上,再编译下内核,重新安装模块和内核,生成 initrd 文件,再重启,应该就能看到图形的 login 界面了。 

1.png  

猜你喜欢

转载自blog.csdn.net/weixin_40065369/article/details/85853541