간단히 말해서 부팅 시(내장형 시스템) 이 작업을 자동으로 수행해야 합니다.
우리 엔지니어들이 이미지를 생산 장비에 플래시할 것입니다. 이러한 이미지에는 작은 파티션 테이블이 포함됩니다. 부팅 시 디스크에서 사용 가능한 모든 공간을 사용하려면 마지막 파티션(#3)을 자동으로 확장해야 합니다.
이것이 디스크의 여유 공간을 보면 알 수 있는 것입니다.
> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 25.3MB 24.2MB fat16 primary legacy_boot
25.3MB 26.2MB 922kB Free Space
2 26.2MB 475MB 449MB ext4 primary
3 475MB 1549MB 1074MB ext4 primary
1549MB 32.0GB 30.5GB Free Space
파티션 3을 N(30.5GB)바이트로 확장해야 합니다.
메시지를 표시하지 않고 이 단계를 자동화하려면 어떻게 해야 합니까? 이는 세 번째 파티션 이후 여유 공간의 동적 크기와 함께 사용해야 합니다.
답변1
parted 스크립트를 올바르게 작성할 수 없었기 때문에(파티션이 마운트되었기 때문에 확인을 요청했는데 이해하지 못했거나 내가 찾은 다른 답변과 -1s
반대됨 100%
) 방금 알아냈습니다.성장 부분 도구이것이 바로 그 일입니다.
사용법은 간단합니다( growpart /dev/sda 3
then resize2fs /dev/sda3
또는 사용된 파일 시스템 유형에 대한 다른 적절한 명령).
데비안과 우분투에서는 다음과 같이 패키지되어 있습니다.클라우드 게스트 유틸리티.
답변2
현재 버전에서는 parted
분할 resizepart
에 작동해야 합니다( parted
이해 100%
또는 유사한 것 , 후자는 명령줄에서 옵션 구문 분석을 중지하는 -1s
데에도 필요함 ). 정확한 값을 확인하려면 , 를 --
사용할 수 있습니다 unit s
. 그런 다음 파일 시스템이 나옵니다.print free
resize2fs
이전 버전에는 파티션과 파일 시스템의 크기를 한 번에 조정하는 명령이 parted
있었으며 .resize
vfat
Kobo e-reader 수정에서는 이것을 사용하여 내부 메모리의 세 번째 파티션 크기를 최대로 조정합니다. (맹목적으로 네 번째 파티션과 msdos 테이블 또는 이와 유사한 것이 없다고 가정합니다.)
start=$(cat /sys/block/mmcblk0/mmcblk0p3/start)
end=$(($start+$(cat /sys/block/mmcblk0/mmcblk0p3/size)))
newend=$(($(cat /sys/block/mmcblk0/size)-8))
if [ "$newend" -gt "$end" ]
then
parted -s /dev/mmcblk0 unit s resize 3 $start $newend
fi
/sys/block/.../
따라서 커널이 지원하는 경우 값을 얻을 수도 있습니다. 그러나 parted
해당 명령은 제거되었으므로 이제 파티션을 확장하기 위해 파일 시스템이 제공하는 도구 (예: ) 와 함께 파티션을 확장하려면 resize
두 단계를 수행해야 합니다 .resizepart
resize2fs
ext*
답변3
올바른 방법은 parted에 백분율 개념이 있다는 사실을 활용하는 것입니다. 그래서
parted /dev/sda resize 3 100%