J'écris une installation automatisée personnalisée en utilisant AIF (Arch Installation Framework), et j'ai besoin de trouver le système de fichiers sur une partition donnée une partition.
Jusqu'à présent, j'ai ceci:
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}
}
Cela a bien fonctionné sur ma machine avec un seul disque dur, mais cela a échoué (évidemment) lors de l'exécution dans ma machine virtuelle fonctionnant sur un LiveCD (le LiveCD était récupéré comme un autre lecteur, / dev / sr0).
J'ai pensé à quelques astuces que je pourrais essayer:
mount $partition; grep $partition /etc/mtab | awk ...
- utiliser
parted -mls
, mais retirez la partition qui m'importe avec un script intelligent, puis analysez comme je le fais déjà dans le scriptt
Existe-t-il une manière meilleure et plus simple de procéder? J'ai déjà les partitions qui m'intéressent et j'ai seulement besoin de trouver leurs systèmes de fichiers (ainsi que de trouver les swaps disponibles).