Skip to content

xiyou-linuxer/kernel-travel

Repository files navigation

kernel-travel

kernel-travel 是由 重启之我是loader 三名成员共同开发的基于 LoongArch 的架构的64位操作系统。系统采用 kbuild 编译框架,从 0 开发内核,部分头文件移植自 Linux 。

编译并运行该项目

1 环境工具准备

拉取 Docker 镜像并启动

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 中的 qemu 配置内部网络

需要在 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 #配置子网掩码

启动 Docker 中的 qemu

生成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

在 Docker 中安装 tftp 服务器并启动服务

在加载内核镜像时需要用到 tftp 服务

apt install tftpd-hpa
service tftpd-hpa start

2 获取UEFI启动引导

这里提供制作好的UEFI启动引导,下载地址: QEMU_EFI.fd

将UEFI启动引导移动到当前工作目录下。

3 编译kernel-travel

  1. 下载
git clone https://github.com/xiyou-linuxer/kernel-travel.git
  1. 配置交叉工具链

点击下载交叉工具链: loongarch64-clfs-6.3-cross-tools-gcc-full.tar.xz

将交叉工具链包解压到 kernel-travel 目录下(交叉编译工具较大,预留足够存储空间)。

tar -vxf loongarch64-clfs-6.3-cross-tools-gcc-full.tar.xz
  1. 编译并将内核镜像传入 Docker 容器
cd kernel-travel 
bash quick_start.sh defconfig
bash quick_start.sh image

提醒:QEMU_EFI.fd路径和交叉工具链包路径可以自定义,修改quick_start.shrun()以及TOOLCHAINS路径即可。

4 通过 tftp 服务启动内核

进入执行 ./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                       #跳转到指定地址执行

5 清空生成的文件

bash quick_start.sh distclean

文档列表

文档位于 kernel-travel/doc 目录下。

参考资料