Debian/Grub2: 루트 파티션을 새 드라이브로 이동하시겠습니까?

Debian/Grub2: 루트 파티션을 새 드라이브로 이동하시겠습니까?

루트 파티션을 새 드라이브로 이동하고 해당 드라이브에서 부팅하도록 grub2를 설정하는 방법에 대한 제안이 있는 사람이 있습니까? grub-mkconfig에 내가 원하는 작업을 지시할 행운이 없는 것 같습니다(예: 새 루트에 chroot'int를 입력하면 모든 스크립트가 혼란스러워집니다).

배경저는 헤드리스 저전력 NAS에서 Debian Squeeze를 실행하고 있습니다. 현재 설정은 /켜짐 sda0/boot꺼짐 (CF 카드)입니다. 회전이 지연되므로 별도 sde0의 설정이 필요합니다 . 이제 모든 대형 디스크를 회전시키는 데 사용할 수 있는 오래된 2.5인치 IDE 디스크를 찾았습니다 ./bootsd[a-d]//boot

내가 시도한 것기본적으로 나는 갔다

mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot

그런 다음 시도했습니다.

chroot /mnt/newroot
update-grub

그러나 이것이 실패하면 grub은 루트에게 마운트되었는지 묻습니다. 그런 다음 에서 /mnt/newroot/grub/grub.cfg커널 이미지를 찾으려고 성의 없이 시도한 sdf5다음 grub-install --root-directory=/mnt/newroot /dev/sdf... 그러나 에서 부팅을 시도할 때 grub 구조 프롬프트가 표시되었습니다 sdf.

내 백업 계획은 다시 설치하는 것이므로 추가 질문(이 항목에는 확인 표시가 없습니다): lvm2 및 mdadm 구성을 통과하려면 어떻게 해야 합니까? 모두 파일 시스템에 저장되어 있고 자동으로 검색됩니까? 아니면 직접 가져와야 합니까?

해결책(Maciej Piechotka에게 감사드립니다): Maciej가 지적했듯이 모든 grub 도구가 제대로 작동하려면 올바른 chroot가 필요합니다. 참고로 저는 이렇게 합니다.

janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot

이제 모든 파일이 복사되었습니다(참조:여기복제 전략에 대한 논의). etc/fstab새 루트를 가리키도록 new를 수정합니다 .

janus@nasguld:/mnt/newroot$ diff -u etc/fstab.old  etc/fstab
    -UUID=399b6a6d-c067-4caf-bb3e-85317d66cf46 /     ext3 errors=remount-ro         0 1
    -UUID=b394b614-a977-4860-bbd5-7862d2b7e02a /boot ext3 defaults                  0 2
    +UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 /     ext3 noatime,errors=remount-ro 0 1

마지막으로 새 루트 및 chroot dev에 마운트합니다.sysproc

janus@nasguld:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
janus@nasguld:/mnt/newroot$ sudo mount -t proc none  /mnt/newroot/proc
janus@nasguld:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
janus@nasguld:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on 
janus@nasguld:/mnt/newroot$ sudo chroot .

이제 우리는 보이는 대로 미래 루트로 루트가 변경되었습니다. Maciej에 따르면 호출만 해도 괜찮지 만 grub-install부트로더를 설치하기 전에 update-grub먼저 생성된 내용을 살펴보았습니다 . /boot/grub/grub.cfg자동으로 업데이트되는지 모르시나요?

root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb

답변1

기본 파일 시스템을 마운트하고 chroot하는 동안 파일을 복사/수정합니다. 예:

  • /개발자 ( mount -o bind /dev/ /path/to/chroot/dev)
  • /프로세스( mount -t proc none /path/to/chroot/proc)
  • /시스템( mount -t sysfs none /path/to/chroot/sys)

IIRC는 Grub 2를 아치에 설치할 때, 그리고 Gentoo에 여러 번 설치할 때 저에게 효과적이었습니다. 그런 다음 chroot 이후의 명령은 /path/to/chroot매우 간단합니다.

grub-install /dev/<boot_disk>

lvm2(나는 madm을 믿지만 사용하지 않음)부터 구성이 디스크에 저장됩니다. 장치를 검색하려면 읽어야 하는 몇 가지 구성이 있습니다. 장치가 표준 위치( /dev/sd*또는 /dev/hd*)에 있다고 가정하면 문제가 없습니다.


추신. 나는 실시간 시스템에 대한 간단한 cp를 신뢰하지 않을 것입니다. 왜냐하면 잘못될 수 있는 몇 가지 사항이 있기 때문입니다:

  • 변경 사항 /etc/fstab및 기타 유용한 파일을 잊어버렸습니다.
  • 접근 중 파일이 변경됨
  • 쓰레기 처리( /tmp등)

답변2

chroot 없이 라이브 배포판에서 grub을 설치할 수 있습니다:

grub-install /dev/hda --root-directory=/mnt/guest/

답변3

그런데, Windows와 같은 파티션을 추가하는 경우 grub이 부팅 섹터에 쓰기를 원하지 않지만 컴퓨터가 부팅될 때 grub이 이에 대해 알 수 있도록 하려면 파티션을 다시 스캔하여 터미널에서 생성할 수 있습니다. 세션 아래와 같이 grub_mkconfig 명령을 사용하여 새 grub.cfg 파일을 생성합니다.

CD /부팅/grub

sudo cp grub.cfg ./grub.cfg.old

sudo grub_mkconfig -o ./grub.cfg

이제 현재 Linux 파티션(grub으로 부팅)에서 부팅하면 다른 파티션에 대해 알게 됩니다.

관련 정보