Saya sedang menulis instalasi otomatis khusus menggunakan AIF (Arch Installation Framework), dan saya perlu mencari sistem file pada partisi yang diberi partisi.
Sejauh ini saya punya ini:
grok_partitions () {
local partitions=
for label in `ls /dev/disk/by-label | grep "Arch"`
do
if [ $label == "Arch" ]
then
mount_point="/"
else
IFS="-" read base mount <<< "${label}"
mount_point="/${mount}"
fi
local partition=$(readlink -f /dev/disk/by-label/${label})
local part_no=$(echo ${partition} | grep -Po '\d+')
local fs=$(parted -mls | grep "^${part_no}" | cut -d: -f5)
partitions+="${partition} raw ${label} ${fs};yes;${mount_point};target;no_opts;${label};no_params\n"
done
# do the swap
if [ -e /dev/disk/by-label/swap ]
then
local partition=$(readlink -f /dev/disk/by-label/swap)
partitions+="$partition raw swap swap;yes;no_mountpoint;target;no_opts;swap;no_params"
else
# if there's no labeled swap, use the first one we find
local partition=$(fdisk -l | grep -m1 swap | awk '{ print $1 }')
if [ ! -e $partition ]
then
echo "No swap detected. Giving up."
exit 1
fi
partitions+="$partition raw no_label swap;yes;no_mountpoint;target;no_opts;no_label;no_params"
fi
echo -n ${partitions}
}
Ini bekerja dengan baik pada mesin saya dengan hanya satu hard drive, tetapi gagal (jelas) ketika berjalan di VM saya berjalan pada LiveCD (LiveCD diambil sebagai drive lain, / dev / sr0).
Saya telah memikirkan beberapa peretasan yang dapat saya coba:
mount $partition; grep $partition /etc/mtab | awk ...
- gunakan
parted -mls
, tapi cabut partisi yang saya pedulikan dengan scripting yang pintar, lalu uraikan seperti yang sudah saya lakukan di script
Apakah ada cara yang lebih baik dan lebih sederhana untuk melakukan ini? Saya sudah memiliki partisi yang saya minati, dan saya hanya perlu menemukan filesystem mereka (dan juga menemukan swap yang tersedia).