kernel-travel 是由 重启之我是loader 三名成员共同开发的基于 LoongArch 的架构的64位操作系统。系统采用 kbuild 编译框架,从 0 开发内核,部分头文件移植自 Linux 。
docker pull docker.educg.net/cg/os-contest:2024p6
docker run --privileged -it --name os-contest -p 12306:22 docker.educg.net/cg/os-contest:2024p6 /bin/bash
需要在 Docker 中安装的工具:
apt-get install bridge-utils # 虚拟网桥工具
apt-get install uml-utilities # UML(User-mode linux)工具
apt-get install net-tools
配置命令:
ip link add br0 type bridge #创建一个网络桥接接口
ip tuntap add dev tap0 mode tap #创建一个 TAP 设备
brctl addif br0 tap0 #将 tap0 设备加入到 br0 网桥
ifconfig br0 0.0.0.0 promisc up #将 br0 接口的 IP 地址设置为 0.0.0.0
ifconfig tap0 0.0.0.0 promisc up #将 tap0 接口的 IP 地址设置为 0.0.0.0
ifconfig br0 10.0.0.1 netmask 255.255.255.0 #配置子网掩码
生成2kfs.img:
在启动qemu之前要先运行脚本create_qemu_img.sh生成2kfs.img文件。
cd /tmp/qemu/2k1000
./create_qemu_img.sh
传入sdcard.img:
sudo docker cp 你存放sdcard-loongarch.img的路径 os-contest:/sdcard-loongarch.img
启动qemu
cd /tmp/qemu
./runqemu
在加载内核镜像时需要用到 tftp 服务
apt install tftpd-hpa
service tftpd-hpa start
这里提供制作好的UEFI启动引导,下载地址: QEMU_EFI.fd
将UEFI启动引导移动到当前工作目录下。
- 下载
git clone https://github.com/xiyou-linuxer/kernel-travel.git
- 配置交叉工具链
点击下载交叉工具链: loongarch64-clfs-6.3-cross-tools-gcc-full.tar.xz
将交叉工具链包解压到 kernel-travel 目录下(交叉编译工具较大,预留足够存储空间)。
tar -vxf loongarch64-clfs-6.3-cross-tools-gcc-full.tar.xz
- 编译并将内核镜像传入 Docker 容器
cd kernel-travel
bash quick_start.sh defconfig
bash quick_start.sh image
提醒:QEMU_EFI.fd路径和交叉工具链包路径可以自定义,修改quick_start.sh
中run()
以及TOOLCHAINS路径即可。
进入执行 ./runqemu 后进入 uboot 界面,执行如下命令:
setenv ipaddr 10.0.0.2 #设置本机的 IP 地址为 10.0.0.2
setenv serverip 10.0.0.1 #设置 TFTP 服务器的 IP 地址为 10.0.0.1
tftpboot 0x9000000008000000 10.0.0.1:Image #从 TFTP 服务器下载名为 Image 的文件,并将其加载到指定的内存地址处
go 0x9000000008000000 #跳转到指定地址执行
bash quick_start.sh distclean
文档位于 kernel-travel/doc 目录下。