Grub-extras의 lua 모듈로 grub2 주무르기

lua모듈은 뭘까요?

grub2에서 기본적으로 커맨드라인 파서가 sh과 비슷한 문법을 가집니다.
그러나 sh 파서의 기능은 그다지 강력하지 않습니다.
물론 lua모듈도 lua의 모든 기능을 제공하지 않습니다만,
정규표현식이 가능하고,
디렉토리및 파일을 프로그래밍적으로(예:디렉토리를 인수 받아 디렉토리에 들어 있는 파일 마다 원하는 함수를 실행하고, 그 함수에서는 파일명을 파싱해서 원하는 grub메뉴를 실시간 생성) 다룰 수 있으며, grub명령을 실행할 수 있습니다.
super grub disk로 구글링 해보세요
이것의 OS자동 검색 기능및 iso마운트기능은 lua모듈을 이용한 것입니다.

첨부한 lua.mod 바이너리 파일은 GRUB2 1.99~rc1-13ubuntu3 버젼 용으로 다른 버젼에서는 실행이 안 될지도 모름

GRUB 커맨드라인 모드에서 lua 라고 입력해보세요.

#/usr/lib/grub/i386-pc/moddep.lst에 추가
lua: setjmp

#/usr/lib/grub/i386-pc/commands.lst에추가
lua: lua

첨부한 파일 압축해제 lua.mod를 /usr/lib/grub/i386-pc/ 디렉토리로 파일 복사

이렇게 하시면 grub-install 명령으로 GRUB부트매니져 설치시 lua모듈이 설치됩니다
GRUB2 디렉토리에 직접 복사하시려면
sudo cp -f /usr/lib/grub/i386-pc/{moddep.lst,commands.lst,lua.mod} /boot/grub/

명령 실행은 GRUB2 커맨드라인 모드에서
lua 쉘 커맨드라인 모드는 lua
파일 실행은 lua xx.lua

  • lua 언어에 대해서 여기서 기술할 수 없으며, 또한 세세히 설명을 드릴 수 도 없으니
    첨부한 샘플 파일로 대체했습니다.
    샘플파일은 super grub disk의 자동 운영체제 인식 기능과
    iso파일및 플로피이미지 파일을 설정한 디렉토리내에서 검색해서,
    부트메뉴에 나타내주며, 몇몇 리눅스커널이 적용된 iso파일은 loopback으로 부팅하고,
    아닌경우 grub4dos로 에뮬레이션 부팅하구요, 플로피이미지의 경우 memdisk로 로드하여
    부팅하며, xxx.bin처럼 부트로더들은 chainload로 부팅합니다.

(/boot/grub에 들어갈 파일들이며, Ubuntu Live Persistent 로컬 하드디스크 작성 및 casper 스크립트를 커스터마이즈하는 과정에서 만든 것들이라… 좀 이상한 것들도 있을 것임 - 귀차니즘)

!!!grub.cfg 파일도 들어 있으니, 덮어쓰시려면 미리 원본을 백업해 두세요