मैं एआईएफ (आर्क इंस्टॉलेशन फ्रेमवर्क) का उपयोग करके एक कस्टम स्वचालित इंस्टॉल लिख रहा हूं, और मुझे एक विभाजन दिए गए विभाजन पर फाइल सिस्टम खोजने की आवश्यकता है।
अब तक मेरे पास यह है:
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}
}
यह केवल एक हार्ड ड्राइव के साथ मेरी मशीन पर ठीक काम करता था, लेकिन यह (जाहिर है) विफल रहा जब मेरे VM में एक LiveCD पर चल रहा था (LiveCD को दूसरी ड्राइव, / dev / sr0 के रूप में उठाया जा रहा था)।
मुझे लगता है मैं कोशिश कर सकता हैक के एक जोड़े के बारे में सोचा है:
mount $partition; grep $partition /etc/mtab | awk ...
- उपयोग करें
parted -mls
, लेकिन चतुर स्क्रिप्टिंग के साथ मेरे द्वारा किए गए विभाजन को बाहर खींचो, फिर मुझे पहले से ही स्क्रिप्ट में क्या करना है
क्या ऐसा करने का एक बेहतर, सरल तरीका है? मेरे पास पहले से ही मेरे द्वारा रुचि वाले विभाजन हैं, और मुझे केवल उनके फाइल सिस्टम (साथ ही उपलब्ध स्वैप) को खोजने की आवश्यकता है।