AIF (Arch Installation Framework) kullanarak özel bir otomatik yükleme yazıyorum ve bölüm verilen bir bölümdeki dosya sistemini bulmam gerekiyor.
Şimdiye kadar bu var:
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}
}
Bu, tek bir sabit sürücüyle makinemde iyi çalıştı, ancak LiveCD üzerinde çalışan VM'imde çalışırken (açıkça) başarısız oldu (LiveCD başka bir sürücü olarak alındı, / dev / sr0).
Deneyebileceğim birkaç hack düşündüm:
mount $partition; grep $partition /etc/mtab | awk ...
- kullanın
parted -mls
, ancak akıllı komut dosyalarıyla önem verdiğim bölümü çekin, sonra zaten komut dosyasında yaptığım gibi ayrıştırın
Bunu yapmanın daha iyi ve daha basit bir yolu var mı? Zaten ilgilendiğim bölümler var ve sadece dosya sistemlerini bulmam gerekiyor (ayrıca kullanılabilir takas bul).