본문 바로가기

Windows/Windows

[10] 윈도우 부트로더가 깨졌을 때, 기타 문제 발생 시 usb가 없다면 네트워크로

사실 이 포스팅을 하게 된 계기는 오늘 새벽 내 하드디스크 한 장이 보드가 나가버리는 일이 발생했습니다.

그런데 예전에


하드디스크에서 윈도우 설치, 2012/11/07 - [Windows/VHD] - VHD를 사용하는데 복구시 마다 명령어 입력이 귀찮을때


 등 실험하느라 부트로더를 HDD로 옮기고 SSD는 여러번 포멧을 거치며 기존 부트로더는 삭제되었는데, 하필 보드가 나간 하드가 부트로더가 들어있는 하드였...네요..



운명하신.... 시게이트 바라쿠다 2테라..


내 포트폴리오가 들은 하드인데.. 그건 업체 맡기면 된다지만 당장 부팅을 해야 과제도 외주도 작업할 거 아닌가...??


문제는 USB가 없었습니다.


평소에 시놀로지 만만세를 외치고 HDD에 윈도우 이미지 올려놓아서 usb의 필요성을 느끼지 못했던 것에 대해 후회가 밀려오지만 뭐... 이제와서 땅 파면 안나오잖아요..?


이 때 예전에 Windows Server 2012 R2 운용 당시 윈도우 배포 서버를 만졌던 기억이 나서 일반 데스크톱도 PXE 서버 구성이 되지 않을까 하고 찾아봤습니다.


마침 저는 같은 네트워크 안에 다른 pc가 무려 두 대! 나 있기 때문에 네트워크로 윈도우 복구를 해봤습니다.


TFTPd32 / 64(바이러스 사이트라 나오나 문제 없습니다.)


Tiny PXE Server ( 추천)


사실 저는 둘 다 실험해봤고 아랫것이 더 좋다고 판단하여 추천 드렸습니다.


TFTPd32는 부트 이미지들을 커널레벨부터 손수 찾아서 넣어주고 설정해야하는 반면에 Tiny PXE Server(이하 tps)는 커널 파일들이 패키지로 종류별로 전부 들어있습니다.



또 부팅시에 사용한 이미지가 있는데 윈도우 10 은 어째서인지 WinPe로 100% 복구가 불가능하거나, WinRe iso 파일이 없습니다.


대부분의 포스팅을 보면 WinRe를 직접 USB에 굽는 방법만 나와있을 뿐 그 iso 파일은 없었습니다.


그런데 Kyhi 라는 유저가 Windows 10 용 Recovery Tool Image 파일을 제공해주셨습니다. 박수 짝




Windows 10 Recovery Tools - Bootable Rescue Disk


자세한 파일 구성은 위 링크를 통해서 확인하시고 저는 바로 설명하겠습니다.


먼저 주의 사항은 두 프로그램 모두 iso 파일이 3기가 정도를 넘어가면 안됩니다.


TFTPd의 경우는 아예 파일을 보내주지 않고, tps는 일정 용량(3기가 추정)이 넘어가면 메모리 에러가 발생합니다.


제 생각엔 둘 다 iso를 위해서는 memtest를 커널로 사용하는데, 이 커널이 읽을 수 있는 최대 메모리가 3.x 기가로 제한되는 것같습니다.


바로 32비트 윈도우의 메모리 제한량과 같죠..


그래서 윈도우를 새로 설치하거나 복구할 때 윈도우 이미지를 직접 불러올 수가 없었습니다.


방법은 두 가지 있는데, 


1. PXE 서버에서 네트워크 공유(SMB)를 통해 파일을 당겨오는 방법.

2. 우선 부팅 후 브라우저를 통해 새로 내려받아 설치하는 법.


애초에 1번의 경우 PXE 자체가 같은 서브넷 안에서 동작하기 때문에 (ip 할당 및 PXE 요청을 브로드캐스트로 요청함) 언제나 가능한 기능이고, 2번의 경우는 pxe 서버로 쓰는 컴퓨터에 비밀번호가 없거나 걸기 싫은 경우, SMB가 차단된 경우 사용할 수 있는 방법입니다.


1번은 그저 아무 iso 마운트 프로그램이나 (윈10은 기본 내장) 가져다가 iso를 시디롬으로 마운트하고, 그 시디롬을 통째로 공유하면 됩니다.


2번은 뭐 알아서.. 내려받으시면...




TFTPd 설정


압축을 풀면 아래와 같이 파일이 있습니다.


여기서 각 값을 아래와 같이 수정합니다.

IP Pool start address : 본인 dhcp 대역 내에서 알아서.. 대게 iptime은 192.168.0.2 zio나 신형 kt허브는 172.30.1.1, 구형 kt허브나 기타 브랜드는 10.0.0.2로 입력하면 됩니다.

Size of pool : 10보다만 크게 해주세요.

Boot File : pxelinux.0 (추후 설명)

Def. router : 공유기

Mask : 본인 아이피 시작 192.168 -> 255.255.255.0, 172.30 -> 255.255.255.0 또는 255.255.0.0, 10.0 -> 255.255.255.0 인데 가끔 진짜 이상하게 이것을 255.0.0.0 하는 공유기가 있음.. 공유기가...


그리고 TFTP 탭에서 PXE Compatibility 체크하시면 됩니다.

체크하는 이유는 일부 iso 부팅이 이 옵션 없이는 부팅이 안됩니다.


pxelinux.0은 Kernel.org 의 syslinux에 있습니다.


Syslinux


4.04 버전이나 3.86버전을 내려받아 압축을 풀고(제가 테스트해본건 저 두버전)

3.86기준

core -> pxelinux.0

com32 -> menu -> menu.c32


그리고 pxelinux.cfg 폴더를 만들고 그 아래에 Default 파일을 만들고 아래 내용과 같이 본인 파일에 맞춰 적습니다.


DEFAULT menu.c32

PROMPT 0

ALLOWOPTIONS 0

TIMEOUT 100


MENU TITLE PXE Boot Menu


LABEL local

MENU LABEL Local Boot

MENU DEFAULT

localboot -1


LABEL winpe_iso1

MENU LABEL WinPE (Memdisk)

KERNEL memdisk

append iso raw initrd=iso/winpe10.iso




TPS 설정


tps는.. 애초에 다 준비가 되어 있습니다.

여러분들이 해야 할 것은 뭐다..? iso 구해넣고 메뉴 추가하고 설정하고 끝..



좀전에 tftpd에서 본 모양이죠? 척척 넣습니다.


Boot File의 Filename은 설치 폴더 아래에 files 안에 있으니 찾아보시면 됩니다.


다른 커널을 쓰더라도 이 폴더를 잘 보시면 이미 다 들어 있습니다.. 네..


이제 files/iso에 파일을 넣습니다.

iso는 WinPe, Re, 뭐 기타 3기가 정도만 안넘으면 다 가능합니다.


다 넣으셨으면 files/pxelinux.cfg/default 열고 아래와 같이 수정합니다. 위에거와 방법이 같죠? 같은 커널이니까요..


LABEL winpe_iso1

MENU LABEL WinPE (Memdisk)

KERNEL memdisk

append iso raw initrd=iso/winpe10.iso


다 하셨으면 위에 online을 한번 offline으로 껐다 다시 켜주시구요.


이제 메인보드에서 PXE 설정만 하면 됩니다.


PXE 설정은 다음 글에서 다루겠습니다. 


별다른 내용은 없고 메인보드에서 PXE 를 찾아 on 시키고 부팅 순서에 넣어주시면 서버에서 찾아서 알아서 부팅합니다.