[만능 USB를 만들어 보자!] 13편 - GRUB4DOS의 테마, GFXMenu

Multibooting/GRUB4DOS


이번 포스팅에서는 GRUB4DOS의 테마라고 할 수 있는 GFXMenu에 대해 알아보도록 하겠습니다. 지난 편에서 설명한 SPLASHIMAGE 명령어로는 기존 GRUB4DOS의 틀 안에서 배경화면을 바꾸는 정도만 가능했었는데요, 이번에 알아볼 GFXMenu는 GRUB4DOS의 UI 자체를 바꾸어 버릴 수 있는, GRUB4DOS의 테마라고 보시면 됩니다.

 

GFXMenu의 구조



GFXMenu 파일은 기본적으로 이런 단일파일 구조를 띄고 있습니다. 하나의 파일처럼 보이지만 실제로는 내부에 여러 파일들을 포함하고 있는 압축파일인데요, 반디집으로 열어보도록 하겠습니다.



이런, 반디집으로는 열리지 않는군요. 이번에는 7-ZIP으로 열어보겠습니다.



7-ZIP에서는 성공적으로 열리는데요, 무슨 포맷인지 확인해볼까요?



네, GFXMenu는 CPIO라는 포맷으로 압축되어있습니다. 주로 UNIX 시스템에서 사용하는 포맷인데요, 윈도우 환경의 압축 프로그램에서는 대부분 지원되지 않는 포맷입니다. 일단 7-ZIP으로 압축을 풀어보도록 하겠습니다.



여러 파일들이 보이는데요, 먼저 back.jpg 파일은 GFXMenu의 배경으로 사용되는 JPG 파일이고요, 그 외에 폰트 파일인 16x16.fnt 파일, 그리고 GFXMenu의 설정 파일인 GFXBoot.cfg 파일이 보입니다.

여기서 핵심은 init 파일입니다. 바이너리 파일인데요, 바로 이 init 파일이 GRUb4DOS에 의해 로드되어 구동되는 하나의 프로그램 역할을 수행합니다. 하지만 편집을 하려면 무려 어셈블리 언어(;;)를 사용해야 하기때문에 이 포스팅에서는 gfxboot.cfg 수정법과 배경화면, 폰트 변경법 정도만 설명하도록 하겠습니다. 

(지난 편에서 잠깐 언급했듯이 해외 포럼에서 이 init 파일이 바이너리라는 것을 이용해서 단순한 프로그램을 구동시킨 사례도 있었습니다. 물론 제대로 된 운영체제 위에서 구동되는 것이 아니기 때문에 자원 할당이 거의 되지않아 많은 제약이 있지만요...)


GFXMenu Tools로 GFXMenu 수정하기


앞서 언급했듯이 GFXMenu는 CPIO 포맷입니다. 따라서 윈도우 환경에서는 편집하기에 많은 제약이 따를 수 밖에 없는데요, 7-ZIP을 사용하면 되지만 이번 포스팅에서는 윈도우 포럼의 사랑인님이 만드신 GFXMenu Tools를 사용하도록 하겠습니다.




다운로드하신 파일의 압축을 풀면 여러 폴더들과 grubmenu.exe가 보이는데요, GFXMenu Tools의 모든 작업은 work 폴더에서 진행됩니다. work 폴더 안에는 압축이 풀린 GFXMenu가 들어있는데요, 모든 편집이 끝난뒤 다시 압축됩니다. grubmenu.exe를 실행시켜 주세요.



GFXMenu Tools를 처음 실행시키면 사용할 기능을 묻습니다. 전편에서 알아본 SPLASHIMAGE도 만들수 있는데요, 이번 편에서는 GFXMenu를 만들것이므로 '1'을 입력하신 뒤 엔터를 눌러주세요.



