欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

玩客云折騰記錄之編譯?ArmBian?系統(tǒng)

 更新時間:2022年02月09日 15:05:22   作者:蘇洋  
本文將介紹如何從零到一編譯?Armbian?系統(tǒng),適配這臺設(shè)備的代碼來源,并對玩客云小設(shè)備進行刷機。為之后的折騰做一個前置準備

寫在前面

最近有幾個有趣的小想法想實踐一下,希望使用低功耗、低成本的硬件跑一些持續(xù)性的獨立的服務(wù)。最初的想法是入手一個樹莓派得了,開發(fā)板尺寸小巧,資源豐富。然而搜索價格的時候發(fā)現(xiàn)最新版的樹莓派,如果搭配上一些常用配件,加一個定制外殼,算下來成本幾乎能和我之前的 NUC 裸機價格一較高下。

那么,有沒有性價比更高的方案呢?

為什么選擇搭載 Amlogic S805 的玩客云

于是,目光就鎖定到了同為 ARM 架構(gòu)的廉價 SoC 上,前一陣群里有同學推薦過“玩客云”,搜索了一番,發(fā)現(xiàn)雖然芯片其實是幾年前的款,但是性能并不差,擁有一個千兆網(wǎng)口,并且機器自帶一個金屬外殼 。因為我不需要使用 GPIO 接口 ,所以相比較樹莓派而言,一套 50 元左右的小主機,性價比高非常多。

玩客云小設(shè)備的外觀

玩客云小設(shè)備的外觀

而且設(shè)備因為使用了廉價的 ARM 芯片,不光運行過程中的溫度不算高,日常功耗也非常低。

實際使用過程中的功耗也比較低

實際使用過程中的功耗也比較低

玩客云采用的芯片方案是 Amlogic S805,和著名的 Hard Kernel 幾年前推出過的開發(fā)板“ODROID-C1+”幾乎完全一致。這個板子性能基本是樹莓派3B的兩倍,前文中提到的玩客云的成本大概是目前二手樹莓派3的1/5~1/6。

S805 和樹莓派3之間的性能比較

S805 和樹莓派3之間的性能比較

如果追求絕對的性能,在價格差不多的情況下,可以考慮入手搭載 S905 芯片的“電視盒子”,性能和最新的樹莓派4相比也不落下風,甚至在一些環(huán)節(jié)中性能高出不少。不過缺點嘛也是有的,目前這類機器受限于成本問題,很少有利于散熱的金屬外殼;因為性能更高,發(fā)熱量也會更大。不過即便如此,綜合成本也只是樹莓派4的十幾分之一。

系統(tǒng)選擇及“源碼溯源“

相對于硬件而言,軟件系統(tǒng)也非常重要。

擁抱 Linux 讓我們的設(shè)備有了無窮的可能性,樹莓派有 Raspberry Pi OS(Raspbian),玩客云則因為搭載了和 Hard Kernel 之前產(chǎn)品一致的 Soc ,所以可以使用 ArmBian。

在正式介紹如何為玩客云更換系統(tǒng),以及編譯一份干凈的新版鏡像之前,我要介紹一下這個系統(tǒng)的由來,因為這里有太多前人的無私貢獻。

Armbian 官方代碼

Armbian 主要開源項目狀況

Armbian 主要開源項目狀況

2014年末,Armbian 立項,或許是暴風雨來臨之前的沉寂,在 GAP一年多之后的2016年,Armbian 開始了每年千萬行代碼變動的爆發(fā)式成長。截止目前為止,官方項目已經(jīng)支持了接近 150 個不同的硬件設(shè)備的適配。

來自戰(zhàn)斗民族的 Armbian TV 分支

https://github.com/150balbes/build

在2018年7月的時候,一名網(wǎng)名是150balbes的戰(zhàn)斗民族網(wǎng)友出手了,他開始為各種官方原本并不支持的硬件做適配,過程中吸引了來自全世界有相同硬件折騰需求的網(wǎng)友,他第一個適配的 SoC 就是我們本文的主角同源的 s90x 系列的芯片。

在2020年的光棍節(jié)前,他或許是覺得直接在官方原有的代碼文件上進行修改,每次上游代碼(Armbian)更新,他需要合并的內(nèi)容太多了,畢竟Armbian是一個每年千萬行代碼變更的項目,于是他刪除了原本開發(fā)了幾個月的代碼,在官方原有開發(fā)模式上新增了一個只有他自己使用的發(fā)布類型(dev),將之前的代碼遷移了過來。隨后他開始了專注于將 Armbian 適配到電視盒子上,并且將自己的分支命名為 armbian-tv,持續(xù)更新到了現(xiàn)在。

