目前龙芯提供了若干个rootfs,包括buildroot/openwrt/基于debian的loongnix/openh
ARMony等,但是有源码的只有buildroot和openwrt,后者又很久没更新了,所以如果要自行构建,比较推荐使用buildroot
相关镜像的下载链接为
https://pan.baidu.com/s/1qMp1Mjhdm0OAQJRxYuY27Q?pwd=1234
如果要随时更新,建议还是用git,目前龙芯的项目git地址为
https://gitee.com/open-loongarch
完整版本的sdk包含uboot,kernel,buildroot以及交叉工具链。不管用网盘还是git,首先要下载这四个部分的内容
如果从网盘下载的,龙芯额外提供了buildroot的dl目录,建议也下载下来,不然buildroot构建时也是要下载一遍,而且buildroot有些包的默认链接下载速度很慢。
sdk的目录结构如下
1.uboot构建
uboot下面有个set_env.sh脚本,将里面的setup_loongarch_env函数的CC_PREFIX目录改为
CC_PREFIX=$(pwd)/../loongson-gnu-toolchain-x86_64-loongarch64-linux-gnu
然后source一下
接着执行
make loongson_2k300_mini_dp_defconfig
make
开始编译
注意,某些老版本的ubuntu的openssl版本不足以支持uboot的加密相关工具的构建,这些工具实际上也用不到,可以去掉
编译得到这些文件,其中u-boot-with-spl.bin就是用来烧录的
2.kernel构建
kernel下面同样有个set_env.sh脚本,按上一章的方法修改,然后source一下
接着执行
make loongson_2k300_defconfig
make uImage -j8
此时构建会报错,提示找不到mkimage命令,或者mkimage不支持loongarch架构,此时可以将uboot目录下tools/mkimage命令,拷贝到交叉编译器的目录,并重命名为
loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1/bin/loongarch64-linux-gnu-mkimage文件
原因是kernel下面制作uImage的脚本,也就是scripts/mkuboot.sh里面,有这样的逻辑
它会先找${CROSS_COMPILE}mkimage,没有的话才用系统的mkimage,如果将uboot构建出来的mkimage放在这里,它就会优先用。
再次执行
make uImage -j8
完成构建,得到uImage
3.buildroot构建
首先将下载下来的buildroot的dl目录放到buildroot目录里面,如下
目前龙芯官方提供了三种不同的defconfig配置,如下图
其中第一个是完整版系统的配置,
开发板全量配置,有QT、PYTHON、GCC、GDB、MAKE、CMKAE
第二个开发板是常用配置,有QT、PYTHON,无GCC、GDB、MAKE、CMAKE
第三个是最简版系统
如果不需要图形界面,建议直接选第三个
首先建立一个编译输出目录,比如output/loongson2k300_pure_busybox,然后
执行如下命令
make -C .O=output/loongson2k300_pure_busybox loongson2k300_pure_busybox_defconfig
这样在output/loongson2k300_pure_busybox下面就会有一个.config文件,然后对其进行修改
make -C .O=output/loongson2k300_pure_busybox menuconfig
此处需要跟选用的defconfig文件一致
此处需要选择编译工具链的地址
其他的按默认状态配置。完成之后退出,然后执行
make -C .O=output/loongson2k300_pure_busybox savedefconfig
保存配置
然后执行
make -C .O=output/loongson2k300_pure_busybox
开始构建。如果有dl目录,大概1-2小时左右能完成构建
如果构建的时候显示此报错
则执行一下
unset LD_LIBRARY_PATH
后再次执行
make -C .O=output/loongson2k300_pure_busybox
如果显示此信息,并且没有明显报错的时候,就构建完成了
构建后在output/loongson2k300_pure_busybox/images下可以看到如下文件
另外部分比较老的ubuntu系统,会报PIGZ命令找不到或者执行错误的问题,此时可以将此选项配置为n
这样就默认使用tar命令来进行压缩
到这里,就完成了SDK的构建