GFXMenu를 선택하시면 이렇게 GFXMenu를 편집할 수 있는 메뉴가 출력되는데요, 여기서 주로 사용되는 기능들은 3번, 4번, 5번, 6번입니다. 원하는 메뉴의 번호를 입력하시고 엔터를 누르시면 해당 메뉴가 선택되고요, 이름만 보셔도 대충 아시겠지만
    '3. 이미지 만들기'는 GFXMenu의 배경 이미지를 바꾸어주고,
    '4. 한글 폰트생성'은 TTF 폰트를 GFXMenu의 폰트 포맷으로 변환해 줍니다. 가장 많이 사용하게될
    '5. 환경변수 수정'은 앞서 GFXMenu의 설정 파일이라고 했던 gfxboot.cfg를 편집해줍니다. 그리고 편집이 전부 완료된뒤
    '6. 압축'을 선택하시면 다시 CPIO로 압축됩니다.


1. 배경화면 바꾸기


저는 먼저 배경화면을 바꿔보도록 하겠습니다. '3. 이미지 만들기'를 선택해주세요.



image 폴더에 변환할 이미지파일을 넣어 달라네요. 저는 지난 편에서 사용한 배경이미지를 그대로 사용하겠습니다. 윈하시는 이미지 파일을 image 폴더에 복사해 주시고 아무 키나 눌러주세요. (단, JPG 포맷이어야 하며, 작업 전에 미리 800x600의 해상도로 변환해 놓으시는 것을 추천합니다.)



image 폴더 안의 모든 파일들이 출력되는데요, 변환할 이미지 파일명을 적어줍니다. (확장자는 빼주세요 ^^)



변환이 완료되었습니다. work 폴더를 확인해 보시면 back.jpg 파일이 선택한 이미지로 바뀌어 있는 것을 보실 수 있습니다.


2. 폰트 변경하기


이번에는 폰트를 변경해보도록 하겠습니다. '4. 한글 폰트생성' 메뉴를 선택해주세요.



변환할 폰트의 파일명을 입력하라고 나오는데요, 윈도우에 설치된 폰트만 변환이 가능합니다. 탐색기를 열고 C:\Windows\Fonts (또는 윈도우가 설치된 디렉터리\Fonts) 를 열어주세요.



여기서 원하는 폰트를 찾아준 뒤 바탕화면이나 아무 폴더로 복사해줍니다.



복사하시면 폰트의 파일명이 드러나는데요, 나눔고딕을 사용할 제 경우는 NanumGothic이네요.



찾은 폰트 파일명을 입력하시고 엔터를 입력하시면 폰트 크기를 묻습니다. 저는 기본값인 17로 해주었지만 원하는 크기를 입력하시면 됩니다.



아무키나 눌러주세요.



이제 이런 문자들이 출력됩니다. 폰트를 변환하는 과정인데요, 약간의 시간이 소요되니 느긋히 기다려주시면 됩니다.



폰트 변환이 완료되면 자동으로 메인 화면으로 돌아가는데요, work 폴더안을 보시면 변환된 16x16.fnt 파일을 보실 수 있습니다.


3. gfxboot.cfg 수정하기


이제 마지막으로 GFXMenu의 설정 파일인 gfxboot.cfg를 수정할 차례입니다. '5. 환경 변수 수정'을 선택해주세요.



선택하시면 이렇게 Notepad2가 열리며 gfxboot.cfg를 편집할 수 있는 창이 뜹니다. 주석이 잘 달려있어서 아마 한번 읽어보시면 대부분 설정하실 수 있으실 텐데요, 여기서는 '메뉴의 시작 위치' 부분만 잠깐 알아보도록 하겠습니다.



먼저 메뉴가 출력될 부분의 x, y 좌표값을 알아야 합니다. work 폴더의 back.jpg를 그림판으로 열어주세요.



메뉴가 출력되기 원하는 곳에 마우스 포인터를 올리시고 좌측 하단의 좌표값을 기억해주세요. 제 경우는 (50, 50) 이군요.



