23

Linux Lab:难以抗拒的十大理由

 4 years ago
source link: http://tinylab.org/why-linux-lab/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

By Falcon ofTinyLab.org Dec 19, 2019

Linux Lab 是一套用于 Linux 内核学习、开发和测试的即时实验室,可以极速搭建和使用,功能强大,用法简单!

AbEjmmy.jpg!web

经过 3 年多的开发与迭代,Linux Lab 已经发布了v0.2 版,其易用性和功能逐渐强大,非常推荐各位 Linux 内核和嵌入式 Linux 开发者尝试。下面列举了十大使用 Linux Lab 的理由。

省时:节省数周的环境搭建时间

无论是新人还是有经验的老手,搭建 Linux 的学习和实验环境都是比较费时费力的,一方面要安装基础系统,一方面要下载各种交叉编译工具,有时候还要去下载最新的源代码。在国内这个大的局域网下,要整完整套环境,少则几天,多则数周,最重要的通常还得多次重复去搭建,不光费时还很繁琐,系统一变更,又得重复做。

Linux Lab 把这几个工作简化成了三条命令(Windows、Mac OSX 和非 Ubuntu Linux 系统需要自行安装 Docker),数十分钟就可以执行完,而且每次都可以拿到体验一致的环境:

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

目前 Linux Lab 已经在 github 和 gitee 上收获累计 500 多个 Stars,并有数百人的用户群,按 500 人,每人节省 4 周即 30 天粗略估算,Linux Lab 已经累计节省了 500 * 30 天 = 15000 天 = 41 年

省钱:节省不菲的开发板购买费用

截止到目前,Linux Lab 已经支持世界上最主流和流行的 5 大处理器架构(X86、ARM、MIPS、PowerPC、RISC-V),也支持国产的 CSKY 和 Loongson,支持 15 款相应的开发板。

按人均一块板子,每块开发板 ¥300 粗略计算,已经为大家节省了 500 * ¥300 = ¥150000 = ¥15 万

对于个人而言,有了 Linux Lab,可以自由使用现有的 7 大架构,15 款开发板中的任意一款,累积节省 15 * ¥200 = ¥3000 ,并且这些开发板可以反复使用,永远不会坏,而且还有更多板子在持续添加中,用户也可以自己轻松扩展新板子。

$ make list-short
[ aarch64/raspi3 ]:
      ARCH     = arm64
      LINUX   ?= v5.1
[ aarch64/virt ]:
      ARCH     = arm64
      LINUX   ?= v5.1
[ arm/versatilepb ]:
      ARCH     = arm
      LINUX   ?= v5.1
[ arm/vexpress-a9 ]:
      ARCH     = arm
      LINUX   ?= v5.1
[ i386/pc ]:
      ARCH     = x86
      LINUX   ?= v5.1
[ mipsel/malta ]:
      ARCH     = mips
      LINUX   ?= v5.1
[ ppc/g3beige ]:
      ARCH     = powerpc
      LINUX   ?= v5.1
[ riscv32/virt ]:
      ARCH     = riscv
      LINUX   ?= v5.0.13
[ riscv64/virt ]:
      ARCH     = riscv
      LINUX   ?= v5.1
[ x86_64/pc ]:
      ARCH     = x86
      LINUX   ?= v5.1
[ csky/virt ]:
      ARCH     = csky
      LINUX   ?= v4.9.56
[ loongson/ls1b ]:
      ARCH     = mips
      LINUX   ?= v5.2
[ loongson/ls232 ]:
      ARCH     = mips
      LINUX   ?= v2.6.32-r190726
[ loongson/ls2k ]:
      ARCH     = mips
      LINUX   ?= loongnix-release-1903
[ loongson/ls3a7a ]:
      ARCH     = mips
      LINUX   ?= loongnix-release-1903

更为重要的是,有些开发板在市面上可能根本就买不到,要不不开卖了,要不没地方买。

省心:一致和可预期的操作结果

以往要研究 Linux,最害怕的是慢得让人发疯的洲际网络,不知道从哪里才能找到靠谱可用的编译器,抑或是某个版本内核 ok,另外一个版本又不行,或者某个命令又罢工了,或者是配置不对。

