내 장치에 새 OS를 플래시하고 있는데 프로세스가 완료되면 부팅할 수 없습니다. 그러다가 디스크를 확인해보니 이상한 점을 발견했습니다.
크기는 약 120GB여야 하지만 도구마다 서로 다른 디스크 크기를 보고합니다.
그래서 나는 다음과 같이 결정했습니다.
dd if=/dev/zero of=/dev/sda
그러나 결과는 거의 같습니다.
그리고 lsblk
:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 1 115.2G 0 disk
├─sda1 8:1 1 243M 0 part
└─sda2 8:2 1 2.2G 0 part
그리고 fdisk
:
$ fdisk -l /dev/sda
Disk /dev/sda: 7.66 GiB, 8225689600 bytes, 16065800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xaeaa381a
그리고 cfdisk
:
Disk: /dev/sda
Size: 7.66 GiB, 8225689600 bytes, 16065800 sectors
Label: dos, identifier: 0xaeaa381a
Device Boot Start End Sectors Size Id Type
>> Free space 2048 16065799 16063752 7.7G
하드웨어에 대한 경험이 없습니다. 따라서 디스크는 여전히 ~120G에 있을 것입니다.
여유 공간을 되찾으려면 어떻게 해야 합니까?
답변1
"새 운영 체제를 장치에 플래시"한다는 것은 파티션 테이블을 포함하여 전체 디스크 이미지를 쓰는 것을 의미합니까?
물론 dd if=/dev/zero of=/dev/sda
DOS 유형 파티션 테이블을 덮어써야 하지만 나중에 디스크 재검색을 트리거하지 않으면 시스템은 여전히 이전 파티션 테이블의 정보를 사용합니다.
캐시된 파티션 테이블 정보에는 이미지가 생성된 원본 디스크의 크기도 포함되어 있으므로 바보 같은 fdisk
도구 cfdisk
입니다. 반면, lsusb
디스크의 실제 크기를 살펴보고 파티션 테이블에 보고된 전체 크기는 무시하세요.
partprobe /dev/sda
가능한 경우 둘 중 하나를 시도하십시오 echo 1 > /sys/block/sda/device/rescan
(두 명령 모두 루트 권한이 필요함).
이미징 작업 후 디스크의 전체 크기를 식별하는 등 기존 파티션 테이블을 비파괴적으로 업데이트해야 하는 경우 이 growpart
도구가 아마도 가장 쉬운 방법일 것입니다.