실제 부팅시에는 이렇게 출력됩니다. 여러번 시도해보시고 자신에게 맞는 값을 찾아주세요.



이제 이렇게 gfxboot.cfg에 x, y 좌표값을 입력 해줍니다.



수정을 다 하셨으면 'File - Save' (또는 Ctrl+S) 로 저장해주시고 닫아주시면 됩니다.


4. 압축하기


이제 완성된 gfxmenu를 다시 CPIO로 압축할 차례입니다. '6. 압축'을 선택해주세요.



파일명을 입력해줍니다. 저는 gfxmenu로 하겠습니다. 원하시는 파일명을 입력해주시면 됩니다. (역시 한글은 안됩니다 ;;)



성공적으로 압축이 되었다네요. 완성된 GFXMenu 파일은 ISO 폴더 안의 GFXMenu 폴더에 존재합니다.



GRUB4DOS가 설치된 USB에 복사해주세요.


5. MENU.LST에 완성된 GFXMenu 추가하기



gfxmenu /[GFXMenu 파일 경로]


이제 완성된 GFXMenu를 GRUB4DOS가 읽도록 MENU.LST에 추가해주면 됩니다. 사용할 명령어는 GFXMENU 명령어인데요, 명령어 뒤에 로드할 GFXMenu 파일의 경로만 적어주시면 됩니다. 제 경우는 'GFXMENU /gfxmenu'가 되겠네요. 전편에서 추가한 SPLASHIMAGE 명령어는 이제 쓸 일이 없으니 지워줍시다.



부팅하시면 GRUB4DOS의 칙칙한 UI 대신 아주 깔끔한 GFXMenu의 UI가 출력되는 것을 보실 수 있습니다.


마치며...


 이렇게 이 GFXMenu 편을 마지막으로 모든 GRUB4DOS [만능 USB를 만들어 보자!] 시리즈가 끝났습니다. 아직 설명하지 못한 것도 많고 제가 모르는 기능들도 많겠지만 이 정도만 가지고도 원하시는 대부분의 기능을 포함한 만능 USB를 만드실 수 있을 것 같은데요, 더 많은 정보를 원하시는 분들은 밑의 USB 부팅 관련 사이트들을 참고하시면 되겠습니다.


http://usboffice.kr/

 국내 최대의 USB 커뮤니티. 현재는 활동이 줄어든 상태.

http://reboot.pro/

 부팅 관련 해외 포럼. 10편에서 설명한 FiraDisk를 포함한 수십개의 프로젝트가 진행중. 


제가 가장 많이 참고한 두 개의 사이트입니다. USBOffice 같은 경우에는 최근 들어 활동량이 많이 줄어들었지만 예전 자료들을 찾아보면 괜찮은 포터블 프로그램들과 유용한 부팅 자료들을 찾으실 수 있습니다.

reboot.pro는 제가 아는 한 부팅에 관련된 전 세계 모든 초고수들의 집합소입니다. 10편에서 설명한 FiraDisk도 여기서 개발된 드라이버이고요, 위에서 언급한 GFXMENU의 init 파일이 바이너리라는 것을 이용해 프로그램을 구동한 곳도 이곳입니다. 이외에도 윈도우 PE, SysLinux 등 거의 모든 종류의 부팅 정보를 포함하는 포럼이니 영어가 되시는 분들은 (;;) 참고하시면 되겠습니다.


이상으로 [만능 USB를 만들어 보자!] 시리즈를 마치도록 하겠습니다. 감사합니다 ^^


p.s. GRUB4DOS는 아직 끝나지 않았습니다. 이 시리즈에 사용된 정식 빌드는 2009년 6월 20일의 0.4.4 빌드로 끝났지만 아직도 여러 유저에 의해 비공식 빌드가 개발되고 있습니다. 추후에 이 비공식 빌드에서 추가된 기능들과 NTBOOT에 대해서 포스팅하도록 하겠습니다.