190 Star 1.2K Fork 233

GVP泰晓科技 / Linux Lab

 / 详情

成功适配过 Linux Lab 的国内外图书、线上课程列表

Backlog
owner
Opened this issue  
2021-09-14 08:24

大家好,本帖用于记录来自社区各个用户自行适配 Linux Lab 的实验案例情况。

欢迎图书作者、课程作者、社区用户根据需求自行适配并提交,需要贴上适配后的测试记录、使用步骤等。

  • 如果希望新增,但是还未来得及适配的,请在开头加一个 TODO: 关键字。
  • 如果嫌自行搭建 Linux Lab 繁琐,可以直接去某宝检索 “Linux Lab真盘”,有预装 Linux Lab、Linux 0.11 Lab 等。

Comments (8)

吴章金 created任务
吴章金 set related repository to 泰晓科技/Linux Lab
吴章金 changed description
Expand operation logs

泰晓学院在线视频频道

简介

用法

泰晓学院发布的课程一般都会提供完善的配套实验案例与实验开展过程介绍,请参考课程本身的相关章节。

$ cd src/examples/
$ ls
assembly  c  makefile  README.md  shell

// 所有主流处理器的 hello-world 汇编
$ cd assembly
$ ls | xargs -i make -C {}

// C 语言案例
$ cd c
$ make -C hello

国外知名图书

简介

Books Versions Authors
LDD3 v2.6.10 Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
LKD3 v2.6.34.9 Robert Love
ULK3 v2.6.11.12 Marco Cesati, Daniel P. Bovet
PLKA v2.6.24.7 Wolfgang Mauerer

Books' fullname and their resources:

用法

以 v2.6.24.7 为例:

$ make BOARD=i386/pc
$ make config LINUX=v2.6.24.7
$ make kernel
$ make boot
吴章金 changed description

Linux 内核完全注释(基于 Linux 0.11)

为降低维护开销,该部分不再开放,后续仅集成到 Linux Lab Disk,可以到某宝检索 “Linux Lab 真盘” 选购。

简介

用法

Linux Lab真盘中已集成,其他用户请自行 clone。

$ cd /labs/linux-0.11-lab
$ make help

CS 630: Advanced Microcomputer Programming (Fall 2006)

为降低维护开销,该部分不再开放,后续仅集成到 Linux Lab Disk,可以到某宝检索 “Linux Lab 真盘” 选购。

简介

用法

Linux Lab真盘已集成,其他用户请自行 clone。

$ cd /labs/cs630-qemu-lab
$ make help

RISC-V RVOS 在线视频课程

简介

用法

$ cd src/examples/
$ git clone https://gitee.com/wuzhangjin/riscv-operating-system-mooc rvos-lab
$ cd rvos-lab/code/os
$ make run
吴章金 changed description
吴章金 set top level to High

TODO:新增魏老师的《C 语言最佳实践》在线视频课程实验适配需求

https://github.com/VincentWei/best-practices-of-c

《C 语言最佳实践》

:pushpin: 《UEFI编程实践》简介

UEFI架构目前适配了多种CPU架构,包括X86、ARM、RISC-V,国产的龙芯、飞腾等。不同的CPU,有自己的汇编语言。这么多的架构,从现实的角度来看,是无法将所有硬件平台购置齐全进行学习的。在编写《UEFI编程实践》的过程中,对于此问题我甚是苦恼。

UEFI编程实践-封面照

直到遇到吴老师的LinuxLab,非常完美地解决了这个问题。

具体来说,X86的开发和实验环境随处可得。而国产的龙芯和飞腾,对于普通开发者而言,不大容易获得。Linux Lab集成了Linux内核开发所需的编辑器、调试器、模拟器等,当然也包括我急需的汇编语言编译和运行环境,可以支持多种处理器架构。而其中,就包含了我迫切需要的飞腾(ARM)和龙芯架构。

:pushpin: 内容节选

在《UEFI编程实践》中,主要使用Linux Lab进行龙芯和飞腾的实验。以下内容节选自第11章。

