我正在创建一张 Live CD,它将访问机器上所有物理连接的磁盘。无需用户干预,我需要找到并安装所有可以安装的驱动器。我还需要能够处理磁盘是否使用 LVM 并安装每个卷组。
答案1
以下是我找到并挂载所有可用磁盘的方法。此脚本还将跟踪所有失败的挂载(在我的情况下也需要它,虽然不是问题的一部分,但对其他人可能有用)。
在这里我扫描所有分区/proc/partitions
并尝试挂载我找到的每个分区。扫描并激活 LVM 分区后,它们也将列在此文件中。
# Scan for all volume groups
lvscan
# Activate all volume groups
vgchange -a y
# Get all partitions (-n+3 skips first 3 lines since they do not contain partitions)
# Also skip partitions that are loop devices which is actually the ISO cd itself
all_partitions=$(tail -n+3 /proc/partitions | awk '{print $4}' | grep -v loop)
# Array of failed mounts
declare -a failed_mounts=()
# Mount each partition to /mnt/{partition name}
for partition in ${all_partitions}; do
mountdir=/mnt/${partition}
mkdir -p ${mountdir}
mount /dev/${partition} ${mountdir} &>>${INIT_LOG}
if [ $? -ne 0 ]; then
echo "Failed to mount ${partition}"
rm -rf ${mountdir}
failed_mounts+=(${partition})
fi
done
这可能依赖于或不依赖于发行版,但由于我将其集成到实时 CD 中,因此它不必独立于发行版。
答案2
仅 LVM 部分
首先激活所有卷组:
vgchange -a y
然后
lvdisplay -c | sed -e 's/ //; s/:.*//'
应该会为您提供已激活的 LVM 卷列表。它们应该是以下形式/dev/VGNAME/LVNAME
,您现在可以使用它来根据需要创建挂载点。