[置顶] 该课主要介绍 Windows PE 程序装载与运行原理,并手把手介绍如何撰写一个小型程序装载器,理论与实战并重Windows Mini PE Loader 视频课程已剪辑发布,早鸟价报名中
[置顶] 第1期主要介绍Rust 历史、主要特性、适应领域,与嵌入式和 C 的关系等等,本期增补上手实验环节Rust 语言入门第 2 期直播课将于 24 日晚开播,早鸟价报名中
Linux 内核实验环境
可快速构建,支持 Docker, Qemu, Ubuntu, Mac OSX, Windows, Web
项目描述
该项目致力于快速构建一个基于 Qemu 的 Linux 内核开发环境。
使用文档:README_zh.md
- 视频教程
- Linux Lab 公开课
- Linux Lab 简介
- 龙芯 Linux 内核开发
- 《360° 剖析 Linux ELF》
- 该课程全程采用 Linux Lab 开展实验,提供了上百个实验案例
- Linux Lab 公开课
- 在线演示
- 代码仓库
- 基本特性:
- 跨平台,支持 Linux, Windows 和 Mac OSX。
- Qemu 支持的大量虚拟开发板,统统免费,免费,免费。
- 基于 Docker,一键安装,几分钟内就可构建,节约生命,生命,生命。
- 直接通过 Web 访问,非常便捷,便捷,便捷。
- 已内置支持 7 大架构:ARM, MIPS, PowerPC, X86, Risc-V, Loongson, Csky。
- 已内置支持 18 款开发板:i386+X86_64/PC, PowerPC/G3beige, MIPS/Malta, ARM/versatilepb, ARM/vexpress-a9, ARM/mcimx6ul-evk, ARM/ebf-imx6ull, ARM64/Virt, ARM64/Raspi3, Riscv32+64/Virt, Loongson/{ls1b, ls232, ls2k, ls3a7a}, Csky/ck810 全部升级到了最新的 v5.1(其中 Riscv32/Virt 仅支持 V5.0)。
- 已内置支持从 Ramfs, Harddisk, NFS rootfs 启动。
- 一键即可启动,支持 串口 和 图形 启动。
- 已内建网络支持,可以直接 ping 到外网。
- 已内建 Uboot 支持,可以直接启动 Uboot,并加载内核和文件系统。
- 预编译有 内核镜像、Rootfs、Qemu、Toolchain,可以快速体验实验效果。
- 可灵活配置和扩展支持更多架构、虚拟开发板和内核版本。
- 支持在线调试和自动化测试框架。
- 正在添加 树莓派raspi3 和 risc-v 支持。
Linux Lab 真盘
Linux Lab v0.7 版支持 “Linux Lab 真盘”,实现 Linux Lab 的即插即用,完全免安装,进一步提升 Linux Lab 使用体验,快速高效地开展 Linux 相关实验与开发。
使用文档:
- Linux Lab 真盘开发日志(1):在 Windows 下直接启动 Linux Lab Disk,当双系统使用
- Linux Lab 真盘开发日志(2):在 macOS 下直接启动 Linux Lab Disk,当双系统使用
- Linux Lab 真盘开发日志(3):在 Linux 下直接启动 Linux Lab Disk,当双系统使用
- Linux Lab 真盘开发日志(4):在台式机、笔记本和 macBook 上即插即用
- Linux Lab 真盘开发日志(5):体验透明压缩带来的容量翻倍效果
- Linux Lab 真盘开发日志(6):体验内存编译的用法和好处
购买地址:
Linux Lab 真板
Linux Lab v0.6 版支持 “Linux Lab 真板”,实现了对真实嵌入式开发板的完美支持,从此,不仅可以使用 Linux Lab 学习 Linux 内核,还可以用它来做 Linux 驱动开发。
使用文档:
- Linux Lab 真板开发日志(1):50 天开发纪要与上手初体验
- Linux Lab 真板开发日志(2):macOS 和 Windows 环境之无串口开发
- Linux Lab 真板开发日志(3):macOS 环境之 SD 卡、无线网卡、虚拟串口
- Linux Lab 真板开发日志(4):上手全平台 GUI 库 GuiLite
购买地址:
更多用法
- Linux Lab:难以抗拒的十大理由 V1.0
- Linux Lab:难以抗拒的十大理由 V2.0
- Linux Lab 龙芯实验手册 V0.2
- Linux Lab 视频公开课
- 采用 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}_defconfig
和 boards/BOARD/buildroot_${CPU}_defconfig
,如果要添加自己的配置,请注意跟 boards/BOARD/Makefile
里头的 CPU 和 Linux 配置一致。
更多用法
详细的用法这里就不罗嗦了,大家自行查看帮助。
$ make help
实验效果图
演示视频
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 泰晓学院:泰晓科技视频频道,发布各类 Linux 视频课
- 淘宝小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
![]() | ![]() 请作者喝杯咖啡吧 | ![]() |