11.2.1 安装Linux Lab

Linux Lab是一个开源项目,它是一个使用Docker和Qmeu搭建的即时开发环境。在其内部,集成了Linux内核开发所需的编辑器、调试器、模拟器、根文件系统等。可以用来学习处理器架构、Linux内核、汇编语言等。当前版本中,已经支持了7大处理器架构,包括X86、ARM、PPC、RISC-V、Loongson和CSKY。

本节将介绍如何安装Linux Lab。Linux Lab主要是用来学习龙芯的汇编语言,以及下一章飞腾的汇编语言(也即ARMv8指令集)。我们学习龙芯和飞腾的汇编语言,需要的是对应平台的编译器,以及能运行程序的实验环境。这些组件,在Linux Lab中都已经预置安装了。

安装Linux Labb需要预留足够的硬盘空间,建议预留50GB至100GB的空间,内存则建议在4GB以上。笔者是在Ubuntu 18.04上搭建Linux Lab的,操作步骤如下。 (下略)

11.2.2 龙芯汇编语言实验

如果只是学习龙芯汇编语言,实际上有不少模拟器可以使用,比如Qtspim、MIPS等。笔者最初也是用这些模拟器学习龙芯的汇编语言的,然后自己搭建跨平台编译环境,再使用Qemu模拟MIPS64的CPU并启动操作系统。

这样一整套环境搭建下来,非常复杂而且费时。考虑到在学习UEFI编程的过程中,需要不断在ARM、MIPS和X86之间切换,笔者建议所有与汇编学习相关的环境搭建都转到Linux Lab下了,它刚好能满足对多平台汇编学习的需要。

本节分为两部分内容:一是关于龙芯汇编指令的基本用法,二是如何在Linux Lab下编译龙芯汇编程序,并在Qemu模拟的龙芯系统上进行测试。
(中间内容略...)

(3) 在开发板上测试程序

当然,也可以在实际的开发板上进行测试。另开一个终端,登录Linux Lab,并在启动开发板的时候,通过NFS启动根文件系统。命令如下:

ubuntu@Linux-lab:/labs/Linux-lab$ make boot ROOTDEV=nfs

在编译汇编程序的终端上,将执行文件拷贝到开发板的操作系统中,这实际上是在主机和Qemu系统之间传输文件。复制文件的命令如下:

ubuntu@Linux-lab:/labs/Linux-lab/src/examples/assembly/MIPS64el$ cp MIPS64el-hello 
 /labs/Linux-lab/boards/MIPS64el/ls3a7a/bsp/root/2020.08/rootfs/root/

进入开发板上的操作系统(使用用户名root即可登录),可以发现执行文件已经复制到了根目录下了,直接进行测试:

# ./MIPS64el-hello
Hello, UEFI world!

至此,我们完成了Linux Lab上的龙芯汇编语言的实验。 (后略)

:pushpin: 后记

虽然现在的UEFI BIOS开发,基本都转向了C语言。但针对平台的一些特定应用时,仍旧会用到平台相关的汇编语言。对于使用UEFI进行开发的第三方厂商,比如显卡、网卡、隔离卡厂商等,在进行Option ROM开发中,仍有机会使用汇编语言进行特别应用的开发。

如前所述,和C语言编写的UEFI程序不同,汇编语言是无法在非目标CPU架构上运行的。因此,拥有一个可以随时进行测试的、可支持各种CPU架构的实验环境,是非常方便的。

从Linux Lab中,我学到了不少有趣的知识,希望你也能乐在其中。

Sign in to comment

Status
Assignees
Milestones
Pull Requests
Successfully merging a pull request will close this issue.
Branches
Planed to start   -   Planed to end
-
Top level
Priority
参与者(2)
5069540 wuzhangjin 1594531572
Shell
1
https://gitee.com/tinylab/linux-lab.git
git@gitee.com:tinylab/linux-lab.git
tinylab
linux-lab
Linux Lab

Search

161121 f78d6d6f 1850385 154831 86f8c370 1850385