데비안 설치를 성공적으로 프로비저닝했지만 문제가 있습니다. swap
파티션에 레이블을 지정하고 싶지만 설치 프로그램이 해당 label { }
요소를 무시합니다. 파티션이 생성되고 하나가 있지만 UUID
레이블(Windows 등의 다중 시스템 환경)을 통해 설치하고 싶습니다. 다른 태그를 생성하는 데에는 문제가 없습니다.
Debian Stretch를 프로비저닝하고 있습니다.
d-i partman/early_command \
string sfdisk --wipe-partitions always --delete /dev/sda 2 3 4
d-i partman-auto/disk string /dev/sda
d-i partman-auto/init_automatically_partition select biggest_free
d-i partman-auto/expert_recipe string \
lk-part :: \
2000 2000 2000 linux-swap \
$primary{ } \
method{ swap } \
format{ } \
label{ SWAPPART } \
. \
50000 50000 50000 xfs \
$primary{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ / } \
label{ LKLINUX } \
. \
40000 40100 -1 xfs \
$primary{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ xfs } \
mountpoint{ /tmp } \
label{ TEMPFS } \
.
d-i partman/mount_style select label
위 태그가 왜 swap
무시되는지 아시는 분 계신가요?
설치 후 수동으로 다음을 수행합니다.
swapoff /dev/sda2
mkswap --label SWAPPART /dev/sda2
swapon /dev/sda2
라벨이 존재하며 다음을 통해 표시됩니다 blkid
.
안부 인사
카밀
답변1
나는 이 질문이 상당히 오래되었다는 것을 알고 있지만 누군가가 우연히 이 질문을 발견할 경우를 대비해 대답은 다음과 같습니다.
스왑 태그가 무시되는 이유는 설치 프로그램이 태그를 설정할 수 없는 busybox의 mkswap을 사용하기 때문입니다. [이를 확인하려면 네트워크 부팅 설치 프로그램으로 부팅하고 두 번째 콘솔(Alt+F2)로 전환하여 mkswap 바이너리를 확인하세요. ]
해결 방법으로 설치 시 (사전 설치 스크립트를 통해) 스왑 파티션을 다시 포맷하고, UUID를 유지하고, swap, swap1, swap2 등의 레이블을 설정하고, fstab 항목을 수정하는 데비안 패키지 luh-label-swap을 만들었습니다. .
우리 저장소에서 패키지를 찾을 수 있습니다:http://ubuntu.repo.uni-hannover.de/ubuntu/pool/pub/l/luh-label-swap/아래의 관련 코드를 참조하세요.
이것은 매우 우아한 솔루션은 아니지만 우리에게는 효과적입니다. :)
감사합니다, 로버트
관련 부분은 다음과 같습니다.
데비안/포스트인스트
#!/bin/sh
# postinst script for luh-label-swap
set -e
# [..]
case "$1" in
configure)
cp -a /etc/fstab /etc/fstab.dpkg-old
/usr/lib/luh-label-swap/label-swap
echo "modified /etc/fstab; old version saved as /etc/fstab.dpkg-old."
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
/usr/lib/luh-라벨-스와핑/라벨-스와핑
#!/bin/bash
# /usr/lib/luh-label-swap/label-swap
#
FSTAB="/etc/fstab"
IAM="$(basename $0)"
unset NO
swapoff -a
for UUID in $(egrep '^UUID=[0-9a-f-]+\s+[[:alpha:]]+\s+swap' "$FSTAB" \
| sed 's/^UUID=\([0-9a-f-]*\).*/\1/'); do
echo "$IAM: found swap with UUID=$UUID"
DEVICE="$(blkid -U "$UUID")"
if [ -n "$DEVICE" ]; then
LABEL="swap$NO"
test -v $NO && NO+=1 || declare -i NO=1
echo $IAM: mkswap --label "$LABEL" --uuid "$UUID" "$DEVICE"
mkswap --label "$LABEL" --uuid "$UUID" "$DEVICE" >/dev/null 2>&1
echo $IAM: sed -i "s/^UID=$UUID/LABEL=$LABEL/" "$FSTAB"
sed -i "s/^UUID=$UUID/LABEL=$LABEL/" "$FSTAB"
fi
done
swapon -a