顯示廣告
隱藏 ✕
※ 本文為 lecheck 轉寄自 ptt.cc 更新時間: 2022-01-17 22:38:49
看板 Android
作者 ivon852 (內容農場殺手)
標題 [討論] 紅米Note 5原生跑docker
時間 Thu Dec 30 22:55:52 2021


因為kernel緣故,就算有Termux也無法直接執行docker,所以興起了自行改kernel重新編譯
的想法。
https://i.imgur.com/d7Fee9i.png
[圖]


網誌好讀版: https://reurl.cc/aklARX
以原生效能在手機上跑docker | Ivon's Blog
[圖]
[圖]
[圖]
Docker之所以不能直接在Android配合Termux跑,就是因為kernel(內核)缺乏相關功能,那麼只要自行編譯手機kernesl把缺少的功能打開就可以了。另外docker在Termux的repo也可以下載的到。 ...

 

刷kernel的小常識: Android刷kerenl不會刪除手機資料。不過為避免卡開機,最好用TWRP
先備份原廠的boot分區再操作。

手機: 紅米Note 5(whyred),已Root,系統為Lineage OS 18。

如果想試試,我把boot.img檔案放在Github上,LineageOS可直接刷:
https://reurl.cc/GokvZ3
GitHub - ivon852/android_kernel_xiaomi_whyred_docker: Docker Kernel for Xiaomi Whyred.
[圖]
Docker Kernel for Xiaomi Whyred. Contribute to ivon852/android_kernel_xiaomi_whyred_docker development by creating an account on GitHub. ...

 


一、檢查運作條件
手機開啟Termux,下載執行Moby的腳本
``
pkg install wget
wget https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh
chmod +x check-config.sh
sed -i '1s_.*_#!/data/data/com.termux/files/usr/bin/bash_' check-config.sh
sudo ./check-config.sh
``
看看目前手機的kernel缺少哪些功能,把紅字missing部分記錄下來。最主要是`General Ne
cessary`下的項目要全部開啟。
https://i.postimg.cc/jjtppyjd/screen.jpg
[圖]


二、尋找kernel & 測試編譯
我的思路是這樣: 找一個穩定的第三方kernel專案,確認能順利在自己電腦編譯,刷到手機
也正常,再以此為基礎進行進入深入修改。

完整編譯&刷內核步驟:
https://bit.ly/3yWRh7Y
如何編譯修改Android Kernel(內核) | Ivon's Blog
[圖]
[圖]
本文簡述如何自行修改Android kernel,開啟特定的功能,再重新編譯檔案,將其刷入手機。先從簡單的開始: 刷入自己修改過的kernel後,會在手機核心版本顯示自己的名字。 如果成功了,那麼就能更進一步去調kernel的功能,例如把docker要求的功能全部打開,就能在Android手機跑do ...

 


三、修改kernel
1. 在用機型defconfig建立.config之後,使用make menuconfig開啟kconfig介面,按照剛
剛手機顯示missing的項目,將其一一開啟。
https://i.postimg.cc/1RkwGvTV/screen4.jpg
[圖]

2. 例如我要開啟CONFIG_OVERLAY_FS這個選項,就在menuconfig的介面按下「/」
https://i.postimg.cc/2yZjjFFP/scree2n.jpg
[圖]

3. 輸入名稱搜尋,menuconfig會告訴你設定值的大約位置。
https://i.postimg.cc/c1gftpDN/screen3.jpg
[圖]

4. 鍵盤上下鍵找到該選項,按下y啟用。

5 用鍵盤左右鍵,移動到Save,儲存設定值。移動到Exit按下Enter離開。

6.根據FreddieOliveira的說明,還要修改kernel專案目錄下的二個檔案: kernel/Makefil
e和net/netfilter/xt_qtaguid.c。

7. 重新編譯一次kernel。
``
make
``

8. 用AIK重新打包檔案,用TWRP刷到手機。

開機後會顯示「你的裝置發生內部問題」,屬於正常現象。

這支紅米Note 5開機後還要再使用以下指令才能正常掛載cgroup:
``
sudo mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
``


四、手機安裝docker

1. 用Moby的腳本再次確認kernel相容性都是綠色的之後,透過Termux的root repo下載dock
er。
``
pkg install root-repo && pkg install docker
``

2. Termux左邊滑出來可以開第二個終端機。先啟動docker daemon。
``
sudo dockerd --iptables=false
``

3. 另一個終端機啟動docker容器,例如Hello World:
``
sudo docker run hello-world
``

4. 測試Apache伺服器:
``
sudo docker run -d -p 80:80 --name myapache --net=host --dns=8.8.8.8 httpd
``

這樣docker算是正常執行了,一些關於網路的詳細設定請到【以下參考資料】查詢。
https://gist.github.com/FreddieOliveira/efe850df7ff3951cb62d74bd770dce27


有Termux ,Android沒什麼不可能的,現在docker不用虛擬機就可以近原生的效能執行了。

--
https://i.imgur.com/qBnCgUO.jpg
https://i.imgur.com/klpjZcQ.jpg
https://i.imgur.com/yLTmoHs.jpg
https://i.imgur.com/WepO17T.jpg

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.252.108 (臺灣)
※ 文章代碼(AID): #1XpSX_n5 (Android)
※ 文章網址: https://www.ptt.cc/bbs/Android/M.1640876159.A.C45.html
※ 編輯: ivon852 (111.255.252.108 臺灣), 12/30/2021 22:58:52
※ 編輯: ivon852 (111.255.252.108 臺灣), 12/30/2021 22:59:20
A4P8T6X9: 請問這樣效能堪用嗎?比方說跑 jekyll1F 12/30 23:24
應該可以,效能就取決於手機處理器本身
※ 編輯: ivon852 (42.74.4.124 臺灣), 12/31/2021 17:21:22
rsps1008: 手機裝apache2感覺很帥…2F 01/06 09:06
lecheck: 謝謝3F 01/17 22:37

--
※ 看板: whatla 文章推薦值: 0 目前人氣: 0 累積人氣: 15 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