Linux迷+Python粉 - qemu-imghttps://blog.pythonwood.com/2017-12-05T10:12:00+08:00树莓派SD卡Linux系统盘复制,10分钟克隆新机,raspbain备份恢复2017-11-30T15:02:00+08:002017-12-05T10:12:00+08:00pythonwoodtag:blog.pythonwood.com,2017-11-30:/2017/11/树莓派SD卡Linux系统盘复制,10分钟克隆新机/<p>有旧和新树莓派二个,发现<span class="caps">SD</span>卡的raspbian系统可在不同树莓派之间通用,挺好。</p> <h3 id="_1">学通树莓派系统克隆,兼备安装、备份与恢复能力。<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>在家里,用了一周时间,将新买的树莓派3,<a href="https://s.click.taobao.com/t?e=m%3D2%26s%3DyO9jlKzcxlwcQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67jeJ0D4P3i%2B8UOZr0mLjuses9V29auOuBOBgn3DwXo5fs9cRaxJdiKw3LnkA3bZiA%2F6gPESVKznnDfaTZ11r%2FGF6awgoXsc5TKo%2FiSVAKeldcSpj5qSCmbA%3D&amp;pvid=10_120.239.178.6_72377_1512026724825" title="华趸hdmi转vga线带音频带供电"><span class="caps">HDMI</span>转<span class="caps">VGA</span>带供电</a>(性价比推荐),旧显示屏,旧音箱。组成家庭媒体中心。手机使用bubbleupnp投屏和推送音乐播放 …</p><p>有旧和新树莓派二个,发现<span class="caps">SD</span>卡的raspbian系统可在不同树莓派之间通用,挺好。</p> <h3 id="_1">学通树莓派系统克隆,兼备安装、备份与恢复能力。<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>在家里,用了一周时间,将新买的树莓派3,<a href="https://s.click.taobao.com/t?e=m%3D2%26s%3DyO9jlKzcxlwcQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67jeJ0D4P3i%2B8UOZr0mLjuses9V29auOuBOBgn3DwXo5fs9cRaxJdiKw3LnkA3bZiA%2F6gPESVKznnDfaTZ11r%2FGF6awgoXsc5TKo%2FiSVAKeldcSpj5qSCmbA%3D&amp;pvid=10_120.239.178.6_72377_1512026724825" title="华趸hdmi转vga线带音频带供电"><span class="caps">HDMI</span>转<span class="caps">VGA</span>带供电</a>(性价比推荐),旧显示屏,旧音箱。组成家庭媒体中心。手机使用bubbleupnp投屏和推送音乐播放,听音乐的享受更舒服了,显示屏再大些就更好。</p> <p><img alt="房间树莓派媒体中心" src="https://blog.pythonwood.com/uploads/2017/房间树莓派媒体中心.jpg" title="房间树莓派媒体中心"></p> <p>在工作室,还有一个树莓派和支持<span class="caps">HDMI</span>输出的投影仪。如果能复制现有树莓派的系统<span class="caps">SD</span>卡,将省事不少。(重复的事应少做)</p> <h3 id="_2">开始折腾尝试<a class="headerlink" href="#_2" title="Permanent link">&para;</a></h3> <p>借助我的个人电脑是ubutnu,可以看见树莓派分区情况,第二个分区14G采用了3G,很多空间是多余的。</p> <p><img alt="gparted看树莓派分区" src="https://blog.pythonwood.com/uploads/2017/gparted看树莓派分区.jpg" title="gparted看树莓派分区"></p> <p>用了1天的不断努力尝试终于才成功,囧。</p> <h3 id="1ddddrescue">失败1:使用<span class="caps">DD</span>或ddrescue<a class="headerlink" href="#1ddddrescue" title="Permanent link">&para;</a></h3> <p>不幸的是我是从14.6G卡克隆到14.4G卡,使用dd失败是注定的。使用dd的必要条件是目标卡要更大。</p> <h3 id="2linuxssdetc">失败2:源自笔记本linux系统迁移<span class="caps">SSD</span>的经验——分区一样,复制文件,改etc配置法。<a class="headerlink" href="#2linuxssdetc" title="Permanent link">&para;</a></h3> <p>linux磁盘迁移,只需分区格式化,复制文件,修改etc下的fstab和udev目录的网卡信息,chroot+grub安装。就能完成。</p> <p>然而实践得知,不适用树莓派迁移。启动时卡在&rdquo;smsc95xx 1-1.1:1.0: eth0: register &lsquo;smsc95xx&rsquo;&nbsp;&hellip;&rdquo;之后。无法启动。</p> <p>比较发现,复制时,不会有dev/by-partuuid/目录,而本身树莓派是有这个目录的。</p> <h3 id="ddrawresize2fsqemu-imgdiskdd">成功:dd读取为raw镜像盘、resize2fs缩容分区、qemu-img缩容disk、dd写入成功启动树莓派<a class="headerlink" href="#ddrawresize2fsqemu-imgdiskdd" title="Permanent link">&para;</a></h3> <h4 id="ddrawsd">先dd读取物理盘为raw格式镜像盘。这样就可以方法搞,最坏情况也不影响已有的系统sd卡内容。<a class="headerlink" href="#ddrawsd" title="Permanent link">&para;</a></h4> <div class="highlight"><pre><span></span>$sudo dd if=/dev/sdb of=/home/16G.img bs=128K </pre></div> <h4 id="loopgparted">挂载loop设备以便于gparted能操作<a class="headerlink" href="#loopgparted" title="Permanent link">&para;</a></h4> <div class="highlight"><pre><span></span>$sudo losetup /dev/loop0 /home/16G.img $sudo partprobe /dev/loop0 # 运行后才会出现分区/dev/loop0p1,/dev/loop0p2 </pre></div> <h4 id="14g6gblock6g">第二分区从14G缩容到6G(实际是把分散的Block数据集中到前6G位置。非真正改变分区大小)<a class="headerlink" href="#14g6gblock6g" title="Permanent link">&para;</a></h4> <div class="highlight"><pre><span></span>$sudo e2fsck -f /dev/loop0p2 $sudo resize2fs /dev/loop0p2 6G </pre></div> <h4 id="gparted-fdisk-6g">GParted / Fdisk 更改第二分区为6G<a class="headerlink" href="#gparted-fdisk-6g" title="Permanent link">&para;</a></h4> <p>GParted&nbsp;/dev/loop0打开,然后选择第二分区右击,选择&rdquo;更改/移动大小&rdquo;。设置。</p> <h4 id="loop">卸载恢复loop设备:<a class="headerlink" href="#loop" title="Permanent link">&para;</a></h4> <div class="highlight"><pre><span></span>$sudo partprobe -d /dev/loop0 $sudo losetup -d /dev/loop0 </pre></div> <h4 id="raw">raw虚拟磁盘缩容<a class="headerlink" href="#raw" title="Permanent link">&para;</a></h4> <div class="highlight"><pre><span></span>$sudo qemu-img resize /home/16G.img -8G $qemu-img info /home/16G.img image: xxx.img file format: raw virtual size: 5.9G (6380060672 bytes) disk size: 5.9G </pre></div> <h4 id="ddsd">使用<span class="caps">DD</span>写入新<span class="caps">SD</span>卡,启动成功。<a class="headerlink" href="#ddsd" title="Permanent link">&para;</a></h4> <p>可选:写入sd后可以用resize2fs扩容分区完全用上<span class="caps">SD</span>卡空间,参考上面缩容。</p> <h3 id="_3">总结提升<a class="headerlink" href="#_3" title="Permanent link">&para;</a></h3> <ol> <li>linux下安装树莓派系统到<span class="caps">SD</span>卡,使用dd刻录后还有剩余空间,用resize2fs可让最后分区来占满。</li> <li>使用dd来备份整个硬盘太慢,可以用resize2fs将数据块移动到前面,parted缩小分区,然后刻录硬盘前面有数据部分即可。这样备份文件就不会臃肿。</li> <li>备份镜像恢复时,过程类似初次安装系统。</li> </ol> <h3 id="_4">参考<a class="headerlink" href="#_4" title="Permanent link">&para;</a></h3> <p>把一块硬盘上的 Linux 系统整个复制到新硬盘上的方法. <a href="https://www.v2ex.com/t/183310">https://www.v2ex.com/t/183310</a></p> <p>openstack文档 <a href="http://docs.ocselected.org/openstack-manuals/kilo/image-guide/content/ch_modifying_images.html#losetup-kpartx-nbd">http://docs.ocselected.org/openstack-manuals/kilo/image-guide/content/ch_modifying_images.html#losetup-kpartx-nbd</a></p> <p>使用qemu-img改变镜像文件大小 <a href="http://niusmallnan.com/_build/html/_templates/knowladge/resize_raw_file.html">http://niusmallnan.com/_build/html/_templates/knowladge/resize_raw_file.html</a></p> <p>笔记本硬盘更换记(使用<span class="caps">LVM</span>进行在线数据迁移) <a href="http://cathay4t.blogspot.hk/2009/05/lvm.html">http://cathay4t.blogspot.hk/2009/05/lvm.html</a></p> <p>新电脑+旧系统:教你在不同机器间转移Linux <a href="http://www.geekfan.net/1860/">http://www.geekfan.net/1860/</a></p> <p>usb-creator-gtk 方法和&nbsp;clonezilla方法没有深入研究。</p>