久久派环境与内核

开始在不熟悉的平台上捣鼓陌生的设备,龙芯久久派WiFi版,在配置完环境后把步骤记录下来,为了方便以后重装系统什么的再搭建环境。

一、基础工具

基础工具包括Git、Vim和CMake。

Git

如果您想通过二进制安装程序在 Linux 上安装基本的 Git 工具,通常可以通过发行版附带的包管理工具进行安装。如果您使用基于 Debian 的发行版(例如 Ubuntu),请尝试apt:

1
$ sudo apt install git

由于我们要用到的仓库使用了LFS(Large File Storage),所以我们需要安装一下,不然会出现克隆下来的大文件只有几百字节的情况,那些文件都只是LFS指针。

1
$ sudo apt-get install git-lfs

使用$ git lfs install命令可以查看Git LFS是否安装成功,如果正确安装,则会提示Git LFS initialized.

Vim

1
$ sudo apt install vim

CMake

1
$ sudo apt install cmake-gui libncurses-dev bison flex make libncurses5-dev libssl-dev

这条命令安装了以下工具:
1. cmake-gui:CMake的图形用户界面,用于配置和生成构建系统。
2. libncurses-dev:ncurses库的开发文件,用于终端文本界面的开发。
3. bison:GNU的语法分析器生成器,用于解析文本输入。
4. flex:快速词法分析器生成器,通常与bison一起使用。
5. make:GNU make工具,用于自动化构建过程。
6. libncurses5-dev:ncurses库的旧版本开发文件。
7. libssl-dev:OpenSSL库的开发文件,用于加密和安全通信。

二、交叉编译工具链配置

1.获取资料包

使用下面这条命令克隆资料,完整大小6.7GB,在当前终端目录下可以找到Loongson-2K0300-99PAI目录。

1
$ git clone https://cnb.cool/hex/loong/Loongson-2K0300-99PAI.git

这个步骤如果自己用浏览器上那个网站下载zip包可能会出现克隆的资料文件特别小,只有几百字节之类的LFS指针,具体内容可以去网站看一下说明:

1
2
3
4
5
6
7
8
9
10
# 如果您是第一次使用 LFS,请根据 “如何安装 Git LFS?” 安装 LFS 支持
# git 启用 lfs 钩子
git lfs install
# clone
git clone https://cnb.cool/hex/loong/Loongson-2K0300-99PAI.git
# 更新
git pull
# 初始化并拉取 longson-ejtag 子模块
# 如不需要 longson-ejtag 相关内容可以不用执行这一步
git submodule update --init --recursive

2.配置工具链

久久派内核和LoongOS/gcc/目录下有一个loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1.tar.xz压缩包,在当前目录下打开终端解压缩,名称可以使用Tab补全,解压后目录大小为两百多MB。

1
$ tar -xvf loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1.tar.xz

我们需要将解压缩的目录移动到/opt/目录下,这一操作需要sudo权限,不建议在图形界面操作。

1
$ sudo mv loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1 /opt/

在 Linux 系统中,/opt/目录是一个用于安装第三方应用程序的目录。它的名称来源于 “optional”,表示这些应用程序是可选的,而不是系统运行所必需的。将第三方软件安装在/opt/中,可以避免与系统自带的软件包冲突,保持系统的整洁。同时这种结构非常便于管理,卸载或更新软件更加方便,只需删除或替换对应的子目录即可。
下面是/opt/的目录树:

1
2
3
4
5
6
7
/opt/
└── software_name/
├── bin/ # 可执行文件
├── lib/ # 库文件
├── etc/ # 配置文件
├── doc/ # 文档
└── ... # 其他文件

3.配置环境变量

接着,我们要添加loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1/bin的位置到环境变量
先将enviroment文件提升权限:

1
$ sudo chmod 777 /etc/environment

接着使用nanovim编辑enviroment文件,在PATH末尾添加:/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1/bin,注意不要添加到双引号外面。保存之后使用$ source /etc/environment命令载入文件。在终端中输入loong,然后按Tab自动补全,如果能补全loongarch64-linux-gnu-则表示交叉编译的环境已经配置完成,输入$ loongarch64-linux-gnu-gcc -v可查看gcc的版本。编辑完环境建议重启一下,不然可能会遇到重新开个终端就又读不到gcc版本的情况,如果暂时不想重启,可以在终端里重新$ source /etc/environment一下,接着在这个终端下就能正常用了。

三、编译龙芯2K0300内核

旧世界与新世界

查找资料的时候经常看有人提到“新世界”,好奇查了一下,发现Loongarch生态是有两种的,官方称为ABI1.0ABI2.0。两个世界互不兼容,具体内容参考这个文章,久久派的内核是旧世界。

1.解压内核源码

找到资料包Loongson-2K0300-99PAI/久久派内核和LoongOS/内核源码和LoongOS安装文件/ABI1.0/内核源码/目录下的linux-4.19-0802.tar.gz压缩包,解压后九百多MB,这就是内核源码,进入解压出来的目录。

2.修改Makefile文件

我们在这个目录下找到Makefile,双击打开,如果之前安装了Vim,那现在应该在Vim的终端里。在这个文件的最上方添加这两行:

1
2
ARCH=loongarch
CROSS_COMPILE=loongarch64-linux-gnu-

保存后退出。

3.编译内核

linux-4.19/arch/loongarch/configs目录下的loongson_2k300_defconfig文件复制到源码根目录,然后在根目录中打开终端,执行$ make menuconfig命令,会进入这个界面:

选择下方的Save,接着会让配置一个文件名称,直接使用默认的就行,退回主界面之后连续按俩下ESC退出。
编译内核需要自行选择多少线程,在物理机中CPU有多少核心就能有多少线程,在虚拟机中核心数由自己配置;使用$ nproc命令查看有多少线程。
在内核源码根目录使用$ make vmlinuz -j10进行内核编译,其中-j10中的参数不大于最大线程数就行。
编译结束后内核源码根目录下的vmlinuz文件就是编译好的内核。把vmlinuz文件放入开发板/boot目录,然后使用chmod命令提高文件权限,重启开发板后修改的内容就生效了。(第一次改ADC的时候不知道要提高权限,死活不生效)

【本文完】


久久派环境与内核
https://mrwei95.github.io/2025/02/12/basic-loongarch-environment/
作者
Tommy Wei
发布于
2025年2月12日
更新于
2025年4月2日