본문으로 바로가기
반응형

II. BIOS(MBR) 시스템


원래는 BIOS 방식이라고 해야 맞으나, 디스크구조=부팅방식으로 굳어진 점이 있다보니, 이하 입에 익숙한 MBR이라 명하겠다.


http://3jini.tistory.com/212


에서는 리눅스 백업과, EFI시스템에서 리눅스(우분투) 복원에 대해 알아보았다.


EFI시스템에서 만든 베이스 이미지를 이번에는, MBR 시스템에 복원하는 과정을 살펴보겠다.


원본이미지를 다시 보자.

DISK 2에 우분투를 설치했던 이미지로 파티션 사이즈는 10G로 잡았었다. 그리고 이 디스크로 분기하는 부트로더는

DISK 1의 EFI파티션에 존재하고 있다. 




이 이미지를 복원할 MBR 시스템의 PC 구조를 보겠다.

MBR은 알다 시피 GPT 하드의 EFI시스템과 다르게, 

활성화 파티션이 존재해야하고 이 활성화 파티션으로부터 부팅 파일을 읽어들여 부팅하게 된다.


DISK1은 120G의 기존 MBR하드이다. 그리고 EFI 파티션이라 명한 첫번째 파티션은, FAT32 로 포맷된 파티션이며 활성화 된 파티션이라 보면된다. 

그냥 EFI라고 명시했을 뿐이다.



그럼 복원을 해볼까?


복원은 클론질라로 백업한 이미지를 위 DISK2( 1TB) 하드에 복원하면 된다. 물론 1TB 를 풀로 잡을 필요 없고, 원본 이미지의 파티션 크기(10G)  보다는 크게 잡아주면 된다.


복원후 문제가 생긴다 . 당연히.. 무슨 문제일까? 


앞 게시물에 설명했던, 우분투 부팅파일을 DISK1의 부팅파티션(EFI 파티션)에 넣어준다고 부팅이 되지는 않는다.


즉, MBR에서 부팅이 되도록 하려면 2가지 방법을 생각할 수 있다.


1) DISK 2에 MBR부팅 파일을 새로 만들어주고, DISK2를 메인디스크로 잡아서, 부팅하도록 하여, grub2에서 멀티부팅 (리눅스 - 윈도우부팅)


2) DISK1 윈도우의 BCD를 부팅 메인메뉴로 해서 멀티부팅 (grub2를 로딩하도록 하는 방법. (grub2는 그냥은 bcd에 등록되지 않는다) )


일단은 EFI GPT에서 만든 이미지라 MBR에 맞는 우분투 부팅파일을 생성해줘야한다.


====================================================================================================

설명이 길므로 차근차근 해보자.


1. DISK 2에 MBR부팅 파일을 새로 만들어주고, DISK2를 메인디스크로 잡아서, 부팅하도록 하여, grub2에서 멀티부팅 (리눅스 - 윈도우부팅)

1) 부팅파일 생성


참고 사이트. 

https://blog.getreu.net/projects/legacy-to-uefi-boot/

https://zapary.blogspot.com/2014/08/ubuntu-bios-uefi-grub-recovery.html


이부분이 사실 복잡하다. 대개는 부팅파일이 깨졌거나 했을때도 이 방법을 쓴다

리눅스 라이브 USB 로 부팅한다.

터미널을 연다.


자, 여기서

sda 는 DISK1 (윈도우설치된, FAT32-활성 / NTFS 파티션 구조)

sdb 는 DISK2 (리눅스 복원한 )


우분투 파티션 마운트

ubuntu@ubuntu:~$ sudo mount /dev/sdb1 /mnt


라이브시디의 루트전환용 폴더들 마운트

ubuntu@ubuntu:~$ for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done


이부분은 for 구문으로 했지만, 그냥 아래처럼 하나씩 해도 된다.

sudo mount --bind /sys /mnt/sys

sudo mount --bind /proc /mnt/proc 

sudo mount --bind /run /mnt/run 

sudo mount --bind /dev/mnt/dev


/mnt 루트전환 

ubuntu@ubuntu:~$ sudo chroot /mnt/


이제 /mnt는 dev/sdb1 우분투 파티션이 마운트된 상태이다.


마운트한 우분투 디스크에 grub재설치를 해본다.

root@ubuntu:/# grub-install /dev/sdb

bash: root@ubuntu:/#: No such file or directory

root@ubuntu:/# grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. Please specify --target or --directory.