Linux Lab 不仅提供了一致的环境,还提供了验证好的编译器、Qemu 启动脚本、甚至有预编译好的内核和文件系统映像包以及配套的配置文件,而且 Linux Lab 把所有依赖的资源尽量都迁移到了我们的“局域网”内。

  • Linux,采用清华的 Mirror
  • U-boot, Buildroot 和 Qemu 都采用码云的 Mirror
  • Docker 镜像,可采用 USTC、阿里云等 Mirror
  • 编译器,每个架构有验证好 2~3 款可用的编译器
  • 内核和文件系统,每个架构都有提前编译好的版本,按开发板各自存放在独立的码云仓库中

几乎所有的动作都有预先验证过的简单接口,并且都经过了较为充分的测试和验证。能极大程度地降低不确定性带来的恐慌和彷徨,减少苦恼。

几乎所有的板子都添加了串口、网络、LCD 驱动支持,也添加了从 Ramdisk、NFS、磁盘 加载文件系统功能,还添加了简洁的调试和测试功能。用户可以在这个很高的起点上再根据需求做进一步的客制化,非常省心省力。

强大:可扩展的计算机基础技术学习环境

Linux Lab 的初衷是学习 Linux 内核,但是发展至今,不仅可以用来学习 Linux 内核,还可以用来学习 C、汇编、Shell、处理器架构、U-boot、Qemu 等,而且还可以做进一步的扩展。

另外,作为 Linux Lab 的基础设施,Cloud Lab 提供了更大扩展性,目前不仅有 Linux 0.11 Lab, CS630 Qemu Lab 这样的 Lab 实例,而且有 Markdown Lab, RT-Thread Lab 这样的 Lab 实例,还可以类似添加更多的专属 Lab 环境,有巨大的可扩展能力。

  • Linux 0.11 Lab,用于学习 0.11 版本的 Linux 内核
  • CS630 Qemu Lab,用于学习 Linux AT&T 汇编语言
  • RT-Thread Lab,用于研究国产 RT-Thread OS
  • Markdown Lab,用于学习和使用 Markdown,可以用来撰写图书、幻灯、简历或图书

简洁:统一简单易记的操作接口

Linux Lab 把各种常见操作抽象为简单易记的接口,把背后繁琐的细节和费时的工作全部隐藏并且优化好,用户只需要记住简单的命令即可。并且这些命令适应已经支持的 Linux、U-boot、Buildroot 和 Qemu。

make 接口 作用 *download 下载 *checkout 检出某个版本 *patch 打补丁 *defconfig 使能默认配置文件 *olddefconfig 启用老的配置 *menuconfig 打开图形配置界面 *save 保存配置和镜像 boot 通过 Qemu 引导 debug 通过 Qemu 调试 test 通过 Qemu 测试

小巧:模块化和清晰透明的架构

Linux Lab 本身被拆分成三大部分:实验环境、实验代码和环境管理,而实验代码又经过精心地设计,避免臃肿。

Linux Lab 与其他 Lab 实例共享环境管理代码:Cloud Lab,仅需关心自身的实验环境和实验代码,而实验代码部分又尽可能地只保留板级公共代码,板子特定的代码不仅可以作为独立的仓库发布,而且可以独立使用。所以,Linux Lab 不仅结构清晰,而且代码小巧。

模块 大小 Cloud Lab 8.5M Linux Lab 7.3M linux-lab Docker 镜像 4.13G boards/csky 358M boards/loongson/ls3a7a/bsp 7.8M boards/loongson/ls232/bsp 5.0M boards/loongson/ls1b/bsp 40M boards/loongson/ls2k/bsp 29M boards/aarch64/raspi3/bsp 152M boards/aarch64/virt/bsp 68M boards/arm/versatilepb/bsp 142M boards/arm/vexpress-a9/bsp 60M boards/riscv64/virt/bsp 49M boards/riscv32/virt/bsp 40M boards/mipsel/malta/bsp 48M boards/i386/pc/bsp 23M boards/x86_64/pc/bsp 20M boards/ppc/g3beige/bsp 57M

