安卓手機用qemu運行openwrt
網(wǎng)上關于qemu運行openwrt的教程很多,但是在安卓手機上qemu運行openwrt一直找不到,為此我進行了長時間的探索學習,終于有了一些成果。
拿出我的吃灰手機?
紅米note4x? 3+32? ?安卓11?
查詢得知?
高通驍龍625?8x ARM Cortex A53, Octa-core CPU,單核頻率最高可達2.0GHz,14nm FinFET制程,GPU? Adreno 506? ?支持Cat.7 LTE網(wǎng)絡? arm64位 也就是aarch64架構
授人與魚,不如授人與漁,所以下面命令我都會有解釋。很多時候大家可以玩出不一樣的玩法
我弄懂這些都花了好幾周,零零碎碎資料整合起來了
準備
本次用到的工具是termux? 安卓7?(API 24) 及以上版本,舊版本系統(tǒng)使用本鏡像可能導致程序錯誤。
替換國內清華源參考 https://mirrors.tuna.tsinghua.edu.cn/help/termux/
全程在手機上復制粘貼也可以的,全程只有手機復制粘貼的可以跳過看下面的正戲開始。
但是為了方便,我們可以給手機安裝ssh然后在電腦上操作
更改密碼(或者說設定初始密碼)termux輸入
passwd
會顯示這樣(設置密碼的時候,輸入不顯示的):
New password:
Retype new password:
New password was successfully set.
安裝openssh
當然,喜歡在手機上慢慢敲命令的可以不裝
執(zhí)行sshd就是打開ssh服務,就可以連接ssh了
可以再輸入一條
? 這樣每打開終端會自動運行一次sshd
需要注意的是,我們平常開啟的ssh服務端口是22,但是Termux開啟的ssh服務端口是在8022
接著我們執(zhí)行 ifconfig 查看自己的ip地址(若是需要連接電腦和手機需要在同一個的WiFi下)
這個每個人可能不同的,需要自己看上面顯示換ip,比如我是192.168.42.129,你要把它換成你顯示的手機ip
而我是拿它供網(wǎng)的,usb共享給路由器,也可以熱點,然后電腦連上。最好是手機連路由器wifi,然后電腦連路由器,在同局域網(wǎng)就行,搞好以后甚至可以做給電腦做旁路由
這個時候換到電腦的終端輸入了,我的電腦系統(tǒng)win10,自帶ssh。在cmd或者powershell窗口上執(zhí)行
手動輸入yes回車,輸入密碼回車連上了
當然,后面方便用xshell了,保存一次以后雙擊連接。
正戲開始
帶“#”開頭的整行都是注釋用的話,可以不復制到終端運行
命令可選參數(shù)說明:
????????????????-M 是模擬的機器,可以執(zhí)行qemu-system-aarch64 -M help查看列表,可以看到有樹莓派的,所以也可以直接用樹莓派的固件
? ? ? ? ? ? ? ? -m 是分配內存大小 我這里分配1024mb
? ? ? ? ? ? ? ? -kernel是指定內核
? ? ? ? ? ? ? ? -append cmdline 設置Linux內核命令行和啟動參數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ?我這里”root=fe00“指定根的塊設備是fe00,如果你沒有指定這個,內核將列出可用的塊設備并重新啟動,之后你們自己的固件可以取消這個”root=fe00“看可用塊設備列表,再修改填上。我之前在這徘徊了很久啊。
? ? ? ? ? ? ? ? -hda是指定硬盤鏡像
? ? ? ? ? ? ? ??--no-reboot 就是字面意思,里面客戶系統(tǒng)如果重啟就會直接退出qemu,重啟相當于關機退出qemu。可以不要這條,這樣客戶系統(tǒng)可以進行重啟的操作
? ? ? ? ? ? ? ? -nographic?關閉qemu的圖形化界面輸出。也可以去掉,然后加上--vnc :1? ?以vnc為圖像模式輸出到”顯示器”,并占用vnc 1端口,vnc訪問手機ip:5901顯示進入圖像界面。-nographic與--vnc不同的是執(zhí)行運行后不會立即有回顯。
? ? ? ? ? ? ? ? ? ?-cpu cortex-a53 模擬cortex-a53類型的處理器,因為前面查詢我的驍龍625是cortex-a53類型處理器,模擬這個性能損失較小。可以輸入qemu-system-aarch64 -cpu help查看可模擬列表
? ? ? ? ? ? ? ? -smp 核數(shù),給cpu分配核數(shù)
? ? ? ? ? ? ? ??-net nic??就是快速配置網(wǎng)卡。后面net user,id=wan,hostfwd=tcp::7080-:80,hostfwd=tcp::7022-:22配置網(wǎng)卡網(wǎng)絡模式為用戶模式(nat模式,使用主機網(wǎng)絡nat聯(lián)網(wǎng)),分配id標識為wan,hostfwd是端口重定向參數(shù),可以加逗號多個使用,很清晰可以自己根據(jù)需要增加和刪改,這里我把主機7080端口重定向到客戶系統(tǒng)的80端口,把主機7022端口重定向到客戶系統(tǒng)的22端口。這兩個端口分別是web網(wǎng)頁管理地址端口、ssh端口。還有具體設置網(wǎng)卡可以百度搜索qemu網(wǎng)絡模式。
執(zhí)行后耐心等待跑碼,看下面圖
出現(xiàn)第一個框就可以按回車輸命令了,但是不急,等第二個
出現(xiàn)br-lan: port 1(eth0) entered forwarding state就是啟動好了(改過下面以后,第二次運行是出現(xiàn)8021q: adding VLAN 0 to HW filter on device eth0)

因為第一個網(wǎng)卡默認是分配給lan的,所以我們要改一下,分給wan(這個鏡像改過一次,下次再啟動就不用改了)
輸入
按鍵盤i就可以編輯進行增刪了,把config interface 'wan' 那整部分改成以下這樣
編輯好了,按鍵盤ESC,然后按住shift再按一下鍵盤上的;就可以輸入wq回車后保存退出(就是按esc退出后,按出冒號,wq命令保存退出)
重啟網(wǎng)絡服務
執(zhí)行ifconfig看看
eth0? ? ? Link encap:Ethernet? HWaddr 52:54:00:12:34:56
? ? ? ? ? inet addr:10.0.2.15
獲得了一個nat地址
現(xiàn)在ping一下外網(wǎng)
只要手機能聯(lián)網(wǎng),它就能聯(lián)網(wǎng)!

因為我手機用的是4g數(shù)據(jù),地方信號不好,延遲有點大哈別介意
開放wan的80端口
前面執(zhí)行命令的時候,我們已經(jīng)弄好手機7080端口重定向客戶機的80端口了,所以我們在瀏覽器訪問手機ip加7080端口,就可以進入openwrt的管理頁面啦!

連上openwrt的ssh,前面執(zhí)行命令的時候,我們已經(jīng)弄好手機7022端口重定向客戶機的22端口了,只要在openwrt開放22端口,就可以手機ip加7022連上了
你可以根據(jù)需要設置好重定向端口和開放端口,例子很明白了
現(xiàn)在,進行模擬x86架構的教程
X86方便一些,不需要指定內核,使用帶combined字樣的鏡像就行了,內核打包在里面的
解壓
運行
同樣,改一下eth0,分給wan
輸入
按鍵盤i就可以編輯進行增刪了,把config interface 'wan' 那整部分改成以下這樣
編輯好了,按鍵盤ESC,然后按住shift再按一下鍵盤上的;就可以輸入wq回車后保存退出(就是按esc退出后,按出冒號,wq命令保存退出)
重啟網(wǎng)絡服務
就可以聯(lián)網(wǎng)了。然后開放端口
瀏覽器訪問手機ip:7080進行設置
跑分
兩個都修改成2核1G內存
替換軟件源為清華源,更快下載
opkg update
opkg install openssl-util
開始測試
測試完成,測試結果保存在/tmp下的sslspeed文件。
aarch64? 2核1G內存
??
?X86? 2核1G內存