윈 도 우 UEFI 전용 PC에서 MS-DOS 프로그램 실행이 가능한가요?
2020.09.20 21:18
질문 그대로, 레거시(MBR) 전용에서 실행 했었던 MS-DOS ( .img) 파일이 있습니다.
EFI에서는 도스모드가 NTFS 파티션 및 MS-DOS 프로그램이 실행 안되는걸로 알고 있는데 가능한 방법이 있나요?
PC자체에서 EFI 만 지원하는 전용 노트북 입니다.
바이오스에서 레거시를 지원하는 노트북에서 MS-DOS를 들어가는 방법이 있을지 궁금합니다.
가능한지 아에 불가능한건지...?
댓글 [4]
-
녹색조각 2020.09.20 23:21 -
kernel 2020.09.20 23:49
efi는 롬 바이오스에서 fat 파일 시스템 모듈을 갖고 있으므로 가능 합니다.
다만 efi 부트 모듈 프로그래밍을 할줄 알아야 해요.
efi 부트 모듈을 프로그래밍해서 만들어서 fat 파티션으로 바인딩 하게 해주면 됍니다.
rufus 프로그램이 ntfs 파일시스템이 지원되지 않는 efi 시스템에서 ntfs 파일시스템 모듈을 만들어서 바인드 해주는 식으로.
64bit efi 롬바이오스는 efi 부트모듈 로드시 64비트 롱 모드로 cpu 모드가 전환되기 때문에
리얼모드로 전환하는 코드를 구현해 줘야 하고.
Visual Stduio C++ 컴파일러 이용하면 efi 모듈을 컴파일 해서 만들 수 있음.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=free&no=27513
-
DarknessAngel 2020.09.21 08:49
그 이전의 문제입니다
일단 DOS로는 SATA의 디스크 컨트롤러 인식부터 문제가 됩니다 (이걸 잡아주는 드라이버용 소프트가 있는데, 고대 유물이라 CSM이 삭제된 (아마 8세대 이상) 시대의 보드랑 호환이 안 됩니다) (이것만 문제가 되는게 아니라 Skylake이후 EHCI가 삭제됨에 따라 PS/2를 제외한 방식의 HID가 사용 불능인등 산넘어 산이라 보면 됩니다)
이어서 DOS자체가 Legacy인 A20게이트등을 필수로 요구합니다 (이걸 추가할려면 BIOS를 뜯어고쳐서 CSM모듈을 집어넣는 수준의 대개조를 해야 하고, 메뉴가 없으므로 EFI Shell에서 nvram을 건드려서 수동으로 값을 줘야 합니다)
위의 내용이랑 중복이지만 DOS (가장 최근까지 업데이트해주던 FreeDOS등을 포함)는 EFI부트를 위한 어떤 모듈도 가지고 있지 않습니다 (이걸 되게 만든다는건 기존의 DOS와는 완전히 다른 겉만 똑같은 호환성조차 없는 다른 OS를 만든다는 의미입니다)
그리고 직접 적으신대로 보통 보드의 EFI는 64비트만 지원하므로 64비트 기반으로 만들어야 하는데, 그건 단순히 컴파일러를 바꾸는 수준이 아닌 코드를 전면적으로 다 뜯어고치고, DOS처럼 직접 하드웨어를 제어하는경우 구조적 재설계까지 해야하는 대단위 작업이 됩니다 (DOS는 com 1개밖에 안 되는 소규모 소스가 커널및 기본 드라이버등을 다 포함하는 괴랄한 구조라 손되기 매우 까탈스러움)
-
DarknessAngel 2020.09.21 08:42
애초에 CSM이 없으면 어떤 DOS도 부트되지 않습니다
포기하세요
랄까 부트되더라도 디스크 컨트롤러부터 시작해서 제대로 잡히는게 없다고 봐주세요
PC에서 Legacy(MBR)를 지원하지 않으면 해당 방식으로 부팅이 불가능하며, 더욱이 최신 PC에서 네이티브로 MS-DOS를 돌리는 것도 거의 불가능합니다.
꼭 돌리셔야한다면, 구형 PC를 구하셔서 네이티브로 돌리시거나 VMware/VirtualBox/DosBox 등을 활용해 가상 컴퓨팅 방식으로 사용하시기 바랍니다.