原来,硬盘损坏,数据丢失这种事我也会遇上啊

硬盘一直挂载路由器上面,离线下载,运行了大概5000+个小时,直到上个月某天路由器卡死,重启了几次不行,拔下硬盘,路由器可以正常启动,问题出在硬盘上面。

把移动硬盘插在电脑上面,可以识别,但是无法读取文件,具体表现为用文件管理器打开会卡死,这个在Windows和Linux下面都表现的一样。

上网搜索数据恢复服务,看价格都是十几倍甚至几十倍硬盘的价格,直到这时候才发现,如果你的硬盘损坏,正常情况下是不会去找数据恢复服务的。

我一直认为由于“幸存者偏差”,所以数据丢失这种情况是非常少的,就是发生了丢失的那些人才会在网上发帖,正常人不会半年或者一年在网上报告自己硬盘使用正常,然而事实比较符合“墨菲定律”,硬盘总会损坏,而且在你使用期间损坏。

不管数据是什么,在丢失的时候,总会很难受很沮丧,因为数据也算是某些物品,虽然拷贝成本很低,然而遇到这些情况跟你丢钱差不多一样的感觉。

之前挂载在电脑上还是能正常识别,后面用DiskGenius检测坏块,坏块非常的多,怀疑导致路由器卡死是因为在索引处出现坏块导致的卡死。我运气比较好,硬盘是因为坏块导致读取超时,找了很多软件之后找到Disk Drill,恢复了大部分的数据,不过大部分都是离线下载视频,对比了一下大小,发现还是有三分之一的数据没有显示出来,可能是我记错了,不过忘记了自己忘记了什么一样,其实杂乱的数据也不知道哪些不见了,就像以前拍照片,某个人的聊天记录,遗失在某个角落直到消失不见。

硬盘通电时间5000+小时,折算一下大概200+天,和我电脑里面通电4w小时的磁盘比起来,差的有点远。就算品牌产品质量之间区别,这个差距也是不正常,搜索之后发现,磁盘对于供电要求比较高,路由器在读写的时候,可能电压不够,导致磁盘处于不稳定的工作,外加移动硬盘本身并不适合24/7这样子的运行,当然这些都是猜测,并不靠谱。

以后会考虑组装NAS,加上RAID保证数据的安全,不过那得花很多钱,所以目前使用网盘保存数据也是不错的选择。

[Linux on m8]第四篇、调试系统

在上一篇文章中有提过,编译出来的内核并不能顺利启动,接下来就是调试,找到文件hybris-boot.img解包,具体工具可以看我之前关于M8的帖子。

unpackbootimg -i hybris-boot.img

解包出来的文件

hybris-boot.img          hybris-boot.img-hash        hybris-boot.img-ramdiskoff
hybris-boot.img-base     hybris-boot.img-kerneloff   hybris-boot.img-secondoff
hybris-boot.img-board    hybris-boot.img-pagesize    hybris-boot.img-tagsoff
hybris-boot.img-cmdline  hybris-boot.img-ramdisk.gz     hybris-boot.img-zImage
hybris-boot.img-dtb      

下载twrp-3.2.3-1-m8.img,同样解包,然后替换hybris-boot.img-dtbhybris-boot.img-zImagetwrp-3.2.3-1-m8.img里面,然后在Bootloader下面直接启动,能启动成功,说明编译出来的内核是没有问题的,Bootloader是能直接启动镜像而不需要刷入到boot分区或者recover分区,这样能节省很多时间。

fastboot boot new.img

[Linux on m8]第三篇、编译内核

上一个章节到拉取源码,接下来就是编译启动镜像:

source build/envsetup.sh

选择机型

breakfast m8

修改内核配置:

git clone https://github.com/mer-hybris/mer-kernel-check
./mer-kernel-check/mer_verify_kernel_config kernel/htc/msm8974/arch/arm/configs/m8_defconfig

改正所有ERROR,警告的话看情况修改。

修改内核挂载点,一般而言,把systemuserdatacache这三个分区补全就可以,多出来的部分ext4,或者vfat分区也可以补上去:

vim halium/hybris-boot/fixup-mountpoints

编译工具,如果提示出现缺少的库,安装即可。

mka mkbootimg

最后编译内核:

mka hybris-boot

非常重要: 你跟着halium文档操作,只能到这里,接下来的步骤需要自己摸索,因为编译出来的内核在M8上面并不能工作,甚至无法调试。