1.翻译:【XDA论坛】教程:如何手动编译TWRP Recovery
2.使用Linux文件恢复工具
3.怎样刷机安卓手机怎样刷机安卓系统
4.Gin源码分析 - 中间件(5)- Recovery
翻译:【XDA论坛】教程:如何手动编译TWRP Recovery
这是源码一个关于手动编译TWRP Recovery的教程,对于TWRP 3.x源代码开放后,目录你有机会根据自己的源码设备进行定制。但请注意,目录这需要一定的源码Linux基础和AOSP构建流程知识。
目前支持编译的目录linux源码多少行版本包括Omni 6.0、7.1、源码8.1、目录9.0、源码CM .0、目录.1、源码.1以及LineageOS .0。目录推荐使用Omni 9.0,源码除非你的目录设备有超级分区。
如果你使用的源码是CM或LineageOS,TWRP需要放置在特定的文件夹(LineageOS/bootable/recovery-twrp)并设置RECOVERY_VARIANT。源代码可以在相关链接中找到,但请注意链接地址可能已更新。
编译时,建议使用轻量级构建清单,它适用于大多数情况,但可能需要额外的repo。在编译前,确保更改任何FLAGS(构建标志)会清除或执行'make clobber',以确保更改生效。
找到与你设备对应的BoardConfig.mk文件(通常在devices/制造商/代号文件夹),你需要配置相应的架构和平台设置,尤其是TW_THEME,它决定你的设备显示的主题。现在有五种主题选项,根据你的屏幕分辨率选择合适的。
除了分辨率,还有其他如RECOVERY_SDCARD_ON_DATA、BOARD_HAS_NO_REAL_SDCARD等标志,根据你的设备需求进行设置。例如,RECOVERY_SDCARD_ON_DATA可改变设备的如何获取comsol源码文件存储方式。
关于fstab,TWRP 2.5及以上版本支持新特性,自动处理大多数分区。但如果是较旧版本,需要创建TWRP.fstab文件,以保持与其他恢复选项的兼容性。
在TWRP中,你可以为每个分区添加标志,如removable、storage、settingsstorage等,这些标志影响分区的行为和显示方式。例如,Galaxy S4的TWRP fstab示例显示了如何使用标志。
最后,如果你完成了编译并想让TWRP官方支持你的设备,你需要提供必要的信息,但请注意,我们不会为此提供奖励,但你可以通过XDA分享你的成果。此外,你还可以在Android模拟器上测试TWRP,这有利于开发和调试。
请在编译过程中遵循指南,如有任何问题,可以访问#twrp在Freenode上寻求帮助,或者在XDA论坛分享你的成功经验。
使用Linux文件恢复工具
Linux 系统管理员守则中有这么一条:“慎用 rm -rf 命令,除非你知道此命令所带来的后果“,不过 Linux 下删除文件并不是真实的删除磁盘分区中的文件,而是将文件的 inode 节点中的扇区指针清除,同时释放这些数据对应的数据块,当释放的数据块被系统重新分配时,那些被删除的数据就会被覆盖,所以误删除数据后,应马上卸载文件所在的空木白源码分区。然后使用相关工具进行恢复。本文以 Ubuntu . 平台为例介介绍四个(foremost、extundelete、testdisk 和 phtorec)常用的 Linux 删除文件恢复工具的使用方法。Linux 文件恢复的原理
inode 和 block
首先简单介绍一下 Linux 文件系统的最基本单元:inode。inode 译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是 inode,另一部份是 block,block 是用来存储数据用的。而 inode 呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode 为每个文件进行信息索引,所以就有了 inode 的数值。linux 操作系统下可以使用 ls –id 命令来查看文件或者目录的 inode 值,一般”root”目录的 inode 值为 2,一个分区挂载到一个目录下时,这个”root”目录的 inode 值为 2
1
2
3
# mount /dev/sdb2 /tmp
# ls -id /tmp
2 /tmp
文件恢复的原理
本文要介绍的命令是通过文件系统的 inode 值(一般是 2 )来获取文件系统信息。在 ext3 和 ext4 文件系统中,每个文件都是通过 inode 来描述其数据存放的具体位置,当文件被删除以后,inode 的数据指针部分被清零,文件目录区没有太多变化。文件的读写都是通过 inode 来实现,当 inode 数据指针被清零以后,即便文件内容还在,也没有办法把文件内容组合出来。当 ext3 和 ext4 文件系统中的元数据 metadata 发生变化时,相应的元数据 metadata 在日志文件会有一份拷贝。比如一个文件被删除了,它的 inode 信息会在日志文件中先保存一份,然后把要删除文件 inode 相关信息清零。松鼠视频源码安装这个日志文件是循环使用的,当操作过多时,删除的文件的 inode 日志记录会被新的数据替换,这就彻底丧失了根据 inode 找回数据的机会了。如果是大量文件的删除,这个日志文件会被反复循环利用多次,只留给最后删除的那些文件的恢复机会。
使用命令行工具恢复文件
foremost 和 extundelete 简介
formost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具。这个过程通常叫做数据挖掘(data carvubg)。formost 可以分析由 dd、Safeback、Encase 等生成的镜像文件,也可以直接分析驱动器。文件头和尾可以通过配置文件设置,也可以通过命令行开关使用 formost 内建的文件类型。formost 最初是由美国空军特别调查室(Air Force Office of Special Investigations)和信息系统安全研究中心(The Center for Information Systems Security Studies and Research)开发的,现在使用 GPL 许可。Foremost 支持恢复如下格式:avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip。
针对 Linux 下的 ext 文件系统来说,常用的 Linux 文件删除恢复工具有 debugfs、ext3grep、extundelete 等。extundelete 是一个开源的数据恢复工具,支持 ext3、ext4 文件系统,其官方站点位于/Scalpel/ 下载源代码编译安装。下面看看使用方法:
使用 scalpel 工具之前,首先要修改配置文件: /etc/scalpel/scalpel.conf。
例如用户要恢复所有删除 pdf 文件,那么要在/etc/scalpel/scalpel.conf 把包括 pdf 文件格式的两行之前的# 去掉。
[...]
pdf y %PDF %EOFx0d REVERSE
pdf y %PDF %EOF REVERSE
[...]
然后保存文件。
下面看看使用方法
# scalpel /dev/sdb1 -o /RECOVERY/
其中/dev/sdb1 是目标驱动器,/RECOVERY/ 是恢复文件存储目录。目录下的 audit.txt 文件是恢复文件列表。
使用字符终端工具 testdisk 和 phtorec
testdisk 简介
testdisk 是分区表恢复、raid 恢复、福缘论坛源码分区恢复的开源免费工具(testdisk 支持如下文件系统: FAT/FAT/FAT/NTFS/ext2/ext3/ext4)。testdisk 支持的功能: 修复分区表, 恢复已删除分区,用 FAT 备份表恢复启动扇区,重建 FAT/FAT/FAT 启动扇区,修复 FAT 表,重建 NTFS 启动扇区,用备份表恢复 NTFS 启动扇区,用 mft 镜像表(mft mirror)修复 mft 表,查找 ext2/ext3 备份的 superblock,从 FAT,NTFS 及 ext2 文件系统恢复删除文件,从已删除的 FAT,NTFS 及 ext2/ext3 分区复制文件。
使用方法
首先安装
#apt-get install testdisk
其它 Linux 发行版用户可以在http://www.cgsecurity.org/wiki/TestDisk_Download 下载源代码编译安装。下载安装 testdisk 之前要安装几个软件包 libjpeg8 ,libncursesw5, libuuid1, zlib1g 。下面看看使用方法
启动 testdisk
#testdisk
testdisk 启动后的工作界面首先是选择恢复操作中的 log 文件(testdisk.log)的纪录方式见图 1。
图 1.选择恢复操作中的 log 文件的纪录方式
[Create]新建
[Append]追加
[No Log]不纪录
选择了 log 文件的记录方式后、系统显示处于连接状态的磁盘设备见图 2。
图 2.处于连接状态的磁盘设备
在列出的磁盘设备中,选择要恢复的分区,然后选择磁盘分区的种类。若是 ext4 文件系统的话,请选择 [None ] Non partitioned media 见图 3
图 3.选择 [None ] Non partitioned media
说明:一般选择[Intel] Intel/PC partition(如果是 GPT 分区,请选择 EFI GPT),对于 ext4 文件系统选择 [Intel] Intel/PC partition 也能正确识别,只是分析硬盘时比较慢。
下面的画面中选择[Analyse],对分区进行分析见图 4。
图 4.对分区进行分析
下面显示了当前分区的状态。这是软件分析的当前分区表的分区结果,我们选择“Deep Search”进行一次深入检测见图 5。
图 5.选择“Deep Search”进行一次深入检测
下面是检测完成界面见图 6
图 6.检测完成界面
在这个画面时,按 P 键就可以列出硬盘上的文件见图 7
图 7.红色的文件名称就是已经被删除的文件
红色的文件名称就是已经被删除的文件,选择好你要恢复的文件后,按 c 键之后,它就会问你要复制到哪个目录,这时请选择你要 复制的目地地(destination)即可。
photorec 简介
photorec 是一款用于恢复硬盘、光盘中丢失的视频、文档、压缩包等文件,或从数码相机存储卡中恢复丢失的数据恢复软件(因此,该软件命名为 photo recovery 这个名字)。 photorec 忽略文件系统,能直接从介质底层恢复数据,因此,在介质的文件系统严重破坏或被重新格式化后,它也能进行数据恢复。出于安全考虑, photorec 以只读方式来访问您要恢复数据所在的磁盘或存储卡介质。提示: 一旦发现丢失或意外删除了某个、文件, 请不要继续往该存储设备或磁盘保存新文件;否则您可能会覆盖原来的数据。 这意味着您在使用 photorec 时,您千万不要将恢复的文件写入到原数据所存储的同一分区。
使用 photorec 恢复文件
photorec 是 testdisk 的伴侣程序,安装 testdisk 后 photorec 就可以使用了。
启动 photorec
# photorec
图 8 中显示了已连接磁盘设备,准备恢复的文件在那个设备上就选择它,然后在选择 Proceed 按钮继续下一步。
图 8.已连接磁盘设备
接下来,选择恢复的磁盘分区格式。这里选择 ext4 见图 9。
图 9.选择恢复的磁盘分区格式
画面下方[File Opt]中有可供恢复的文件种类提供被选择见图 。
图 .可供恢复的文件种类
说明:如果只是 root 据某些文件签名要恢复部分文件类型,那么可以按 s 取消全部勾选,然后移动光标到要恢复的文件类型,可按空格来选择高亮选中的类型。
下面设定要分析的磁盘空间区域,可整个分区搜索,也可只搜索自由空间(相当于未分配簇)见图 。
图 .设定要分析的磁盘空间区域
下面选择分区所使用的文件系统类型,然后设定导出的文件目录,一般输入 Y 并回车即可。图 是恢复完成界面。
图 .恢复完成
恢复完了选择 Quit 退出 PhtoRec。被恢复的文件是 recup_dir.x 的若干数字子组合为文件名被保存在当前目录的/recup_dir 子目录下的。
功能对比
表 1 是 Linux 删除文件恢复工具
表 1.Linux 删除文件恢复工具
工具名称/功能对比 工作界面 功能简介 foremost 命令行 formost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具 extundelete 命令行 Extundelete 是 ext3、ext4 文件系统的恢复工具 scalpel 命令行 scalpel 是一种快速文件恢复工具,它通过读取文件系统的数据库来恢复文件。它是独立于文件系统的 testdisk 字符终端 Testdisk 支持分区表恢复、raid 恢复、分区恢复 phtorec 字符终端 photorec 用来恢复硬盘、光盘中丢失的视频、文档、压缩包等文件,或从数码相机存储卡中恢复丢失的总结
可以使用 testdisk 进行文件恢复的场合,也就是硬盘上的分区(该分区有原有数据纪录)已经损坏的情形。但是如果损坏之后,重新再次做成了新分区的话,文件恢复的可能性比较小,很困难。photorec 不仅针对 硬盘、USB 设备、CD-ROM、SD 卡,而且还可以对其它存储设备进行应用。因此大多数常用的文件如果被误操作的话,均可利用其来进行恢复,只不过它的初衷是针对照片而制作的
怎样刷机安卓手机怎样刷机安卓系统
怎样刷机安卓手机,怎样刷机安卓系统很多人还不知道,现在让我们一起来看看吧!
1、其实刷机是很多朋友很难理解的。但是随着智能手机的使用越来越多,我们也应该对刷机有所了解,这样在需要刷机的时候才不会无所适从。
2、安卓系统
3、一、刷机原理。
4、记得第一次刷机,哪一次紧张。其实你紧张什么?只是因为不懂原理,只看到一堆教程画瓢,生怕走错一步把手机变成砖头。真正让我明白刷机原理的是看了这篇文章:点击查看。
5、说起来,刷机有两种方式:
6、一种是recovery方法,就是我们通常把update.zip放入SD卡然后alt-s,这种方法调用recovery方法复制各种img或者文件。想知道恢复是如何进行的吗?我也没找到什么好的资料,就在这里看了一些recovery的源代码:点击查看。
7、第二种,fastboot方法,这其实是一种很酷的方法。说白了,fastboot就是直接把每个分区已有的镜像文件(img文件,类似于我们在光盘上做的镜像文件)覆盖到指定分区,有点暴力,有点类似于我们平时操作系统的Ghost restore。
8、两种方法哪个更好,难分高低。一般来说:
9、恢复方法比较简单,只需要愚蠢的把update.zip放在SD卡的重要目录下,然后进入恢复模式Alt-S即可,但是和任何愚蠢的事情一样,他的灵活性很小,不知道怎么解决任何错误。一般来说,为了保证Rom的可靠性,Rom师傅会在安装程序中对一些安装环境做一些确定,而你的手机环境千变万化,Rom师傅很难考虑周全。此外,回收计划本身也有一些环境验证。
、Fastboot方法更加灵活和强大。fastboot方法不需要依赖恢复,即使linux底层已经打破了恢复模式,进不去,也可以通过fastboot刷回来。Fastboot模式实际上是调用spl来刷机,所以如果刷spl坏了,fastboot模式应该不会进入,也就是砖头。快速启动方法要求您的计算机上有快速启动程序,并且您的手机必须进入快速启动模式,然后才能操作。有关这方面的知识,请参考谷歌*^_^*.
本文讲解到此结束,希望对大家有所帮助。
Gin源码分析 - 中间件(5)- Recovery
Recovery中间件在HTTP请求处理中扮演着关键角色,尤其在处理过程中产生panic时。它能够捕获并处理这些异常,确保服务的稳定性和客户端的正常响应。通过使用gin框架,可以通过两种方式集成Recovery中间件:第一种是直接调用gin.New创建引擎时,无需注册Recovery中间件;第二种是在调用gin.Default()创建引擎时,内部自动注册Recovery中间件。在没有使用Recovery中间件的情况下,向服务发送异常请求会导致服务端和客户端出现异常;而使用Recovery中间件后,异常被捕获并以友好的方式显示异常堆栈,同时客户端收到HTTP 错误。
Recovery中间件内部实现通过多种变体接口实现,包括CustomRecoveryWithWriter、RecoveryWithWriter、CustomRecovery以及Recovery。其中,CustomRecoveryWithWriter提供最底层的形式,允许用户自定义异常输出和恢复处理逻辑。RecoveryWithWriter则提供了Writer参数和一个可选的RecoveryFunc,如果没有定义该函数,则使用defaultHandleRecovery。CustomRecovery和Recovery则分别使用默认的DefaultErrorWriter和defaultHandleRecovery。
Recovery的核心实现通过DefaultErrorWriter和defaultHandleRecovery两个主要部分。DefaultErrorWriter负责设置日志格式为红色字体输出。defaultHandleRecovery方法是整个处理流程的核心,包含捕获、处理异常、生成响应等关键步骤。首先通过recover()方法获取panic信息,判断异常是否由客户端断开连接引起,然后获取异常堆栈、请求头,并根据异常类型和原因进行相应的处理和响应输出。最终,根据处理结果返回HTTP响应,如果是异常则返回HTTP ,如果是网络原因则使用Abort方法。
Recovery中间件的实现不仅提供了异常处理的灵活性,还确保了服务的稳定性和客户端的友好体验。通过捕获和处理异常,Recovery中间件能够有效地减少服务中断的可能性,提高系统的健壮性。总结而言,Recovery中间件在处理异常时提供了实用的方法,对于开发稳定、可靠的HTTP服务具有重要意义。