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를 적어 줘서 해결했다.
댓글 남기기