• 主页
  • 归档
  • 软件
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 软件

简单写一个shell刷机脚本之进阶篇

2023-04-29

上一篇文章我们简单写了一个shell刷机脚本,这期我们要在上一期文章的基础上添加更多的操作

目标

  • 创建两个选择,一个是刷入magisk-boot镜像,另一个是还原官方镜像
  • 实现在开机状态下自动进入fastboot模式,在fastboot模式下自动执行指令
  • 如果没解锁fastboot将提示无法刷写
    注:为了方便,将会用fastboot取代/usr/lib/android-sdk/platform-tools/fastboot

使用的命令

命令太多就暂时不写了

实操

首先要确保magisk镜像叫magisk-boot.img,官方boot镜像叫offical-boot.img
首先输入

1
echo 这是一个简单的刷机脚本

为了美观可以在前面输入clear或者reset来清理屏幕
Tips:reset不是重启系统的命令,reboot才是,而且reboot命令需要root权限
然后输入

1
PS3='选择一项: '

这里设置PS3变量。 这是select语句在从我们的多选菜单中进行选择时使用的提示。
接下来创建预定选项列表。

1
options=("刷入magisk boot" "还原官方boot" "退出")

接下来,我们开始创建菜单的选择构造。 在这一行中,我们告诉select选择从options数组创建菜单。 我们还将在$menu变量中设置用户选择。 select语句的语法类似于for循环,这就是为什么您在末尾看到do语句的原因。

1
select menu in "${options[@]}"; do

使用case语句创建更多可靠的选项
case语句使您可以有选择地执行与第一个匹配模式相对应的命令。 例如,如果我们从多项选择菜单中选择第一项,它将执行与该单词相对应的命令列表。

在case语句中,我们有开头节。 这告诉案例搜索与$menu变量的值匹配的选项。

1
case $menu in

然后这里添加选项一的子句。

1
2
3
"刷入magisk boot")
echo #这里的命令一会再回过头来修改
;;

这里的命令一会再回过头来修改,
执行完毕后,如果想直接退出脚本,可以在后面敲一行回车后输入

1
break

然后如法炮制地添加第二三条选项即可。
tips:第三项是退出选项,只需要将echo和后面的换成exit 0即可。

如果输入了除了1,2,3以外的数字或字母将可能会导致脚本运行错误,这时候需要输入

1
*) echo "未知选项 $REPLY";;

来告诉这是无效的输入
在所有子句之后,我们以esac结束case语句,而esac是反写的的。 这类似于以fi结束if语句。输入

1
esac

最后一行关闭用do打开的select语句。输入

1
done

到这时候,一个基本的选择页面就完成了。接下来我们回过头来修改之前选项里的内容
上期图文的脚本中我们只写了一个fastboot flash boot.img来刷写boot,虽然但是,改需要手动从开机页面重启到fastboot模式,很不方便。
于是可以使用if语句判断手机是否进入fastboot模式

1
2
3
4
5
6
7
if fastboot devices
then
adb reboot bootloader
else
fastboot flash boot magisk-boot.img
fastboot reboot
fi

当然如果想告诉用户刷入失败的原因的话可以整一个if嵌套循环。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
adb devices
if [ $? -ne 0 ]
then
adb reboot bootloader
echo 即将刷入boot
sleep 5s
fastboot flash magisk-boot.img
if [ $? -ne 0 ]
then
fastboot reboot
exit 0
else
echo 刷入失败,请确保手机已解锁bootloader
exit 1
fi
else
echo 请确保手机已经开启usb调试且允许这台计算机进行调试
exit 1
fi

这里的if [ $? -ne 0 ]是用来判断上一条命令是否执行成功
exit 1的意思是非正常退出,与exit 0相反
Tips:if嵌套循环分开执行也是可以的。
if嵌套循环如果写错了就会产生这样的杯具

