受自己的文章 在 Android 裝置上建立 NextCloud伺服器 啟發,希望可以在 Android 做到更多操作
因此繼續了解 Termux 運行 Linux 的可行性
因此繼續了解 Termux 運行 Linux 的可行性
雖然 Android 的核心修改自 Linux ,但實際不是 Linux 的核心
因此經 PRoot 運作的 Linux 檔案系統,仍然無法執行涉及 Linux 核心的功能
要完全讓真正的 Linux 能在 Android 中運作,必須提要建立虛擬環境
讓 Linux 能夠在虛擬環境中運作,來迴避 Linux 核心問題
因此經 PRoot 運作的 Linux 檔案系統,仍然無法執行涉及 Linux 核心的功能
要完全讓真正的 Linux 能在 Android 中運作,必須提要建立虛擬環境
讓 Linux 能夠在虛擬環境中運作,來迴避 Linux 核心問題
更新 Termux
開啟 Termux ,輸入
更新套件
pkg update
更新套件
輪入 y 確定升級套件
部分套件升級後會建議更新件來源,可以輸入 y 確定
安裝 QEmu 及下載 QCOW2映像檔
輸入
安裝 wget, openssh, 支援模擬 amd64 架構的 QEmu
pkg install wget openssh qemu-system-x86-64-headless
安裝 wget, openssh, 支援模擬 amd64 架構的 QEmu
輪入 y 確定安裝套件
輸入
下載 最新版本 AMD64 架構的 Debian SID 的 QCOW2映像檔
wget "https://cdimage.debian.org/cdimage/cloud/sid/daily/latest/debian-sid-nocloud-amd64-daily.qcow2"
下載 最新版本 AMD64 架構的 Debian SID 的 QCOW2映像檔
起動 QCOW2映像檔
輸入
預設使用 VNC 連接,正常情況下會使用 127.0.0.1:5900
qemu-system-x86_64 -hda "debian-sid-nocloud-amd64-daily.qcow2" -m 2G
- -hda 載入 raw 或 qcow2 的映像檔
- -m 為設定記憶體數量,沒有單位時為 M ,支援 G, T, P 後綴
預設使用 VNC 連接,正常情況下會使用 127.0.0.1:5900
使用 VNC 連接
雖然能夠使用網絡連接,但 QEmu 預設 使用 網路位址轉換 (Network Address Translation (NAT)) 作為網絡連接方式
所以虛擬系統的 IP 只有 宿主系統 (Host System) 能夠存取,因此必須使用 宿主系統 連接到 QEmu 的 VNC伺服器
所以虛擬系統的 IP 只有 宿主系統 (Host System) 能夠存取,因此必須使用 宿主系統 連接到 QEmu 的 VNC伺服器
在下使用 RealVNC ,但並沒有指明使用哪種 VNC用戶端
最重要能夠 使用鍵盤傳送文字 給 訪客系統 (Guest System)
最重要能夠 使用鍵盤傳送文字 給 訪客系統 (Guest System)
在 New Connection
在 Address 輸入 127.0.0.1:5900
Name 可以不輸入資料 (但可以方便管理連接的伺服器)
在 Address 輸入 127.0.0.1:5900
Name 可以不輸入資料 (但可以方便管理連接的伺服器)
在設定頁面
在下建議將 Picture Quality 更改為 Low 降低連接的資源要求
Update desktop preview 更改為 No
在下建議將 Picture Quality 更改為 Low 降低連接的資源要求
Update desktop preview 更改為 No
載入到 宿主系統
連接到 VNC伺服器
與正式安裝的起動畫面相同
(可能機能限制,在下的 Android裝置 起動時間大約7分鐘)
與正式安裝的起動畫面相同
(可能機能限制,在下的 Android裝置 起動時間大約7分鐘)
由 Debian 官方下載的 NoCloud QCOW2 映像檔其 root 帳戶沒有設置密碼
一些功能必須帳戶有設置密碼才能運作,先設定密碼,輸入
輸入兩次新密碼
一些功能必須帳戶有設置密碼才能運作,先設定密碼,輸入
passwd
輸入兩次新密碼
起動 SSH服務
由於使用 VNC 傳送文字比較轉接
在下建議啟動 SSH服務 方便往後的操作,輸入
但 SSH服務 無法啟動,在下輸入
出現 (code=exited, status=1/FAILURE)
及輸入
出現 no hostkeys available -- exiting.
的錯誤
在下建議啟動 SSH服務 方便往後的操作,輸入
service sshd restart
但 SSH服務 無法啟動,在下輸入
service sshd status
出現 (code=exited, status=1/FAILURE)
及輸入
sshd -t
出現 no hostkeys available -- exiting.
的錯誤
修改 SSH 錯誤
由於 SSH服務 找不到公鑰及私鑰,因此無法啟動
替 SSH服務 建立公鑰及私鑰,輸入
沒有出錯,輸入
顯示 SSH服務 正在運作
ssh-keygen -A
替 SSH服務 建立公鑰及私鑰,輸入
service sshd restart
沒有出錯,輸入
service sshd status
顯示 SSH服務 正在運作
輸入
由於 QEmu 使用 NAT ,顯示 IP地址 為 10.0.2.15
亦即是 訪客系統 是無法直接與 宿主系統 外的裝置共享網絡資源
輸入
關閉 訪客系統
ip a
由於 QEmu 使用 NAT ,顯示 IP地址 為 10.0.2.15
亦即是 訪客系統 是無法直接與 宿主系統 外的裝置共享網絡資源
輸入
poweroff
關閉 訪客系統
連接埠轉發
要 訪客系統 讓 宿主系統 外的裝置共享網絡資源
需要設定 連接埠轉發 (Port Forward) ,將連接到 宿主系統 的網絡訊號轉發到 訪客系統
輸入
當 宿主系統 接收到 TCP協定 來自 64022連接埠 的網絡資料,會轉發到 訪客系統 的 22連接埠
需要設定 連接埠轉發 (Port Forward) ,將連接到 宿主系統 的網絡訊號轉發到 訪客系統
輸入
qemu-system-x86_64 -hda "debian-sid-nocloud-amd64-daily.qcow2" -m 2G -netdev user,id=nic0,hostfwd=tcp::64022-:22 -device virtio-net-pci,netdev=nic0 &
- -netdev 設定 網絡裝置參數
- user 設定為 訪客系統 使用 NAT 連接到網絡
- id=nic0 設定 網絡裝置的 ID ,不一定使用 nic0 ,只是方便分辨用途
- hostfwd 參數為
- [tcp|udp] 選填,選擇 tcp 或 udp 其中一項,不填寫為 tcp 及 udp 同時選擇
- [host-ip] 選填,宿主系統 IP地址,宿主系統 預設 IP地址
- <host-port> 必填,宿主系統 的 連接埠
- [guest-ip] 選填,訪客系統 IP地址,訪客系統 預設 IP地址
- <guest-port> 必填,訪客系統 的 連接埠
- -device 設定 裝置參數
- virtio-net-pci 設定 虛擬網絡卡
- netdev=nic0 指定 網絡裝置 ,與 -netdev 的 id 相同
當 宿主系統 接收到 TCP協定 來自 64022連接埠 的網絡資料,會轉發到 訪客系統 的 22連接埠
最後的 & 符號,讓指令在背景執行
輸入
顯示嘗試連接 SSH伺服器 但出現 Permission denied (publickey). 錯誤
ssh root@127.0.0.1 -p 64022
顯示嘗試連接 SSH伺服器 但出現 Permission denied (publickey). 錯誤
修改 SSH 設定檔
重次使用 VNC 登入 伺服器,輸入
編輯 /etc/ssh/sshd_config
(Debian 預裝 nano 編輯器)
nano "/etc/ssh/sshd_config"
編輯 /etc/ssh/sshd_config
(Debian 預裝 nano 編輯器)
修改設計
- PermitRootLogin 修改為 yes
- PublicAuthentication 修改為 yes
- PasswordAuthentication 修改為 yes
使用 SSH 登入
回 Termux 輸入
終於可以經 SSH 登入 訪客系統
ssh root@127.0.0.1 -p 64022
終於可以經 SSH 登入 訪客系統
能夠使用 SSH 登入後,操作便可以更方便
除了 Android裝置 不需要經常切換 Termux 及 VNC ,還可以讓其他裝置連接
除了 Android裝置 不需要經常切換 Termux 及 VNC ,還可以讓其他裝置連接
多重連接埠轉發
安裝 Apache網頁伺服器
安裝完成後,關閉 訪客系統
回到 宿主系統
要增加 連接埠轉發 ,只需要在 -netdev 增加 hostfwd 項目即可
例如在下需要將 宿主系統 64022連接埠 轉發到 訪客系統 22連接埠 及 宿主系統 64080連接埠 轉發到 訪客系統 80連接埠,參數為
要增加 連接埠轉發 ,只需要在 -netdev 增加 hostfwd 項目即可
例如在下需要將 宿主系統 64022連接埠 轉發到 訪客系統 22連接埠 及 宿主系統 64080連接埠 轉發到 訪客系統 80連接埠,參數為
,hostfwd=tcp::64022-:22,hostfwd=tcp::64080-:80
再次起動 訪客系統 及啟動 Apache伺服器
可以經網頁瀏覽器觀存取
增加 QCOW2 容量
在 訪客系統 輸入
會發現掛在 根目錄 (/) 的 /dev/sda1 分區 的 只有 2 GB
雖然只是測試用途,但 2 GB 仍然太少,要增加容量才有更多空間測試
df -H
會發現掛在 根目錄 (/) 的 /dev/sda1 分區 的 只有 2 GB
雖然只是測試用途,但 2 GB 仍然太少,要增加容量才有更多空間測試
關閉 訪客系統
有時即使關閉 訪客系統 ,程式仍然在背景執行,輸入
確認 QEmu 是否仍在執行,如果未能關閉,輸入
關閉程式
有時即使關閉 訪客系統 ,程式仍然在背景執行,輸入
ps aux | grep "qemu"
確認 QEmu 是否仍在執行,如果未能關閉,輸入
kill <QEmu ID>
關閉程式
輸入
安裝 QEmu 支援程式
pkg install qemu-utils
安裝 QEmu 支援程式
輸入
同樣的 virtual size 同樣顯示只有 2 GiB
qemu-img info "debian-sid-nocloud-amd64-daily.qcow2"
同樣的 virtual size 同樣顯示只有 2 GiB
輸入
顯示 Image resized.
再輸入
virtual size 顯示 32 GiB.
qemu-img resize "debian-sid-nocloud-amd64-daily.qcow2" 32G
顯示 Image resized.
再輸入
qemu-img info "debian-sid-nocloud-amd64-daily.qcow2"
virtual size 顯示 32 GiB.
載入到訪客系統,輸入
顯示 /dev/sda1 為 34GB
dh -H
顯示 /dev/sda1 為 34GB
補充資料
最初在下使用
但安裝時間接近 3小時 才完成,而且安裝後的體積大約 1.6 GB ,非常沒有效率
其後發現 Debian 提供很多不同種類 QCOW2映像檔 而且體積大約只有 300 MB 至 500 MB
不足 1 GB 體積卻有齊全的基本功能,而且最新版發佈版本預載 最新核心 及 SSH伺服器
qemu-img create -f qcow2 "my-debian.qcow2" 32G
- qemu-img create 是建立 虛擬硬碟 指令
- -f qcow2 建立 QCOW2 虛擬碟碟,亦可以使用 -f raw 建立 RAW 虛擬碟碟
- QCOW2 佔用空間較少,速度較慢
- RAW 佔用空間較多,速度較快
- "my-debian.qcow2" 是 虛擬硬碟 的檔案名
- 32G 是 虛擬硬碟 的容量
qemu-system-x86_64 -hda "my-debian.qcow2" -m 4G -cdrom "debian-amd64.iso" -boot d
- -cdrom 載入光碟檔案
- -boot 變更起動方法
- c 為 硬碟
- d 為 光碟
- n 為 網絡
但安裝時間接近 3小時 才完成,而且安裝後的體積大約 1.6 GB ,非常沒有效率
其後發現 Debian 提供很多不同種類 QCOW2映像檔 而且體積大約只有 300 MB 至 500 MB
不足 1 GB 體積卻有齊全的基本功能,而且最新版發佈版本預載 最新核心 及 SSH伺服器
總結
由於在下想測試最新的 Debian ,因此使用 SID 開發分支
而且 SID 分支不需要區分 Debian 版本,下載的連結固定,所以下載 Debian SID Generic 版本
但 Generic 版本需要使用 virt-customize 重設 root 帳戶的密碼才能使用
由於 Termux 卻無法安裝屬於核心功能的 libguestfs-tools ,因此每次下載都要使用電腦重設 root 帳戶
而且不知為何沒有網絡功能,非常麻煩
而且 SID 分支不需要區分 Debian 版本,下載的連結固定,所以下載 Debian SID Generic 版本
但 Generic 版本需要使用 virt-customize 重設 root 帳戶的密碼才能使用
由於 Termux 卻無法安裝屬於核心功能的 libguestfs-tools ,因此每次下載都要使用電腦重設 root 帳戶
而且不知為何沒有網絡功能,非常麻煩
在下改用 Debian 11 Generic (當前穩定版) 及 Debian 12 Generic (當前測試版)
所有基本功能正常無誤,但仍然需要使用 virt-customize 重設 root 帳戶,仍然不方便
仔細閱讀 Debian 下載各種 QCOW2映像檔 的首頁,才發現除了還細分
所有基本功能正常無誤,但仍然需要使用 virt-customize 重設 root 帳戶,仍然不方便
仔細閱讀 Debian 下載各種 QCOW2映像檔 的首頁,才發現除了還細分
- Azure 針對 Microsoft Azure 的改造版本
- EC2 針對 Amazon EC2 的改造版本
- Generic 適合 Cloud-Init 的改造版本,例如:OpenStack, DigitalOcean
- GenericCloud 適合任何虛擬環境的版本
- NoCloud 適合測試用途的版本,沒有預裝 Cloud-Init ,而且允許 root 在沒有密碼下登入
另外在下使用 qemu-system-i386 能夠將 Windows XP 安裝及在 Termux 中起動
還安裝一些遊戲在 Windows XP 運作,都能正常執行,但不要期望運作速度會與電腦效能相同
使用觸控操作傳統桌面環境並不方便,需要外接鍵盤及滑鼠才能有類似電腦的操作體驗
還安裝一些遊戲在 Windows XP 運作,都能正常執行,但不要期望運作速度會與電腦效能相同
使用觸控操作傳統桌面環境並不方便,需要外接鍵盤及滑鼠才能有類似電腦的操作體驗
沒有留言 :
張貼留言