來自阿拉伯網(wǎng)友 moham96 的分支

https://github.com/moham96/Build-Armbian

阿拉伯網(wǎng)友 moham96 很快關(guān)注到了俄羅斯小伙子的項目,并立馬 fork 了一份,升級了項目使用的 Linux 內(nèi)核到 4.x 版本,并針對設(shè)備 Mac 地址設(shè)置方式進行了調(diào)整。

來自國內(nèi)網(wǎng)友 leo357449107 的分支

https://github.com/Leo357449107/Build-Armbian/tree/20.11

前文提到的 150balbes 在春天的時候進行了一次分支的重構(gòu),其實這次重構(gòu)非常“暴力”,原作者直接刪除了之前一直在維護的 Build-Armbian 項目,重新 fork 了一份新的 Armbian。

一般情況問題不大,但是如果有其他開發(fā)者正在基于他的代碼進行開發(fā)的話,就會遇到類似下面的狀況:

2021/01/23 leo357449107 我正在愉快地Dubug的時候,上游把代碼刪了,我也把代碼回滾了,然后,就沒有然后了。

估計也是沒辦法,網(wǎng)友 leo 只好在 GitHub 上尋找了一份原來項目的 fork 版本(上文中的 moham96 的分支),再次進行 fork,并提交了自己的代碼變更。

