在 Armbian 系统上挂载存储卡
一些 ARM 小主机(比如机顶盒、玩客云主机等)支持插入SD卡,可用来扩展存储空间。Linux 服务器(包括 Armbian 系统)与 Windows 系统不同,系统通常不会自动挂载这些外置的存储卡,需要手动配置才可以。
查看块存储设备 🔗
在服务器上插入 SD 卡后,登录服务器,使用 lsblk
命令列出“块设备”:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.4G 0 disk
mmcblk1 179:16 0 7.3G 0 disk
├─mmcblk1p1 179:17 0 256M 0 part /boot
└─mmcblk1p2 179:18 0 7G 0 part /var/log.hdd
/
mmcblk1boot0 179:32 0 4M 1 disk
mmcblk1boot1 179:48 0 4M 1 disk
zram0 253:0 0 494.2M 0 disk [SWAP]
zram1 253:1 0 50M 0 disk /var/log
zram2 253:2 0 0B 0 disk
从设备的容量确定块设备的名称。由于插入的是 32GB 的 SD 卡,那么可以推断出设备名称为 mmcblk0
。
格式化存储卡 🔗
首先需要将存储卡格式化,创建文件系统。比如 extFAT
文件系统可在 Windows 使用;而 ext4
则只能在 Linux 使用。可根据具体情况选择。
格式化为 exFAT
文件系统 🔗
如果想将存储设备格式化为 exFAT
文件系统,那么可使用 mkfs.exfat
程序。为此,安装 exfatprogs
:
$ apt install exfatprogs
注意:exfat
文件系统不支持文件的所有权(ownership)。因此,chomod
、chown
等命令在 exfat
文件系统是无效的。比如若使用 chown
等命令,就会遇到如下错误:
chown: changing ownership of '****': Operation not permitted
然后格式化存储卡:
$ mkfs.exfat /dev/mmcblk0
exfatprogs version : 1.2.0
Creating exFAT filesystem(/dev/mmcblk0, cluster size=131072)
Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...
exFAT format complete!
再次查看块设备:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.4G 0 disk
└─mmcblk0p1 179:1 0 29.1G 0 part
mmcblk1 179:16 0 7.3G 0 disk
├─mmcblk1p1 179:17 0 256M 0 part /boot
└─mmcblk1p2 179:18 0 7G 0 part /var/log.hdd
/
mmcblk1boot0 179:32 0 4M 1 disk
mmcblk1boot1 179:48 0 4M 1 disk
zram0 253:0 0 494.2M 0 disk [SWAP]
zram1 253:1 0 50M 0 disk /var/log
zram2 253:2 0 0B 0 disk
格式化为 ext4
文件系统 🔗
使用 mkfs
将存储设备格式化为 ext4
文件系统的命令为:
$ mkfs -t ext4 /dev/mmcblk0
挂载存储卡 🔗
使用 mount
命令挂载文件系统。
挂载 extFAT
文件系统 🔗
比如将 extFAT
格式的 /dev/mmcblk0p1
挂载到 /mnt/sd1
(注意,这里挂载的是 /dev/mmcblk0p1
,不是 /dev/mmcblk0
):
$ mkdir /mnt/sd1
$ mount --types exfat --source /dev/mmcblk0p1 --target /mnt/sd1
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
注意这里提示 fstab
已经被修改。根据提示执行:
$ systemctl daemon-reload
挂载 ext4
文件系统 🔗
如果文件系统为 ext4
,那么命令为:
$ mount --types ext4 --source /dev/mmcblk0p1 --target /mnt/sd1
验证 🔗
此时,如果使用 df -h
命令查看文件系统磁盘空间,那么会发现有 SD 卡上的文件系统的磁盘用量了:
$ df -h
...
/dev/mmcblk0p1 30G 288K 30G 1% /mnt/sd1
此时如果重启系统,再次运行 df -h
,那么就会发现:刚才挂载的文件系统不见了。
自动挂载文件系统 🔗
为了能够自动挂载文件系统,需要修改 fstab。
首先,查看文件设备的块属性,得到 UUID:
$ blkid /dev/mmcblk0p1
/dev/mmcblk0p1: UUID="2406-2E03" BLOCK_SIZE="512" TYPE="exfat" PARTUUID="86153984-01"
挂载 extFAT
文件系统 🔗
修改 /etc/fstab
文件,添加一行记录:
UUID=2406-2E03 /mnt/sd1 exfat defaults,user,fmask=111,dmask=000 0 0
这里的 fmask
和 dmask
分别是挂载的文件系统里的文件和目录的权限掩码的八进制取反。000
是 777
的取反,表示任何人都可访问、可执行(打开目录时需要执行权限);111
是 666
的取反,指的是任何人都可以访问,但不能执行。
挂载 ext4
文件系统 🔗
ext4
是 Linux 所使用的文件系统,因此支持文件权限。在 /etc/fstab
加入以下记录:
UUID=2406-2E03 /mnt/sd1 ext4 rw,user,relatime 0 2
验证自动挂载 🔗
在 /mnt/sd1
路径下创建文件,并添加内容。重启设备,再次查看刚刚添加的文件和内容,并使用 df -h
查看文件系统的磁盘用量。确保在设备重启后,系统能自动挂载存储卡。