将系统挂载到usb硬盘

       系统装好在sd卡启动正常后,就可以将移动硬盘通过usb接口接入并挂载来用了。由于原来系统装在SD卡上,由于SD卡读写速度原因,导致系统有些卡。特别在读写系统文件的时候特别卡。我想将整个raspbian系统都转移到移动硬盘上。以便提高系统性能。
      首先准备一块移动硬盘,通过usb接入到树莓派上来(注意移动硬盘要单独供电),分好区后格式化。由于我的硬盘是从之前电脑来折下来的,原来装的ubuntutxxy,原本已经分好区了,也有好多数据在硬盘上,为了使数据不丢失,就不再重新分区了。
一,将系统从SD卡拷贝到硬盘上
1.把硬盘插入到树莓派,使用lsblk命令查看设备名:
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 232.9G  0 disk
├─sda1        8:1    0   1.9G  0 part
├─sda2        8:2    0     1K  0 part
├─sda5        8:5    0 209.6G  0 part
├─sda6        8:6    0  18.6G  0 part
└─sda7        8:7    0   2.8G  0 part
mmcblk0     179:0    0   7.3G  0 disk
├─mmcblk0p1 179:1    0    63M  0 part
└─mmcblk0p2 179:2    0   7.2G  0 part
这是我的硬盘信息,sda是硬盘,mmcblk0是sd卡,我的硬盘分成4个区,sad1作为boot目录,sda6作为根目录,sda7作为swap,sda5作为主数据存储。
2.创建boot文件系统和root文件系统:
sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda6
3.把当前Raspbian系统从SD卡拷贝到USB设备
sudo mkdir /mnt/target
sudo mount /dev/sda6 /mnt/target/  # 挂载分区
 
sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/  # 挂载分区
 
sudo apt-get update
sudo apt-get install rsync   # rsync命令用于同步数据
sudo rsync -ax --progress / /boot /mnt/target   # 把系统拷贝到U盘
4.刷新SSH密
cd /mnt/target
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target
rm /etc/ssh/ssh_host*
dpkg-reconfigure openssh-server
exit

 

sudo umount dev
sudo umount sys
sudo umount proc
二,修改启动配置
1.编辑/mnt/target/boot/cmdline.txt和t/boot/cmdline.txt文件
原来的内容
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
把它修改成:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sda6 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
2.编辑/mnt/target/etc/fstab和/etc/fstab文件
原来的内容:
 
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
把它修改成:
proc            /proc           proc    defaults          0       0
/dev/sda1  /boot           vfat    defaults          0       2
/dev/sda6  /               ext4    defaults,noatime  0       1
/dev/sda5       /disk           ext4    defaults,noatime  0       1
/dev/sda7               swap                    swap    defaults        0 0
3.卸载挂载的文件系统
sudo umount /mnt/target/boot
sudo umount /mnt/target
三.重新启动
sudo init 6
重新启动后,登录进系统,用df -h查看挂载情况
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        19G  1.8G   16G  11% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.8M  457M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/sda1       1.9G   21M  1.9G   2% /boot
/dev/sda5       207G   90G  107G  46% /disk

 

显示已成功挂载
再用free -h查看swap挂载情况
$ free -h
             total       used       free     shared    buffers     cached
Mem:          925M       867M        57M        21M        54M       670M
-/+ buffers/cache:       142M       782M
Swap:         2.9G       660K       2.9G
swap分区也已成功挂载
再用lsblk查看设备名
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 232.9G  0 disk
├─sda1        8:1    0   1.9G  0 part /boot
├─sda2        8:2    0     1K  0 part
├─sda5        8:5    0 209.6G  0 part /disk
├─sda6        8:6    0  18.6G  0 part /
└─sda7        8:7    0   2.8G  0 part [SWAP]
mmcblk0     179:0    0   7.3G  0 disk
├─mmcblk0p1 179:1    0    63M  0 part
└─mmcblk0p2 179:2    0   7.2G  0 part

 

SD卡中的mmcblk0p1和mmcblk0p2分区已不再挂载了,这样整个文件系统都在硬盘中了
那么问题来了,能不能把SD卡拨出,只从硬盘启动呢,从理论上应该是可以的。
于是我就是树莓派关了,把SD卡拨出,只插了移动硬盘。
启动
让我感到悲伤的是系统没有启动,接入显示器想看看有什么启动信息,结果什么都没有,唯一的解释是没有找到引导盘。
关掉电源后,把SD卡重新插入再启动,这次可以启动成功了,目录挂载也都是正确的。我估计是硬盘没有重新分区格式化过,导致找不到引导盘,只能从SD卡引导,从移动硬盘启动。
暂是这样,以后想办法解决这个问题

发表评论