隨后網(wǎng)友 leo 的版本也就此停止了更新和維護(Armbian 20.12 Buster with Linux 5.9.0-rc7),不過在停更之前,他為玩客云使用的 Armbian 帶來了下面的內(nèi)容:

  • 添加了快速將系統(tǒng)刷入 eMMC 的功能,添加了一些方便使用的軟件源切換腳本。
  • 驗證了設(shè)備兩個 USB 端口其實都是正??捎玫模{(diào)整和關(guān)閉都可以根據(jù)修改啟動分區(qū)的 dtb (Device tree)來實現(xiàn)。
  • 使用了 meson8b-odroidc1t_noHDMI.dtb 替換了 meson8b-odroidc1t.dtb,讓硬件作為服務(wù)器用途使用的時候,可以更加省電。
  • 支持關(guān)閉默認的 USB 網(wǎng)卡支持,可以節(jié)約一些編譯時間。

來自國內(nèi)網(wǎng)友 witallwang 的分支

https://github.com/witallwang/Build-Armbian

今年4月9日,有一位網(wǎng)友在 leo 的基礎(chǔ)上繼續(xù)進行了一些實用的調(diào)整。

  • 將內(nèi)核版本升級到了 linux-5.10.y
  • 更新了構(gòu)建補丁,調(diào)整了啟動硬件使用的 dtb 文件。

可惜的是,因為上游的中斷,這個系統(tǒng)的版本也被停留在了Armbian 的老版本 (Armbian 20.12 Buster, Linux 5.10.28)。

品嘗最新版本的 Armbian

如果我們將上面的幾份代碼進行合并,是不是就可以讓玩客云的硬件繼續(xù)使新版本的 Armbian 系統(tǒng),以及或許更新的 Linux 內(nèi)核了呢?在萌生了這個想法之后,我將上面的代碼分別溯源和進行了一些整理合并。

整理“硬分叉”的代碼

將 150balbes 的老代碼以及最新代碼提交合并回 armbian,修正時間軸:

https://github.com/soulteary/armbian-build-s805/tree/codebase-merge-150balbes

將 leo 的代碼變更合并到已經(jīng)合并到 armbian 代碼中:

https://github.com/soulteary/armbian-build-s805/commits/codebase-merge-leo357449107

將 witallwang 的代碼變更合并到 armbian 代碼中:

https://github.com/soulteary/armbian-build-s805/commits/codebase-merge-witallwang

抽取 leo 和 witallwang 的代碼變更,合并到 150balbes 的最新代碼以及 armbian 最新代碼中:

https://github.com/soulteary/armbian-build-s805/commits/codebase-on-150balbes https://github.com/soulteary/armbian-build-s805/commits/codebase-on-offical

幾位作者的代碼變更時間軸可以參考下面的日志。

| * 82d18dbad (origin/codebase-on-150balbes, codebase-on-150balbes) s805 with kernel 5.10.x
|/  
| * b8a13a355 (origin/codebase-20211107) fix script
| * aa688d0f4 fix filename
| * 27860835d rm build flag
| * 68ec3eac6 (origin/codebase-merge-witallwang, codebase-merge-witallwang) merge part of https://github.com/witallwang/Build-Armbian/commit/1691d4516893363ae2aaa63a2b73a68e780fbff2
| * e15a48946 (origin/codebase-merge-leo357449107, codebase-merge-leo357449107) merge part of https://github.com/Leo357449107/Build-Armbian/commit/5770744a0004740e378b87b86645919ee33fb630
| *   e170397d9 (origin/codebase-merge-150balbes, codebase-merge-150balbes) Merge pull request #1 from 150balbes/armbian-tv
| |\  
| | * e7bdaef83 v20210814

編譯過程記錄

相信上文已經(jīng)交代清楚了玩客云 S805 Soc 使用的 Armbian 系統(tǒng)代碼的來源,所以在編譯的時候,你可以根據(jù)自己的需求進行選擇,以及二次開發(fā)。

編譯或者開發(fā) Armbian 系統(tǒng)鏡像的方法,其實非常簡單。(如果你希望了解完整的細節(jié),可以閱讀官方文檔。)下文將以合并到最新版本的 150balbes 的源碼為基礎(chǔ)進行敘述。

先將代碼 clone 到本地或者服務(wù)器。

git clone https://github.com/soulteary/armbian-build-s805.git --branch=codebase-on-150balbes

如果你不希望針對系統(tǒng)進行調(diào)整,不在意歷史提交記錄,并且想在國內(nèi)的機器構(gòu)建,也可以使用下面的方式加速下載源碼:

git clone https://github.com.cnpmjs.org/soulteary/armbian-build-s805.git --depth=1 --branch=codebase-on-150balbes

完整代碼差不多接近1個GB,所以下載的時候需要有一些耐心。

建議使用按量付費的海外云主機進行下載和構(gòu)建,可以節(jié)約不少時間。如果你的硬盤空間比較緊張,可以考慮在 Git Clone 完畢之后,刪除根目錄的 .git 目錄,完整源碼尺寸可以降低一半到 500MB 左右。

此外,折騰 Armbian 系統(tǒng)編譯,需要提前預(yù)留15G以上的磁盤空間,因為除了代碼之外,默認構(gòu)建選項下,編譯后的產(chǎn)物會占用 10G 以上的空間。

du -hs armbian-build-s805
13G	armbian-build-s805

開始構(gòu)建之前,如果你是在國內(nèi)的話,需要執(zhí)行下面的命令,將代碼中的一些依賴的下載方式切換為國內(nèi),避免因為網(wǎng)絡(luò)問題,導(dǎo)致系統(tǒng)無法構(gòu)建。

find . -type f -name "*.sh" | xargs -I {} sed -i 's/\/\/github.com\//\/\/github.com.cnpmjs.org\//' {}
find . -type f -name "*.conf" | xargs -I {} sed -i 's/\/\/github.com\//\/\/github.com.cnpmjs.org\//' {}
find . -type f -name "*.conf" | xargs -I {} sed -i 's/http:\/\/w1.fi\//git:\/\/w1.fi\//' {}

命令執(zhí)行完畢之后,可以繼續(xù)執(zhí)行下面的命令進行檢查,順利的話,將不會有任何輸出(因為都替換完畢了):

find . -type f -name "*.sh" | xargs -I {} cat {} | grep "http://github.com/"
find . -type f -name "*.conf" | xargs -I {} cat {} | grep "http://w1.fi/"

在構(gòu)建過程中,你可能會看到一個編譯錯誤:

fit_image.c:19:10: fatal error: libfdt.h: No such file or directory

這個錯誤的原因是 150balbes 的老版本代碼對于缺少一個開發(fā)依賴,這個問題作者在新版代碼中修正了,因為上文提到的歷史原因,這個問題被“繼承”了下來。不過因為這個問題的觸發(fā)場景是無線網(wǎng)卡開啟熱點,所以本身不具備無線能力的玩客云,其實可以忽略掉。當然,如果你需要使用無線網(wǎng)卡,那么可以對此進行一個簡單的依賴修復(fù):

apt install libfdt-dev

在上面的步驟就執(zhí)行完畢之后,便可以通過下面的命令進行構(gòu)建啦:

./compile.sh BOARD=設(shè)備名稱 BRANCH=配置類型 RELEASE=focal BUILD_MINIMAL=yes BUILD_DESKTOP=no KERNEL_ONLY=no KERNEL_CONFIGURE=no COMPRESS_OUTPUTIMAGE=sha,gpg,img DOWNLOAD_MIRROR=china MAINLINE_MIRROR=tuna EXTRAWIFI=no

這里的“設(shè)備名稱”,是我們在 config/boards 里存放的文件名稱,所以根據(jù)分支的不同,我們會使用到的名稱有:s805、s812、odroidc1。而“配置類型”則是 config/kernel 中,我們使用的 設(shè)備名稱-*.conf 的配置文件的具體類型,根據(jù)實際分支的不同,我們可以選擇使用的名稱有:leagcy、edge、current、dev。這里沒有好壞,根據(jù)自己的實際代碼情況來即可。

第一次執(zhí)行 complie.sh 會觸發(fā)安裝各種開發(fā)依賴,下載各種源碼包,耗時會比較長,一般會在十來分鐘左右。

正式進行系統(tǒng)鏡像構(gòu)建,根據(jù)硬件規(guī)格的不同,時間長度會有變化,以常見的 16核心的筆記或者服務(wù)器來說,實際測試的構(gòu)建時間都在五至十分鐘左右。

編譯過程火力全開的機器

編譯過程火力全開的機器

命令完全執(zhí)行完畢之后,在目錄中的 output/images 目錄中就能夠看到新鮮出爐的鏡像啦。

構(gòu)建不同代碼分支、版本、內(nèi)核的鏡像

按照上面的方法,很輕松的就能夠得到不同代碼基、不同 Linux 內(nèi)核、不同 Armbian 版本的系統(tǒng)鏡像。

比如:

  • Armbian_21.11.0-trunk_Aml-s805_focal_current_5.9.0_minimal.img
  • Armbian_21.11.0-trunk_Aml-s805_focal_current_5.10.0_minimal.img
  • Armbian_21.08.0-trunk_Aml-s812_focal_current_5.9.0-rc7_minimal.img
  • Armbian_20.12_Aml-s812_focal_current_5.9.0-rc7_minimal.img

如果你的軟件對于系統(tǒng)內(nèi)核有特別的需求,可以考慮使用 https://github.com/xdarklight/linux 這個倉庫中的內(nèi)核對 Armbian 官方內(nèi)核進行替換。不過因為系統(tǒng)依賴的緣故,可以直接升級到的最高版本是“meson-mx-integration-5.10-20201115”。

在系統(tǒng)鏡像構(gòu)建完畢之后,我們就可以進行刷機這個步驟了。

刷機前的準備

給這臺機器換系統(tǒng)的難度非常低,如果采用我們熟悉的“五星評價”的方式來描述難度的話,我覺得難度只有一顆星,其中大半顆還都在拆卸上面。

以往不少帖子會建議大家購置 USB 轉(zhuǎn) TTL 線,以及購買燒錄探針以及電烙鐵,但是隨著網(wǎng)友對于這臺設(shè)備的開發(fā),其實我們可以用更簡單的方式來為這臺設(shè)備更換系統(tǒng),而不需要購置這些裝備,以及進行焊接操作。

我的刷機模式采用了網(wǎng)友“尉遲申棠”的《無TTL線刷機》方案,整個操作流程大體分為四步,整個流程時間大概在十五分鐘~二十分鐘左右:

  • 拆機取出 S805 開發(fā)板
  • 短接并通過 S805 刷機工具刷入開放的 UBoot
  • 使用 U 盤自動刷入網(wǎng)友制作的啟動系統(tǒng)作為基礎(chǔ)
  • 借助上面的系統(tǒng)作為跳板,用覆蓋的方式刷入我們自己的系統(tǒng)

拆機過程細節(jié)記錄

設(shè)備拆機可以采用我下面這張圖片中的工具,把家用的剪指甲刀的受力臂拆下來,塞進玩客云背部 SD 卡上方的貼片縫隙中,然后用螺絲刀或者其他的工具,把這個貼滿了雙面膠的背板撬下來,扭下6顆螺絲之后,接下來就可以使用短接金屬線來進行刷機了。

拆機方法和過程一覽

拆機方法和過程一覽

群里的同學郵寄了一臺小設(shè)備,順帶一起拆啦,正好湊齊新版和老版兩種主板。

連帶群友的機器一起拆了

連帶群友的機器一起拆了

刷機過程細節(jié)記錄

刷機需要使用短接的方式,來迫使玩客云的主板進入 USB 引導(dǎo)模式。短接的工具可以考慮找一根買電子產(chǎn)品時的綁線,然后把金屬線漏出來即可。(上圖中圖一的線被媳婦稱呼為“通往天堂的鑰匙”)

需要注意的是,新舊版本不太一樣,v1.3版的新主板短接在前面,而老主板的短接位置在背后。(順手安裝完畢了,忘記拍圖了,不過網(wǎng)絡(luò)上圖很容易就能搜到,就不補啦)

刷機完畢,登陸系統(tǒng)后,順便看一眼 CPU 信息。

root@aml:~# lscpu
Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
Model:                 1
Model name:            ARMv7 Processor rev 1 (v7l)
BogoMIPS:              2.00
Flags:                 half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 vfpd32

常見問題:刷入引導(dǎo)失敗

此外,如果你采用 MacOS 上的虛擬機進行刷機,很有可能會失敗,因為設(shè)備在通過 USB 公對公數(shù)據(jù)線和 USB_Burning_Tool 刷機的過程中,可能會快速重啟切換模式,這時如果是使用虛擬機,會因為設(shè)備握手重連虛擬機時間過長,導(dǎo)致刷機失敗。提示 “Romcode/狀態(tài)切換/設(shè)備識別/命令結(jié)果返回錯誤”。

如果使用直接安裝的 Windows 系統(tǒng)進行 U-Boot 刷入,就不會出現(xiàn)這個問題了,這個設(shè)備重連導(dǎo)致失敗的情況,至多出現(xiàn)一次。

USB Burning 過程

USB Burning 過程

常見問題:為什么要刷兩次機

第一次是刷入引導(dǎo),第二次是為了避免折騰 TTL 短接,利用網(wǎng)友構(gòu)建的自動安裝鏡像,完成 eMMC (embedded MMC) 刷機,而這個系統(tǒng)的版本和內(nèi)核都比較舊,所以第三次才是真實的刷機,刷入我們自己的系統(tǒng)。

如果你愿意的話,也可以對比分析“eMMC刷機包”中的腳本,在構(gòu)建自己鏡像的時候做一些調(diào)整,減少一次刷機的過程。

常見問題:制作的二次刷機鏡像不起作用

玩客云在引導(dǎo)時,USB 接口存在不能正確掛載 U 盤的情況,所以如果你制作的系統(tǒng)鏡像沒有被正確的加載,可以斷掉電源重新拔插一遍 U 盤再試試引導(dǎo)。

另外,因為設(shè)備供電能力有限(本身低功耗),所以使用的 U 盤也盡量使用傳統(tǒng) U 盤,而不要使用固態(tài)硬盤魔改的 U 盤,可能帶不動。

參考資料

上文雖然已經(jīng)提到了許多來自網(wǎng)友的智慧結(jié)晶,但其實在整個過程中,還參考和學習了其他的網(wǎng)友的經(jīng)驗。

如果你希望更進一步,從 U-Boot 引導(dǎo)開始折騰,或者適配給其他的設(shè)備,或許這些資料對你也會有用處,所以我將它們按照話題進行了分類,并列舉在了下面。

如何構(gòu)建適用于玩客云的引導(dǎo)固件?

如何編譯構(gòu)建適用于玩客云的 ARM Linux 操作系統(tǒng)以及內(nèi)核?

如何為這臺小 ARM 設(shè)備構(gòu)建容器鏡像

玩客云網(wǎng)卡工作不正常?

其他資料

最后

文章至此,玩客云的 Armbian 折騰過程就結(jié)束了。后續(xù)的文章里,我將展開我想折騰的腦洞,用這臺50元成本的設(shè)備,做一些有趣的實驗:一臺能夠快速實現(xiàn)異地組網(wǎng)的設(shè)備,讓你和你的基友快速聯(lián)網(wǎng)打游戲;一臺能夠隨身攜帶的電子筆記服務(wù)器;一臺完善獨立的密碼記錄本;一臺低功耗的監(jiān)控探針。

到此這篇關(guān)于玩客云折騰記錄之編譯 ArmBian 系統(tǒng)的文章就介紹到這了,更多相關(guān)玩客云ArmBian 系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論