缘起:
众所周知,RaspberryPi2提供了MicroSD卡插槽,通常将系统安装于MicroSD卡上,而通常所用的是RaspberryPi官方Raspbian系统,
以下均针对RaspberryPi2硬件和Raspbian系统而言。
网上有同仁说,有遇到MicroSD卡损坏者,原因可能是发热等等,而优盘相比MicroSD卡就皮实一些。
于是在网上找到了将系统安装在U盘上的方法,并使用了一段时间,期间的文档/代码等均存在该盘上。
然而突然某天就悲剧了,正用的好好的,正常操作报错,桌面图标都变样了。
重启系统,就说某某错误(具体错误名记不清了),系统自动以只读方式挂在系统盘(优盘)。
进了系统什么都做不了,因为系统盘是只读的。
将优盘挂在PC上,同样问题,修复不了。
动用大杀器,优盘量产,能识别出来的时候都报错:Read-Only Page。
这优盘应该是彻底挂了,不再在上面浪费精力。
找原因:
这段时间,频繁配置系统 升级 安装软件 卸载软件 编译代码,怀疑是对优盘读写过多,存储单元坏了。
众所周知,闪存芯片是有读写次数上限的,坏了就坏了。估计是这个原因,而不是因为温度之类的问题。
想办法:
手头有升级换下来的笔记本硬盘,既然Raspbian能安装在优盘上,那么原理上也应该能够安装到硬盘上。
如果能安装到硬盘上,那读写次数应该是数量级的提升。
硬件连接:
我可以想到的在RaspberryPi2上连接硬盘的最便捷方式就是USB接口了。
所以,要用移动硬盘盒(或仅用其USB-IDE或者USB-SATA电路板)作为连接RaspberryPi2和笔记本硬盘的媒介。
但RaspberryPi2的带负载能力是比较弱的,有资料(源待考)说,RaspberryPi2的USB接口负载能力100mA。
但是笔记本硬盘标签上标注供电需求:5V 700mA。
所以,要用RaspberryPi2驱动笔记本硬盘,需要单独为硬盘供电。
方法就是在连接移动硬盘盒和RaspberryPi2的USB线上下工夫,当然,如果上面所说的电路板有单独的供电接口
或者USB线有专门取电的接头,那就直接用好了。
至于怎么下工夫,是个手工活,要点有
1 供电线选够粗的,免得硬盘端电压跌落厉害,不能正常工作。
2 分清正负极,连接好。可靠起见,焊接更好,注意把接头包好,免得漏电短路。正负极可网上搜索。
写Raspbian系统到硬盘
按照正常使用方法,将硬盘接入PC,写入官方Raspbian镜像。
我的PC上安装的Lubuntu,用 sudo dd if=<img file> of=/dev/sdb<n>
<img file> 指的下载并解压出来的磁盘镜像文件
<n>指的是目标硬盘被系统识别后的编号。
如果不清楚<n>是几,可以用GParted软件查看。
需要注意的是,直接下载解压的img文件是磁盘镜像,而不是分区镜像,
写到硬盘上后,硬盘上会存在两个分区,分区1是boot分区,分区2是系统主文件所在分区(暂时称为主分区)。
除此之外,还有很大的闲置空间。
系统主分区空间为3.8G,要装的软件和资料比较多的话,这点空间是不够的,用GParted扩大主分区容量
(用shell命令应该也没问题,但对我来说还比较高大上,先用低小下的图形界面吧)。我把主分区扩大到32G。
剩下的空白空间另建分区,用于存储数据和资料。
准备启动盘
RaspberryPi2上电是从MicroSD卡启动的,即使装系统到硬盘,也少不了一张MicroSD卡,写启动分区内容。
简单的话,直接将硬盘的分区1用dd命令写到MicroSD卡上。
或者下载Raspbian-lite版本,直接将解压的img文件dd到MicroSD卡。
修改MicroSD卡boot分区下command.txt文件配置内容,将root=/dev/mmcblk0p2更改为root=/dev/sda2。
顺便说一下,如果通过HDMI->VGA连接的PC显示器,为了开机正确显示,还需要修改MicroSD卡boot分区下
config.txt文件,
#hdmi_force_hotplug=1
#hdmi_drive=2
These values are valid if hdmi_group=2 (DMT) Note: according to http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=20155&p=195417&hilit=2560x1600#p195443 there is a pixel clock limit which means the highest supported mode is 1920x1200 @60 Hz with reduced blanking. hdmi_mode=1 640x350 85 Hz hdmi_mode=2 640x400 85 Hz hdmi_mode=3 720x400 85 Hz hdmi_mode=4 640x480 60 Hz hdmi_mode=5 640x480 72 Hz hdmi_mode=6 640x480 75 Hz hdmi_mode=7 640x480 85 Hz hdmi_mode=8 800x600 56 Hz hdmi_mode=9 800x600 60 Hz hdmi_mode=10 800x600 72 Hz hdmi_mode=11 800x600 75 Hz hdmi_mode=12 800x600 85 Hz hdmi_mode=13 800x600 120 Hz hdmi_mode=14 848x480 60 Hz hdmi_mode=15 1024x768 43 Hz DO NOT USE hdmi_mode=16 1024x768 60 Hz hdmi_mode=17 1024x768 70 Hz hdmi_mode=18 1024x768 75 Hz hdmi_mode=19 1024x768 85 Hz hdmi_mode=20 1024x768 120 Hz hdmi_mode=21 1152x864 75 Hz hdmi_mode=22 1280x768 Reduced blanking hdmi_mode=23 1280x768 60 Hz hdmi_mode=24 1280x768 75 Hz hdmi_mode=25 1280x768 85 Hz hdmi_mode=26 1280x768 120 Hz Reduced blanking hdmi_mode=27 1280x800 Reduced blanking hdmi_mode=28 1280x800 60 Hz hdmi_mode=29 1280x800 75 Hz hdmi_mode=30 1280x800 85 Hz hdmi_mode=31 1280x800 120 Hz Reduced blanking hdmi_mode=32 1280x960 60 Hz hdmi_mode=33 1280x960 85 Hz hdmi_mode=34 1280x960 120 Hz Reduced blanking hdmi_mode=35 1280x1024 60 Hz hdmi_mode=36 1280x1024 75 Hz hdmi_mode=37 1280x1024 85 Hz hdmi_mode=38 1280x1024 120 Hz Reduced blanking hdmi_mode=39 1360x768 60 Hz hdmi_mode=40 1360x768 120 Hz Reduced blanking hdmi_mode=41 1400x1050 Reduced blanking hdmi_mode=42 1400x1050 60 Hz hdmi_mode=43 1400x1050 75 Hz hdmi_mode=44 1400x1050 85 Hz hdmi_mode=45 1400x1050 120 Hz Reduced blanking hdmi_mode=46 1440x900 Reduced blanking hdmi_mode=47 1440x900 60 Hz hdmi_mode=48 1440x900 75 Hz hdmi_mode=49 1440x900 85 Hz hdmi_mode=50 1440x900 120 Hz Reduced blanking hdmi_mode=51 1600x1200 60 Hz hdmi_mode=52 1600x1200 65 Hz hdmi_mode=53 1600x1200 70 Hz hdmi_mode=54 1600x1200 75 Hz hdmi_mode=55 1600x1200 85 Hz hdmi_mode=56 1600x1200 120 Hz Reduced blanking hdmi_mode=57 1680x1050 Reduced blanking hdmi_mode=58 1680x1050 60 Hz hdmi_mode=59 1680x1050 75 Hz hdmi_mode=60 1680x1050 85 Hz hdmi_mode=61 1680x1050 120 Hz Reduced blanking hdmi_mode=62 1792x1344 60 Hz hdmi_mode=63 1792x1344 75 Hz hdmi_mode=64 1792x1344 120 Hz Reduced blanking hdmi_mode=65 1856x1392 60 Hz hdmi_mode=66 1856x1392 75 Hz hdmi_mode=67 1856x1392 120 Hz Reduced blanking hdmi_mode=68 1920x1200 Reduced blanking hdmi_mode=69 1920x1200 60 Hz hdmi_mode=70 1920x1200 75 Hz hdmi_mode=71 1920x1200 85 Hz hdmi_mode=72 1920x1200 120 Hz Reduced blanking hdmi_mode=73 1920x1440 60 Hz hdmi_mode=74 1920x1440 75 Hz hdmi_mode=75 1920x1440 120 Hz Reduced blanking hdmi_mode=76 2560x1600 Reduced blanking hdmi_mode=77 2560x1600 60 Hz hdmi_mode=78 2560x1600 75 Hz hdmi_mode=79 2560x1600 85 Hz hdmi_mode=80 2560x1600 120 Hz Reduced blanking hdmi_mode=81 1366x768 60 Hz hdmi_mode=82 1080p 60 Hz hdmi_mode=83 1600x900 Reduced blanking hdmi_mode=84 2048x1152 Reduced blanking hdmi_mode=85 720p 60 Hz hdmi_mode=86 1366x768 Reduced blanking《link http://elinux.org/RPiconfig》
后记
我的40G并口三星金盘每次准备好,第一次进系统只读挂载,重启再进系统就无法挂载。
换了320串口日立硬盘,没出问题。
在操作的时候,系统对硬盘的读写相当频繁,推测用优盘做系统盘的原因就是读写次数多了。
目前存在的小问题是,一段时间不操作,硬盘就失效,需要重启。
怀疑是硬盘一段时间不操作自动进入了省电模式。也可能是硬盘供电的问题,但可能性小,后面再排查。
补记:
后面又换了块移动硬盘电路板,按照上述步骤安装后,系统正常运行至今。
可知,后记中的现象与移动硬盘电路板(主要是主控芯片及其固件)有关。
有遇到类似问题者,可尝试更换移动硬盘电路板。