十大使用 Linux Lab 的理由:內核和嵌入式開發

Linux Lab 是一套用於 Linux 內核學習、開發和測試的即時實驗室,可以極速搭建和使用,功能強大,用法簡單!

十大使用 Linux Lab 的理由:內核和嵌入式開發

Linux Lab Boot example

經過 3 年多的開發與迭代,Linux Lab 已經發布了 v0.2 版,其易用性和功能逐漸強大,非常推薦各位 Linux 內核和嵌入式 Linux 開發者嘗試。

下面列舉了十大使用 Linux Lab 的理由。

省時:節省數週的環境搭建時間

無論是新人還是有經驗的老手,搭建 Linux 的學習和實驗環境都是比較費時費力的,一方面要安裝基礎系統,一方面要下載各種交叉編譯工具,有時候還要去下載最新的源代碼。在國內這個大的局域網下,要整完整套環境,少則幾天,多則數週,最重要的通常還得多次重複去搭建,不光費時還很繁瑣,系統一變更,又得重複做。

Linux Lab 把這幾個工作簡化成了三條命令(Windows、Mac OSX 和非 Ubuntu Linux 系統需要自行安裝 Docker),數十分鐘就可以執行完,而且每次都可以拿到體驗一致的環境:

<code>$gitclonehttps://gitee.com/tinylab/cloud-lab.git
$cdcloud-lab
$tools/docker/runlinux-lab/<code>

目前 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 * ¥300 = ¥4500,並且這些開發板可以反覆使用,永遠不會壞,而且還有更多板子在持續添加中,用戶也可以自己輕鬆擴展新板子。

<code>$makelist-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/<code>

更為重要的是,有些開發板在市面上可能根本就買不到,要不不開賣了,要不沒地方買。

省心:一致和可預期的操作結果

以往要研究 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 Lab8.5MLinux Lab7.3Mlinux-lab Docker 鏡像4.13Gboards/csky358Mboards/loongson/ls3a7a/bsp7.8Mboards/loongson/ls232/bsp5.0Mboards/loongson/ls1b/bsp40Mboards/loongson/ls2k/bsp29Mboards/aarch64/raspi3/bsp152Mboards/aarch64/virt/bsp68Mboards/arm/versatilepb/bsp142Mboards/arm/vexpress-a9/bsp60Mboards/riscv64/virt/bsp49Mboards/riscv32/virt/bsp40Mboards/mipsel/malta/bsp48Mboards/i386/pc/bsp23Mboards/x86_64/pc/bsp20Mboards/ppc/g3beige/bsp57M

各板級或架構有獨立的倉庫,並且有獨立的 Qemu 啟動腳本(boot.sh)、內核映像、文件系統映像以及相應配置文件,可以獨立使用和參考:

  • boards/csky
  • boards/loongson
  • boards/aarch64/raspi3/bsp
  • boards/aarch64/virt/bsp
  • boards/arm/versatilepb/bsp
  • boards/arm/vexpress-a9/bsp
  • boards/i386/pc/bsp
  • boards/mipsel/malta/bsp
  • boards/ppc/g3beige/bsp
  • boards/riscv32/virt/bsp
  • boards/riscv64/virt/bsp
  • boards/x86_64/pc/bsp

易達:隨時隨地使用和訪問

Linux Lab 不僅提供了本地的 VNC/SSH 訪問方式,而且提供了遠程的 WebVNC 和 WebSSH 訪問方式,而且提供了內網穿透的功能(需要專屬 Docker 容器配合),可以類似 teamviewer 那樣從外網進入局域網。所以,理論上,搭建完 Linux Lab,再配合現代路由器或者雲服務器,就可以做到,隨時隨地訪問一致的開發環境。

<code>$tools/docker/releaselinux-lab
LOG:CurrentLabislinux-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:Releasedto:/media/falcon/develop/cloud-lab/releasings/index.html
LOG:Labsonline:http://localhost:6080/labs/index.html/<code>

簡單地,如果在一臺雲服務器上運行 Linux Lab,只需要把外網可訪問的服務 IP 地址或者域名寫入到 Cloud Lab 根目錄下的 .host_name 即可獲得合適的 URL 地址:

<code>$cd/path/to/cloud-lab
$echoexample.com>.host_name
$tools/docker/releaselinux-lab
LOG:CurrentLabislinux-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:Releasedto:/media/falcon/develop/cloud-lab/releasings/index.html
LOG:Labsonline:http://example.com:6080/labs/index.html/<code>

兼容:三大系統環境下使用幾乎一致

Linux Lab 基於 Docker,只要安裝有 Docker,就可以直接在 Linux、Mac OSX 和 Windows 三大系統下使用,並且使用體驗幾乎一致。

  • Docker for Linux
  • Docker for Mac
  • Docker for Windows * 依賴特定的 Windows 版本,請查看上述文檔 * 需要配合 “Git Bash Here” 使用。安裝完 Git for Windows 後,在任意目錄點擊鼠標右鍵可見。

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

通用:支持幾乎所有版本的 Linux 內核

可以自由切換“任意”內核版本,從 2.6 到 5.4,已經驗證的版本從早期的 2.6.35 到 5.2,都提供有相應的配置文件和預編譯好的映像:

<code>$lsboardsbsp/kernel/|grep-vriscv|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/<code>

結合 Linux 0.11 Lab,還可以研究"上古時代"的 0.11 等老內核版本。

教學:提供了多種教學輔助功能

Linux Lab 提供瞭如下教學輔助功能,適合在高校、培訓機構、在線課程等場景下使用:

  • 提供了 Normal 和 Viewonly 這兩種訪問方式,可以互動,也可以廣播,適合多種教學場景
  • 允許一鍵創建任意多個獨立的 Lab 實體,允許多個學生同時使用
  • 提供了多種實驗過程的錄製工具,包括命令行的錄製工具 showterm 和桌面的錄製工具:showdesk.io


分享到:


相關文章: