泰晓科技 -- 聚焦 Linux - 追本溯源,见微知著!
网站地址:https://tinylab.org

泰晓 Linux 实验盘全系 6 大 Linux 发行版已全部支持自动快照并集成 Linux Lab v1.0
请稍侯

Linux 内核实验环境


可快速构建,支持 Docker, Qemu, Ubuntu, Mac OSX, Windows, Web
Wu Zhangjin 创建于 2022/06/16

项目描述

该项目致力于快速构建一个基于 Qemu 的 Linux 内核开发环境。

Linux Lab 真盘

Linux Lab v0.7 版开始支持 “Linux Lab 真盘”(又名 Linux Lab Disk),实现 Linux Lab 的即插即用,完全免安装,进一步提升 Linux Lab 使用体验,快速高效地开展 Linux 相关实验与开发。

Linux Lab 真盘

产品特性:

  • 智能启动,开创了三种全新的智能化 “傻瓜式” 使用方式,可自动检测后并行启动、可免关机直接来回切换、还可以智能记忆自动启动。
  • 相互套娃,多支 Linux Lab Disk 可相互启动或来回切换,因此,可根据喜好同时使用多个不同的 Linux 系统发行版。
  • 透明倍容,透明提供接近翻倍的可用容量空间,“零成本”获得接近一倍的额外存储空间。
  • 时区兼容,自动兼容 Windows, MacOS 和 Linux 的时区设定,跟主系统来回任意切换后时间保持一致。
  • 自动共享,在 Windows 或 Linux 主系统下并行运行时,自动提供多种与主系统的文件与粘贴板共享方式。
  • 零损编译,支持“半内存”与“全内存”的编译方式,可实现磁盘“零”写,极大地提升磁盘寿命,并提升实验效率。
  • 即时实验,集成自研 Linux Lab,Linux 0.11 Lab 等实验环境,可在 1 分钟内开展 Linux 内核、嵌入式 Linux、Uboot、汇编、C、Python、数据库、网络等实验。
  • 出厂恢复,全系 6 大 Linux 发行版已全部支持出厂恢复功能,在 “rm -rf /” 后都能启动并恢复出厂系统,同时支持自动备份和急救模式,用起来更安心!

功能连载(见 “Linux知识星球” 专栏,订阅可跟进后续更新):

  • 内核开发,数分钟内开展最新 Linux 内核开发与测试
  • Uboot开发,快速开展 Uboot 开发与测试
  • 文件系统制作,演示如何通过 Buildroot 极速构建嵌入式小型文件系统
  • RVOS 实验,演示如何开展 RISC-V OS 课程实验,主要是 RISC-V 汇编与 OS 核心功能
  • GUI 实验,演示如何开展嵌入式图形应用开发实验,本次实验用的是 GuiLite
  • C 语言入门实验,演示如何在 Linux 下用 vim, gcc, make 做一个简单的 C 语言 Hello World 程序实验
  • 汇编语言入门实验,演示了如何开展32/64位 RISC-V、ARM、MIPS、X86 和 PowerPC 汇编语言实验
  • Shell 语言入门实验,演示经典的 Hello World,包括执行方式、打印命令、退出码设置和简单参数传递。
  • 数据库 SQL 入门实验,演示了 sqlite3 的表创建、数据插入、select 与 update 语句及通过C语言访问数据库。
  • 网络入门实验,演示了 ip 和网关地址查看、静态&动态配置,NAT 与 网桥,ping, tcpdump 及 nmap。
  • 用 Python 解个方程,演示了如何安装 python 新模块并通过 SymPy 模块来演示如何解方程。
  • RISC-V Linux v5.17 内核实验,演示了如何通过 Linux Lab Disk 开展 RISC-V 芯片 Linux v5.17 内核实验。

购买地址:

Linux Lab 真板

Linux Lab v0.6 版支持 “Linux Lab 真板”,实现了对真实嵌入式开发板的完美支持,从此,不仅可以使用 Linux Lab 学习 Linux 内核,还可以用它来做 Linux 驱动开发。

Linux Lab 真板

使用文档:

购买地址:

更多用法

五分钟教程

以 Ubuntu 为例,请先参考其他资料安装好 Docker。

下载

$ git clone https://gitee.com/tinylab/cloud-lab.git
$ cd cloud-lab && tools/docker/choose linux-lab

安装

$ tools/docker/run            # 加载镜像,拉起一个 Linux Lab 容器

快速尝鲜

执行 tools/docker/webvnc 后会打开一个 VNC 网页,根据 console 提示输入密码登陆即可,之后打开桌面的 Linux Lab 控制台并执行:

$ make boot

启动后,会打印如下登陆提示符,输入 root,无需密码直接按下 Enter 键即可。

Welcome to Linux Lab

linux-lab login: root

# uname -a
Linux linux-lab 5.1.0 #3 SMP Thu May 30 08:44:37 UTC 2019 armv7l GNU/Linux

默认会启动一个 versatilepb 的 ARM 板子,要指定一块开发板,可以用:

$ make list                   # 查看支持的列表
$ make BOARD=malta            # 这里选择一块 MIPS 板子:malta
$ make boot

配置

$ make kernel-checkout        # 检出某个特定的分支(请确保做该操作前本地改动有备份)
$ make kernel-defconfig       # 配置内核
$ make kernel-menuconfig      # 手动配置内核

编译

$ make kernel       # 编译内核,采用 Ubuntu 和 emdebian.org 提供的交叉编译器

保存所有改动

$ make save         # 保存新的配置和新产生的镜像

$ make kconfig-save # 保存到 boards/BOARD/

$ make kernel-save

启动新的内核

只要有新编译的内核,就会自动启动:

$ make boot

启动串口

$ make boot G=0	# 使用组合按键:`CTL+a x` 退出,或者另开控制台执行:`pkill qemu`

选择 Rootfs 设备

$ make boot ROOTDEV=/dev/nfs
$ make boot ROOTDEV=/dev/ram

扩展

通过添加或者修改 boards/BOARD/Makefile,可以灵活配置开发板、内核版本以及 BuildRoot 等信息。通过它可以灵活打造自己特定的 Linux 实验环境。

$ cat boards/arm/versatilepb/Makefile
ARCH=arm
XARCH=$(ARCH)
CPU=arm926t
MEM=128M
LINUX=2.6.35
NETDEV=smc91c111
SERIAL=ttyAMA0
ROOTDEV=/dev/nfs
ORIIMG=arch/$(ARCH)/boot/zImage
CCPRE=arm-linux-gnueabi-
KIMAGE=$(PREBUILT_KERNEL)/$(XARCH)/$(BOARD)/$(LINUX)/zImage
ROOTFS=$(PREBUILT_ROOTFS)/$(XARCH)/$(CPU)/rootfs.cpio.gz

默认的内核与 Buildroot 信息对应为 boards/BOARD/linux_${LINUX}_defconfigboards/BOARD/buildroot_${CPU}_defconfig,如果要添加自己的配置,请注意跟 boards/BOARD/Makefile 里头的 CPU 和 Linux 配置一致。

更多用法

详细的用法这里就不罗嗦了,大家自行查看帮助。

$ make help

实验效果图

Linux Lab Demo

演示视频