gpart를 사용하여 실수로 부팅 파티션을 삭제했습니다.

gpart를 사용하여 실수로 부팅 파티션을 삭제했습니다.

방금 들어갔어요

gpart delete -i 1 ada0

언제 써야 하나

gpart delete -i 1 ada1

불행하게도 reboot나는 내 실수를 깨닫기 전에 이것을 입력했습니다. 디스크 ada0에는 기본 GPT 레이아웃이 있으며 FreeBSD 10.1 설치 프로그램은 이를 기본 파티셔닝 옵션에 넣습니다.

당연히 시스템은 지금 재부팅되지 않습니다. 그러면 파티션을 다시 추가할 수 있는 방법이 있습니까? 머신을 복원하는 가장 빠른 방법은 무엇입니까? 다시 실행하는 데 많은 시간이 걸리는 시스템에 대한 사용자 정의 변경 사항이 많기 때문에 완전히 다시 설치하고 싶지 않습니다.

답변1

다음이 작동합니다. FreeBSD 설치 디스크를 다운로드하고 단일 사용자 모드로 부팅합니다. 완료되면 다음을 수행합니다.

gpart show ada0

디스크 레이아웃을 설명하는 텍스트를 인쇄해야 합니다. 결과는 다음과 같습니다.

=>       34  500118125  ada0  GPT  (238G)
         34       1024     1  - free -  (512K)
       1058  490732544     2  freebsd-ufs  (234G)
  490733602    8388608     3  freebsd-swap  (4.0G)
  499122210     995949        - free -  (486M)

이제 편집을 위해 GPT를 실행하여 백업할 수 있습니다 gpart backup ada0. 그러면 다음과 같은 내용이 표시됩니다(파티션 1을 삭제했기 때문에).

GPT 128
2    freebsd-ufs      1058 490732544  
3   freebsd-swap 490733602   8388608

출력을 파일에 복사하고 다음과 같이 편집합니다(freebsd-boot 뒤의 숫자는 의 여유 공간 수입니다 gpart show ada0).

GPT 128
1   freebsd-boot        34      1024  
2    freebsd-ufs      1058 490732544  
3   freebsd-swap 490733602   8388608

위의 내용을 이라는 파일에 저장한 경우 newgpt다음은 부팅이 가능한 상태로 GPT를 복원합니다.

gpart restore -F ada0 < newgpt
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0

부팅 코드가 디스크에 그대로 유지되어야 하기 때문에 마지막 명령은 중복되어야 하지만, 테스트하기 위해 중단할 수 있는 시스템이 없기 때문에 만일을 대비해 거기에 넣겠습니다.

관련 정보