各板级或架构有独立的仓库,并且有独立的 Qemu 启动脚本(boot.sh)、内核映像、文件系统映像以及相应配置文件,可以独立使用和参考:

易达:随时随地使用和访问

Linux Lab 不仅提供了本地的 VNC/SSH 访问方式,而且提供了远程的 WebVNC 和 WebSSH 访问方式,而且提供了内网穿透的功能(需要专属 Docker 容器配合),可以类似 teamviewer 那样从外网进入局域网。所以,理论上,搭建完 Linux Lab,再配合现代路由器或者云服务器,就可以做到,随时随地访问一致的开发环境。

$ tools/docker/release linux-lab
LOG: Current Lab is linux-lab
Lab: linux-lab-60029, User: ubuntu
  * VNC (Normal): http://localhost:6080/?u=7827c9&p=chln3p
  * VNC   (View): http://localhost:6080/?r=7827c93tsrkd
  * SSH    (Web): http://localhost:4433/?ssh=ssh://ubuntu:[email protected]:22

LOG: Released to: /media/falcon/develop/cloud-lab/releasings/index.html
LOG: Labs online: http://localhost:6080/labs/index.html

简单地,如果在一台云服务器上运行 Linux Lab,只需要把外网可访问的服务 IP 地址或者域名写入到 Cloud Lab 根目录下的 .host_name 即可获得合适的 URL 地址:

$ cd /path/to/cloud-lab
$ echo example.com > .host_name
$ tools/docker/release linux-lab
LOG: Current Lab is linux-lab
Lab: linux-lab-60029, User: ubuntu
  * VNC (Normal): http://example.com:6080/?u=7827c9&p=chln3p
  * VNC   (View): http://example.com:6080/?r=7827c93tsrkd
  * SSH    (Web): http://example.com:4433/?ssh=ssh://ubuntu:[email protected]:22

LOG: Released to: /media/falcon/develop/cloud-lab/releasings/index.html
LOG: Labs online: http://example.com:6080/labs/index.html

兼容:三大系统环境下使用几乎一致

Linux Lab 基于 Docker,只要安装有 Docker,就可以直接在 Linux、Mac OSX 和 Windows 三大系统下使用,并且使用体验几乎一致。

如果是老版本的 Windows,可以用 Docker Toolbox ,也可以通过 Virtualbox 或 Vmware 自行安装 Ubuntu。

通用:支持几乎所有版本的 Linux 内核

可以自由切换“任意”内核版本,从 2.6 到 5.4,已经验证的版本从早期的 2.6.35 到 5.2,都提供有相应的配置文件和预编译好的映像:

$ ls boards/*/*/bsp/kernel/ | grep -v riscv | sort -u
v2.6.35
v2.6.35.14
v2.6.36
v2.6.37
v3.10
v3.18.39
v4.19
v4.5.5
v4.6.7
v5.0.10
v5.0.13
v5.0.21
v5.1
v5.2

结合Linux 0.11 Lab,还可以研究”上古时代”的 0.11 等老内核版本。

教学:提供了多种教学辅助功能

Linux Lab 提供了如下教学辅助功能,适合在高校、培训机构、在线课程等场景下使用:

  • 提供了 Normal 和 Viewonly 这两种访问方式,可以互动,也可以广播,适合多种教学场景
  • 允许一键创建任意多个独立的 Lab 实体,允许多个学生同时使用
  • 提供了多种实验过程的录制工具,包括命令行的录制工具 showterm 和桌面的录制工具: showdesk.io

已经迫不及待了吗?快通过微信加 tinylab 为好友,申请进 “Linux Lab 用户群” 或 “Linux Lab 开发群” 吧。

接下来,看看同学们在 arm64 aarch64/virt 板子上运行 5.1 Linux 的小视频吧:

支付宝打赏
¥9.68元 微信打赏
¥9.68元 RfEVnqY.jpg!webbqIfYrA.png!web 请作者喝杯咖啡吧 fYf6zmV.jpg!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK