声明
手机需要有第三方Recovery(如TWRP)!!!
本文含有大量个人观点,为实践个人总结,不保证正确性,对应相关操作的理解可能也有失偏颇,如有错误,还望大家及时指出
疫情在家,一直没啥事可以做,整理柜子的时候发现有一台吃灰的树莓派,于是想借他消磨一下时间。没带电脑回家,小区也封了,出不去了,有没有可能用手机给树莓派装上系统呢?
教程
Step1 材料准备
已经刷好twrp的手机一台,sd卡一张
如果手机不支持sd卡,还需准备一个读卡器,一个otg转接口
step2 资料下载
下载你想要刷入的系统,如果是img格式,直接用就行了,如果不是img格式,用压缩包形式打开它,把里面img格式的文件捞出备用解压出来
本文假设该文件文件名为sys.img
然后记住改文件的路径
本文假设路径为 /sdcard/Download/sys.img
step3 打开终端,检查分区情况
手机重启进入Twrp,进入“高级->终端”
输入指令检查分区情况
df -h
结果如下(例)
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 64G 32G 32G 50 /sdcard
这时插入sd卡,再输入指令检查分区情况
df -h
结果如下(例)
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 64G 32G 32G 50 /sdcard
/dev/sdg1 32G 1kb 32G 0 /sdcard1
发现多了一行,这一行就是我们的sd卡,记住他的文件系统(fileSystem)
本文例子中,sd卡所在文件系统为“/dev/sdg1”
Step4 刷入系统
接着我们开始刷入系统
dd bs=1024000 if=/sdcard/Download/sys.img of=/dev/sdg
注意① 这里会等较长时间,看起来像卡主一样,请耐心等待
注意② if=系统镜像的路径
注意③ **of后面不是sd卡所在文件系统!!这里尤其要注意,本文例子中,sd卡所在文件系统为/dev/sdg1,但是of后面是/dev/sdg,没有1,如果你是“/dev/sdh114514”,那么of后面就要是“/dev/sdh”,没有数字!
命令执行结果出来后,就说明刷入成功了
这时拔出sd卡,再重新插入,twrp首页有一个“挂载”,进入之后重新挂载一下sd卡,再进入twrp的文件管理,进入sd卡就能看见你刷进去的文件(boot分区)。
Step5 配置ssh和网络(以树莓派官方系统举例,不同系统方法不同)
进入twrp文件管理,在sd卡所在目录的根目录创建一个叫做“ssh”的文件,这样就开启了ssh
进入twrp文件管理,在sd卡所在目录的根目录新建一个叫做“wpa_supplicant.conf”的文件,编辑他
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="Wifi名"
psk="密码"
key_mgmt=WPA-PSK
priority=1
}
修改完保存,取出sd卡,插上树莓派通电,就基本OK了
Step6 ssh连接树莓派
树莓派通电后,可以登陆路由器后台看到树莓派的IP
如果你不能进入路由器后台,或者你正在使用热点给树莓派提供网络,可以用termux加nmap的方法扫描局域网ip。
找到树莓派Ip后,使用ssh连接工具连接即可
树莓派默认账号
用户名:pi
密码:raspberry
常见问题
AndRoid Shell中dd命令的bs参数不支持单位
bs=1024000 #默认单位为b,1024000就是1M
bs=1M #在Android shell中并不支持这种写法
Termux可以用dd命令,为什么非要用TWRP的终端
我不知道,理论上termux是可以的,但是我的termux不能正确识别出sd卡所在分区,TWRP可以。后来我在网上查到了相关的教程,虽然不是termux,但也是用别的shell软件,应该是可行的(需要root来装busybox)
待补充
探索历程
起初,
我想通过termux,运行linux版的烧录工具,我在网上搜索了一下,确实有,但是是x86和x64平台的软件,而手机是arm64的(有些手机是armhf的,x86和x64的手机基本没有)
然后我想到模拟x86的运行环境,来运行烧录软件,结果是,软件运行起来了,但是sd卡没法带到模拟环境中去,软件识别不出sd卡,这个方案基本就作废了。
Plan B,
我去QQ群里问了一下,一个群友给出了他的思路,使用安卓版的wine来运行Windows版的烧录软件,我觉得应该可行,去wine官网下载了最新版的Wine For Android。Emmm....结果嘛,不支持我的安卓版本,这个方法我也就没试。
然后,
我基本要放弃了,感觉看不到什么希望(也因为这个操作在网上找不到任何相关的教程,没有人造轮子),就去水群了(bushi。结果群大佬一句话点醒梦中人。Android Shell是有dd命令的,对哦,dd命令可以用来烧录系统啊。(但是我没深入接触过这个命令,便在网上开始学习)
最后,
翻阅了很多资料,最后也是掌握了dd命令的用法,开始实践。
基本就是格式化sd卡所在分区,然后用下面命令烧录系统
dd bs=1024000 if=镜像路径 of=sd卡分区路径
中间遇到了一些小问题,我会在常见问题中指出
标签:树莓,img,dd,烧录,dev,手机,sd From: https://www.cnblogs.com/orzmiku/p/17644124.html