树莓派可以移动linux,树莓派学习笔记 篇三:树莓派4B 与移动存储设备的那些事儿...

树莓派学习笔记 篇三:树莓派4B 与移动存储设备的那些事儿

2019-11-24 23:03:55

39点赞

286收藏

14评论

本文是「树莓派学习笔记」系列的第三篇,将学习下 Linux 系统分区的基础知识,在树莓派上如何挂载与卸载外接的移动存储设备,不同分区格式的硬盘速度测试以及如何在一张 TF 卡上实现多系统启动。

1.SD 卡与 TF 卡

内存卡是生活中很常见的一种存储设备,之前常常分不清楚 SD 卡和 TF 卡的区别,SD 卡是 Secure Digital Card 的英文缩写。TF 卡是 T-Flash 卡,被 SD 协会(SDA)采用之后,更名为 MicroSD ,此外移动存储设备还有 U 盘、移动硬盘等等,以下对 SD 和TF 不做严格区分。

ea6c891be1d9ba5b025864b8e80d64cb.png

2.Linux 分区

在树莓派4B 中插入 USB 存储设备后,它将自动被挂载到 /media//下。桌面会显示存储设备的图标,在文件浏览器里可以看到 U盘自动挂载在 /media/pi 目录下,可以用 ls /media/pi/SANDISK32GB/ 命令查看U盘中的文件。

a9b8d9dcca9dd9b223965f9dea5963ea.png

在 Linux 看来,任何硬件设备也都是文件,所有文件都放置在以根目录为树根的树形目录结构中。根目录下的 /dev 目录文件负责所有的硬件设备文件,无论是装系统的 TF 卡还是外接的移动存储设备,都可以在 /dev 目录下查询到。

6e220505722d54cf2e6eb779747f91b2.png

当在 Linux 系统中使用这些硬件设备时,只有将 Linux 本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为「挂载」。如果不挂载,通过 Linux 系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。当 U 盘插入 Linux 后,系统会给 U盘分配一个目录文件(比如 sda1),就位于 /dev 目录下(/dev/sda1),但无法通过 /dev/sda1/ 直接访问 U盘数据。

5037e944c6796f6ecbb81279f099836f.png

使用 lsblk -f 指令查看当系统的分区情况,可以看到装系统的 TF 卡有两个分区:mmcblk0p1 分区挂载在 /boot 目录下,mmcblk0p2 分区挂载在根目录下。插入的 U盘挂载在 /media/pi/SANDISK32GB 目录下面,只有一个分区 sda1。

mmcblk0p1 代表 MMC卡(SD前身)块设备 0(Block0)第一分区(Peer1)

a61547bc87cb9f592038077daff48512.pngNAME : 块设备名。

MAJ:MIN : 显示主要和次要设备号。

RM : 显示可移动设备。0表示非移动设备,1表示可移动设备

SIZE : 块设备的容量大小信息。

RO : 该项表明设备是否为只读。0表示非只读,1表示只读

TYPE :块设备类型,比如disk磁盘,part分区,lvm逻辑卷,rom只读存储

MOUNTPOINT : 设备挂载点。

sdx~ 中用 “sd” 来表示分区所在设备的类型(sd 表示 SCSI 硬盘,hd 表示 IDE 硬盘)。“x” 表示盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘)。“~“ 表示分区,前四个分区用数字 1 到 4 表示,他们是主分区或扩展分区,从 5 开始就是逻辑分区。比如 sdb3 表示为第二个 SCSI 硬盘上的第三个主分区或扩展分区。

3.树莓派挂载

上文中提到在树莓派4B 中插入的 U盘默认挂载在 /media/pi/ 目录下面,可以使用 umount 命令先卸载。

8517d77559eb58a7b722510359e71a6c.png

可以看到 sda1 挂载点变成空的,图形界面里桌面的硬盘图标也消失了,这时候是无法读取 U盘里的文件内容的。我们在 /home 目录下新建一个 upan 的目录

2fc4f5f0393dd1dda6c9050b4d3463cc.png

使用 sudo mount /dev/sda1 /home/upan 将 sda1 挂载到 upan 目录下,这样就可读取 U盘了。

654e77a4a79bab67fc8c14bc8a5f4614.png

并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。

这样挂载的 U盘只有读权限,没有写和执行的权限,sudo chmod +x 也不起任何作用,是无法拷入文件或者执行 U盘里的程序的。

挂载 FAT32 格式的硬盘:vfat 就是 Windows 系统中的 FAT32 格式,mount 本身就能支持,如果想要读写的话,挂载 U盘要加一些参数:sudo mount -o rw /dev/sda1 /home/upan, -o 表示后面跟随选项,rw 是读写,这种写法是 root 用户有读写权限,如果当前用户是 pi,则这个 upan 目录是不能写入的。因为 mount 命令是用 root 用户身份执行的,没有定义用户 pi 的读写权限。sudo mount -o uid=pi,gid=pi /dev/sda1 /home/upan,uid = pi,gid = pi 指定为用户 “pi”,组标识为 “pi”,则用户 pi 可读写。

1cb69489a53e67835a6c2f7cc6a857cb.png

挂载 exFAT 格式的硬盘:如果你的 U盘或移动硬盘使用的是 exFAT 格式,mount 会说不支持。需要安装下 exfat-fuse 软件 sudo apt-get install exfat-fuse。