1
2
flash.sh: 行 17: 未预期的记号 "fi" 附近有语法错误
flash.sh: 行 17: `fi'

还原官方boot同理,将magisk-boot.img字段替换成offical-boot.img即可

当然,为了防止adb :command not found出现,也可以在脚本上加入adb检测,只要将上篇文章的sudo apt install fastboot -y换成
sudo apt install adb -y即可
当然有些系统的adb不叫这个,例如termux上的adb软件包叫android-tools



-------------本文结束感谢您的阅读-------------



  • linux
  • shell
  • 刷机
  • fastboot

扫一扫,分享到微信

微信分享二维码
linux刷机工具箱
简单写一个shell刷机脚本
  1. 1. 目标
  2. 2. 使用的命令
  3. 3. 实操

预览:

0  字
评论
  • Latest
  • Oldest
  • Hottest
评论区空空荡荡,客官快来评论吧~
Powered by Waline v2.15.8
© 2025 dpkg123
本站已苟活 2 年 84 天 22 小时 56 分钟 1 秒
Hexo Theme Yilia by Litten
萌ICP备20231955号
  • 所有文章
  • 友情链接
  • 关于我

tag:

  • 3DS
  • linux
  • buildroot
  • kernel
  • makefile
  • android
  • OPPO
  • dtc
  • dtb
  • miui
  • coloros
  • 手机
  • shell
  • 刷机工具
  • 二次元
  • 9008
  • 刷机
  • PostmarketOS
  • ROM移植
  • debian
  • Android
  • Root
  • Github
  • CI
  • Linux
  • hexo
  • github
  • 网页加速
  • 虚拟化 Android
  • 内核
  • 编译
  • 哔哩哔哩
  • av10492
  • 猎奇
  • 归档
  • 番剧
  • 别当欧尼酱了
  • twrp
  • build
  • 速通
  • 教程
  • 奇技淫巧
  • TypeScript
  • Github Actions
  • 杂谈
  • 网页搭建
  • android kernel
  • gki
  • 联发科
  • KernelSU
  • kvm
  • vps
  • fastboot
  • alpine
  • 软件源
  • kernelSU
  • 移植
  • 内核编译
  • Kernel
  • web前端

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 内核编译排错

    2025-06-25

    #Android#内核#编译

  • 关于高通gunyah虚拟化的一些研究

    2025-03-03

    #虚拟化 Android

  • 安卓内核编译速通

    2025-02-13

    #Android#内核#编译#速通#教程#奇技淫巧

  • 使用github工作流全自动构建postmarketos刷机包

    2025-02-13

    #手机#刷机#Android#Root#Github#CI#Linux

  • PostmarketOS移植常见问题

    2024-08-12

    #linux#android#刷机#PostmarketOS#ROM移植

  • 本地搭建第三方alpine repo

    2024-03-22

    #linux#alpine#软件源

  • 折腾ts action遇到的其中一个问题

    2024-02-11

    #TypeScript#Github Actions

  • dtc编译教程

    2024-01-29

    #linux#android#dtc#dtb

  • OPPO Reno6 ColorOS13.1内核源码编译记录

    2024-01-15

    #kernel#android#OPPO

  • Android boot.img 文件的解包、修改与重打包小记

    2023-12-24

    #linux#android

  • twrp设备树从入门到放弃

    2023-12-10

    #linux#android#twrp#build

  • 3DS折腾linux小记

    2023-10-06

    #3DS#linux#buildroot#kernel

  • 暂停更新博客通知

    2023-08-08

    #杂谈

  • Makefile入门

    2023-08-04

    #linux#makefile

  • linux电脑给手机进行9008刷机

    2023-07-28

    #linux#9008#刷机

  • 浅谈安卓内核的碎片化

    2023-07-19

    #kernel#android#android kernel#gki

  • 哔哩哔哩危险地带部分补档

    2023-06-28

    #哔哩哔哩#av10492#猎奇

  • 使用dh_make快速构建deb

    2023-06-22

    #linux#debian

  • linux解压payload.bin和转换system.new.dat.br

    2023-06-18

    #linux#android#刷机

  • 浅谈联发科设备玩机的可能性

    2023-05-15

    #刷机#联发科#KernelSU#kvm

  • 给OPPO Reno6移植kernelSU

    2023-05-10

    #linux#kernelSU#移植#内核编译#Kernel

  • 别当欧尼酱了12集归档

    2023-05-02

    #归档#番剧#别当欧尼酱了

  • 珍爱生命,远离小众云

    2023-05-01

    #vps

  • fdt转dtb

    2023-04-30

    #android#dtb

  • coloros和miui

    2023-04-30

    #android#miui#coloros#手机

  • linux刷机工具箱

    2023-04-29

    #linux#shell#刷机工具

  • 简单写一个shell刷机脚本之进阶篇

    2023-04-29

    #linux#shell#刷机#fastboot

  • 简单写一个shell刷机脚本

    2023-04-29

    #linux#shell#刷机

  • linux娘

    2023-04-12

    #linux#二次元

  • 使用netlify加快博客访问速度

    2023-04-12

    #hexo#github#网页加速

  • hexo博客源码备份

    2023-04-10

    #hexo#github#web前端

  • 新博客

    2023-04-10

    #hexo#网页搭建

  • Hello World

    1970-01-01

  • note现在暂不考虑申请新的友链
  • 图床
  • 留言板
  • 原来的博客
  • Adminzhangの个人博客
  • cyp0633的blog
  • 小码同学
  • U.M.R-Powered-Blog
  • 秋澪Akimio
  • ialtone的小站
  • PiCpo的阁楼
  • artiga033
  • 柏园猫のBlog
  • 欠陥電気の摸鱼小池
  • 洛仙璃の幻梦
  • 木屐落在水洼了
  • 湛蓝的调色板
  • SakuraKooi的Blog
  • 新世界的大门
  • 沨鸾的小窝
  • Revincx
  • JIPA233の小窝
  • Mufanc
  • Fika
  • Pinpe的物语
  • 残夜的小博客
透明小菜鸡一枚<br><br>目前正在学习C++和C<br>正在移植postmarketOS到k30pro上<br>本博客使用github-page作为网页托管平台,netlify提供cdn加速服务。<br>不知道为啥yilia主题改不了下面的文字。<br>总之欢迎来到这里!