AIF (Arch Installation Framework)를 사용하여 사용자 지정 자동 설치를 작성 중이며 파티션이 지정된 파티션에서 파일 시스템을 찾아야합니다.
지금까지 나는 이것을 가지고있다 :
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}
}
이것은 하드 드라이브가 하나 뿐인 내 컴퓨터에서는 제대로 작동했지만 LiveCD에서 실행중인 VM에서 실행할 때 (분명히) 실패했습니다 (LiveCD는 다른 드라이브 / dev / sr0로 선택되었습니다).
나는 시도 할 수있는 몇 가지 해킹을 생각했다.
mount $partition; grep $partition /etc/mtab | awk ...
- 을 사용
parted -mls
하지만 영리한 스크립팅으로 관심있는 파티션을 가져온 다음 이미 scriptt에서와 같이 구문 분석하십시오.
더 좋고 간단한 방법이 있습니까? 이미 관심있는 파티션이 있으며 파일 시스템 (및 사용 가능한 스왑 찾기) 만 찾으면됩니다.