挂载 NTFS 格式的硬盘:默认挂载 NTFS 格式的硬盘只有只读权限,需要先安装所需软件包 sudo apt-get install ntfs-3g,然后加载内核模块 modprobe fuse ,重新插拔移动硬盘就可以读写了。

4.fstab 自动挂载

用命令行挂载重启后会失效,通过修改 /etc/fstab 可以实现永久挂载。

7415d120e5eec1ead75ccb5b5ad87833.png

fstab 文件结构如下:#

/dev/sda1 / ext4 noatime 0 1

/dev/sda2 none swap defaults 0 0

/dev/sda3 /home ext4 noatime 0 2指系统中设备的名称,可以用 lsblk -f 命令查看,proc 设备是一个虚拟设备,并不在磁盘中真实存在,而仅仅存在于内存中,存储有关进程和系统的信息。

是分区类型,在 Linux 下面有 ext2,ext3,ext4,jfs,jfs2,reiserfs,reiser4,swap 等,在 Windows 下面有 FAT 和 NTFS 等,这里可以设置成 auto。

是相关的安装选项,noatime – 不更新文件系统上 inode 访问记录,defaults – 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async。对 Windows 下的 NTFS 和 FAT 文件系统,还可以设置 uid=(挂载设备的指定用户 id)、gid=(挂载设备的指定用户群组 id)和 umask=(挂载设备的权限屏蔽)等, umask=0000 表示对所有人可读可写可执行。

设置是否让备份程序 dump 备份文件系统。此字段通常设置为 0,禁用检查。

设置启动时文件系统检查的顺序。对于根设备应该是 1,对于其他分区应该是 2,或 0 禁用检查。

我们在 fstab 文件末尾加入’ /dev/sda1 /home/upan vfat defaults,noatime 0 0 ’来实现开机自动挂载 U盘。视你的挂载设备而定, vfat 就是 Windows 系统中的 FAT32 格式,用树莓派挂载移动硬盘做 NAS 一般用 ntfs 格式,不确定类型可以设置成 auto。

有的时候把外接的存储设备拔掉后,开机会无法正常引导进入系统,原因是开机时未找到 fstab 中指定的硬盘而报错。可以设置 nofail 选项,这样外部设备在插入时挂载,在未插入时忽略,启动时若设备不存在直接忽略它而不报错。将命令修改为‘ /dev/sda1 /home/udisk auto defaults,nofail,x-systemd.device-timeout=1,noatime,umask=0000 0 0 ’这样不管 boot 阶段有没有接入移动硬盘,都能正常启动,而且你设置的挂载不会失效。不过这样的话插入树莓派的 U盘在图形界面的桌面上不会有硬盘图标,只能打开文件管理器访问。

5.树莓派磁盘速度测试

安装测试磁盘速度的软件:sudo apt-get install hdparm

查看下三个要测试的磁盘设备:lsblk -f,其中 mmcblk0 为装系统的 TF 卡(ext4 格式),sda1 为外接的闪迪 32GB U盘(vfat格式),sdb2 为外接的东芝 1T 移动硬盘(ntfs)。

3d8fb2ec9f6caca7d41613a8cdcb2010.png

测试本地 TF 卡(ext4 格式)的读写速度:sudo hdparm -Tt /dev/mmcblk0 dd count=50 bs=1M if=/dev/zero of=~/test.img

5845beca8b0bfba0c62ccd0b712d3468.png

测试外接 U盘(vfat 格式)的读写速度:sudo hdparm -Tt /dev/sda1 dd count=50 bs=1M if=/dev/zero of=/meida/udisk/test.img

28b613bb905e44f506eaf35d822bdcdc.png

测试外接移动硬盘(ntfs 格式)的读写速度:sudo hdparm -Tt /dev/sdb1 dd count=50 bs=1M if=/dev/zero of=/media/pi/yingpan/test.img

566880b2d883f0eb021dca7350c7f505.png

从上述三个硬盘读取速度测试可以看出 ntfs 格式的磁盘速度最低,Linux 读写 NTFS 效率差,ext4 格式读写速度能甩 ntfs 几条街。

6.多系统启动

BerryBoot 是一款基于树莓派的启动管理工具,在树莓派上安装 BerryBoot 的 multi-boot manager 可使在一张 SD 卡上实现多系统的选择启动,省去更换不同系统 SD 卡的繁琐。首先是在电脑上安装 BerryBoot 到经过 FAT 格式格式化过的 SD 卡中,软件自带了一些树莓派支持的系统,点击 Add OS 选择相应的系统就自动下载安装了。

5b92d5ab6f84adb9da1435fa68aeaf5f.png

当你安装 BerryBoot 中自带的镜像 Linux 系统版本时只需要点击确认即可。如果你想手动添加系统到 BerryBoot系统启动项中,需要先用 SquashFS 编译这个 Linux 系统并获得它的镜像文件 .IMG,详细过程见这篇文章使用BerryBoot使树莓派支持多系统启动 。多个系统都安装完成之后,树莓派开机后会出现 BerryBoot menu,通过键盘鼠标就可以选择要启动的系统版本了。

以上就是树莓派上关于移动存储设备的挂载相关问题了,都是些 Linux 的基本知识,我只是照着网上各种教程实际在树莓派4B 上操作了一番,分享给大家。下一篇文章中将介绍树莓派的系统备份相关内容,包括全卡备份和压缩备份,感兴趣的点个关注一起学习~

c2ad9c123c4d84295e50d901fd065b58.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值