/usr/lib/grub/i386-pc/modinfo.sh 파일이 없다고 한다.


EFI에서 우분투를 설치했기 때문에 사실 /usr/lib/grub/i386-pc/폴더 자체가 존재하지 않는다. /boot폴더도없고 /efi폴더만 존재할뿐이다.



먼저, 라이브 우분투로부터 해당 라이브러리를 일단 다른 하드나 USB로 복사를 한다.

여기서 sda2는 SSD 윈도우 파티션이다.

파일매니저를 열고, 라이브 우분투의 /usr/lib/grub/i386-pc 폴더를 /dev/sda2 에 복사하거나, usb디스크에 복사한다.


cp -R /usr/lib/grub/i386-pc /dev/sda2


그리고 sda2를 chroot의 /mnt로 마운트하고

root@ubuntu:/# root@ubuntu:/# mount /dev/sda2 /mnt


sda2 (윈도우파티션)로 복사했던 i386-pc 폴더를 chroot ( dev/sdb1, 우분투 파티션이다. ) 의 /usr/lib/grub/ 에 복사

root@ubuntu:/# cp -r /mnt/i386-pc/ /usr/lib/grub/


이제 다시 우분투가 설치된 sda 디스크에 grub을 설치한다.

grub-install /dev/sdb


success


그리고 grub을 업데이트함.


root@ubuntu:/# update-grub

Generating grub configuration file ...

Found linux image: /boot/vmlinuz-4.15.0-33-generic

Found initrd image: /boot/initrd.img-4.15.0-33-generic

Found linux image: /boot/vmlinuz-4.15.0-20-generic

Found initrd image: /boot/initrd.img-4.15.0-20-generic

Found memtest86+ image: /boot/memtest86+.elf

Found memtest86+ image: /boot/memtest86+.bin

Found Windows 10 on /dev/sda1

done



추가작업 

gparted에서 우분투 디스크 (통으로 하였음)에 boot flag를 추가해줬다. 혹시나 하여.


그리고 부팅하면 로그인 못하고 쉘로 빠지게 될것이다.

이부분은 앞 게시글에서 언급했던 fstab 수정하는 과정을 거치면된다.


계정 암호를 넣고 엔터


blkid를 치면 efi(boot) 파티션(윈도우 부팅파티션)에 대한 uuid값이 나오는데 8자리 기억을 해두고,

vi /etc/fstab 를 쳐서 이 efi(MBR로 변경했지만 fat32로 그대로 유지됨) 에 대한 uuid를 위에 기억한 8자리로 정확히

변경해준다.


이렇게 해서 EFI 시스템에서 설치했던 우분투 이미지를 손실 없이, 그대로 MBR 디스크를 갖춘 PC에 복원과정을 마쳤다.


2) 부팅디스크 순서 변경

CMOS에서 부팅순서를 DISK2가 먼저 부팅하도록 변경하고 부팅하면 우분투 grub2 멀티부팅메뉴를 만나게 된다.

윈도우로 부팅하려면 우분투 메뉴에서 윈도우 선택하면 된다.


2. DISK1 윈도우의 BCD를 부팅 메인메뉴로 해서 멀티부팅. (grub2는 그냥은 bcd에 등록되지 않는다)


1의 과정을 거쳐서 일단 MBR 부팅 파일을 만들어주는 과정이 반드시 필요하다.


이것이 되었으면, 이제 윈도우 BCD에 우분투 디스크로 부팅하도록 메뉴를 어떻게 만들어주면될까?


grub이면 어렵지 않으나, grub2 이기때문에 EasyBCD 프로그램을 통해 Neogrub2 를 만들어주면된다.


이부분은 유튜브 동영상에 잘 나와있으니 참고 바란다.


https://youtu.be/8CHNVBfzZhQ



다시한번 말하지만, 윈도우에서도 프로그램, 세팅등을 갖춘 봉인(망고)이미지를 만들어 여러타기종에 설치시간을 대폭 줄이게 된다. 

우분투도 우분투 설치과정, 그리고 필요한 프로그램 설치, 세팅등등.. 을 새로이 하려면 너무 많은 시간이 소요된다. 이런 소요시간을 아끼고자, 리눅스 베이스 이미지를 만들고, 타기종 PC에 복원하는 과정을 하는 것이다.


이렇게 MBR 마스터본을 새롭게 만들었으면, 이제 나머지 100대의 MBR PC에 네트워크로 뿌려주자.





반응형