ubuntu 라이브CD를 이용해서 오픈수세 grub을 복구한 사례인데, 어떤 리눅스건 이 방식으로 할 수 있는 것 같다.

우선 라이브 부팅을 한 다음 터미널을 열고 아래 명령어를 친다.

sudo -i
fdisk -l

fdisk 결과에서 lvm 하드를 찾는다. 결과물을 복사하진 못했다;;

아래 명령어는 lvm을 인식하도록 하는 것이다. 아래 명령어에서 sda2_crypt는 정해진 이름이 있다. 암호화된 하드의 /etc/crypttab을 보면 나와 있는데, 우분투라면 보통 sd숫자_crypt 형태를 취할 것이다. /dev/sda2가 암호화한 하드고 우분투를 사용하고 있다면 이름을 sda2_crypt라고 붙이자. 아래 명령어를 입력하고 나면 lvm 암호를 입력하라고 나온다. 암호를 친다.

cryptsetup luksOpen /dev/sda2 sda2_crypt

아래 절차를 따라 암호화 볼륨을 마운트한 뒤 /etc/crypttab을 살펴 보면 sda5_crypt UUID=00000000-0000-0000-0000-000000000000 none luks,discard라는 식으로 씌어 있는데, 맨 앞에 있는 것이 볼륨 이름이다. 이 이름을 알아낸 뒤 마운트를 해제하고 다시 마운트를 해야 할 수도 있다. 이 때 우선 마운트를 모두 해제한 뒤 럭스클로즈 명령을 사용한다.

vgchange -an system-mytory 
cryptsetup luksClose sda2_crypt

이제 볼륨그룹 스캔을 한다.

apt-get install lvm2
vgscan

결과물은 아래와 같다. 안 나오면 -v 옵션을 붙여 봐라.

Found volume group "system" using metadata type lvm2

결과물에 보이는 “system”이 lvm의 볼륭그룹 이름이다. 아래 명령어를 친다.

vgchange -ay system

이제 마운트를 해야 한다. 볼륨 그룹 이름은 아래 명령어로 볼 수 있다.

ls /dev/mapper

내 경우는 아래처럼 나왔다.

control    crypt    system-mytory    system-swap

그러면 system-mytory를 마운트하자.

mount /dev/mapper/system-mytory /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount /dev/sda1 /mnt/boot

/dev/sda1은 부트 파티션이다. 각자 자신의 부트 파티션을 적어 주면 된다. grub을 복구하려면 부트파티션이 마운트돼 있어야 하니.

dev, proc, sys는 지금 라이브 시디로 부팅해서 얻은 정보를 마운트해서 사용하려는 것이고.

이제 마운트를 다 했으니 root를 변경한다.

chroot /mnt

이후엔 ubuntu, opensuse 각각의 grub 복구 명령을 쳐서 하면 된다. 오픈수세의 경우

grub2-install /dev/sda

명령어로 했다. /dev/sda는 당연한 말이지만 자신의 장치를 가리켜야 하고.

위 명령을 친 후

exit
reboot

하니까 완료.

하아~ 길었다.

다른 팁 1

리눅스 커널을 다시 설치해야 하는 경우도 있었다. 이런 경우 아래 명령어를 사용한다.

initramfs-update -u -v -k all

다른 팁 2

몇 번 하다 보니 dns 해석을 못하는 경우도 발생했다. 그러면 apt 명령어로 프로그램을 설치할 수가 없어서 일이 진행이 안 됐다. 인터넷 자체는 연결돼 있었으므로 /etc/hosts 파일에 우분투 업데이트 사이트의 ip를 적어 줘서 해결했다.