linux 自动挂载SD卡可用分区

zrfyljdw  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(178)

| 可用分区|分区大小| Size of Partition |
| --|--| ------------ |
| 数据块类型|数据块0 p1:30兆字节,数据块0 p2:|31千兆位 31Gb |
| 数据块0 p1|数据块大小:31 Gb| mmcblk0p1: 31Gb |
我使用的是Linux系统,我需要在 Boot 过程中自动挂载最大的可用SD卡分区块。我可以挂载一个特定的分区,例如。/dev/mmcblk 0 p2中的值,方法是调整/etc/fstab。但这不工作,如果我改变了SD卡的类型,例如。使用B型SD卡代替A型SD卡。
是否有一种方法可以自动挂载最大的可用分区块,而不考虑所使用的类型?.
此处使用类型仅用于说明目的。基本上类型A是一个格式化的SD与刻录的图像,而类型B是新鲜的新SD卡。
任何反馈或解决方案都将有很大帮助。谢谢大家。

brc7rcf0

brc7rcf01#

我做了一个脚本和服务来实现它,因为我对这个主题很感兴趣。
该脚本选择/dev/sdb上最大的分区,因此如果您的设备有另一个标识,则必须更改它以反映您的env。

我的环境

  • VirtualBox上的Ubuntu服务器
  • 8 GB U盘,带2个分区

脚本

路径:/opt/usb_mount_script.sh

#!/bin/bash

partition="/dev/$(lsblk -x size -i -n | grep -Po 'sdb[0-9]+.*' | tail -n 1 | cut -d ' ' -f 1)"

sudo mount "$partition" /mnt/usb_largest_partition

exit 0

字符串

说明

  • lsblk -x size -i -n =>列出所有分区,按大小排序,ASCII模式,无标题
  • grep -Po 'sdb[0-9]+.*' =>按设备sdb筛选分区
  • tail -n 1 =>获取最后一行
  • cut -d ' ' -f 1 =>获取分区名称

服务

路径:/etc/systemd/system/test.service

[Unit]
Descriptionn=mount largest partition at boot time
After=mnt-wibble.mount

[Service]
Type=simple
ExecStart=/opt/usb_mount_script.sh

[Install]
WantedBy=multi-user.target

设置

  • 创建服务
  • 创建脚本
  • 允许在脚本上执行:sudo chmod +x usb_mount_script.sh
  • 创建挂载目录:mkdir /mnt/usb_largest_partition
  • 安装服务:sudo systemctl enable test
  • 使用systemctl start test手动运行服务
  • Boot 你的系统与sd卡/usb插入

相关问题