== JinLiveCD/GfxBoot == grub 에서 이미지 사용 확장 * http://cvs.sourceforge.net/viewcvs.py/morphix/ * gfxboot, gfxboot-grub 다운로드 * export CVS_RSH=ssh * cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/morphix co -P gfxboot * cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/morphix co -P gfxboot-grub * grub 다운로드 * patch 적용 * [root@localhost grub-0.95]# pwd * /usr/src/redhat/BUILD/grub-0.95 * [root@localhost grub-0.95]# patch -p1 < /root/gfxboot/gfxboot-grub/grub/debian/patches/grub-splashscreen-v5.patch * ./configure * make * -fwritable-strings 의 문제 (FC3 warning, FC4 error) * gfxboot make make install * gfxboot-grub make * cp grub to /sbin * cp stage2 to /boot/grub * cp /gfxboot-grub/boot/message /boot/grub * edit grub.conf * #splashimage=(hd0,4)/boot/grub/splash.xpm.gz * gfxmenu (hd0,4)/boot/grub/message * #hiddenmenu * grub-install --root-directory=/mnt/sda5 /dev/sda * 왜 안되는 것인가? * stage2.c 의 if 문을 잡은 후 수행하니, 동작함. * 다시 없애고 수행해도 됨. * 신기한 일이다. * gcc 와 cpp 의 문제임. 3.4 버전은 동작함. * 4.0 버전은 upgrade 된 것도 동작 안 함. * writable-strings 의 문제인지는 모르겠슴. * -fwritable-strings 를 -Wwrite-strings 로 수정하면 컴파일은 되나, 오류 발생 * 회사에서는 되고, 집에서는 오류 발생 * gfxboot-grub/common.inc * frame1: menu display * frame2: kernel option input * frame3: boot option (text) * frame4: scroll bar * framex: progress bar * panel.text.y 461 * graphics_file 설정 ( stage2/builtins.c ) {{{ static int gfxmenu_func (char *arg, int flags) { memmove(graphics_file, arg, sizeof graphics_file - 1); graphics_file[sizeof graphics_file - 1] = 0; return 0; } }}} * run_graphics_menu ( grub/stage2/stage2.c ) * set gfx_data * grub_open(graphics_file) * i = grub_read(buf, buf_size); * memory 설정 * message 분석 ( cpio file ) * gfx_init(gfx_data) ( stage2/asm.S ) * pushl gfx_ofs_jmp_table + 4 * 0 (%di) * gfxboot/gfxboot/bincode.asm 의 gfx_init * gfx_setup_menu(gfx_data); ( stage2/asm.S ) * i = gfx_input(gfx_data, &selected_entry); * gfx_done(gfx_data); === grub stage2 === * cmain * builtin * run_graphics_menu or run_menu * run_graphics_menu 가 실패하면 run_menu 수행 * run_graphics_menu * grub_open(graphics_file): /boot/grub/message * i = grub_read(buf, buf_size); * grub_close(); * gfx_init(gfx_data) * gfx_setup_menu(gfx_data); * gfx_done(gfx_data); * run_script(new_config, heap); * run_menu * cls() * display menu and getkey * boot_entry: * cls() * setcursor(1) * run_script (cur_entry, heap) * run_script (char *script, char *heap) : cmdline.c * builtin = find_command (heap); 한 후, * (builtin->func) (arg, BUILTIN_SCRIPT); * heap 에 있는 builtin function 을 모두 수행한 후에는 heap 에 boot 를 넣어, boot 수행함. {{{ /* The table of builtin commands. Sorted in dictionary order. */ struct builtin *builtin_table[] = { #ifdef SUPPORT_GRAPHICS &builtin_background, #endif &builtin_blocklist, &builtin_boot, #ifdef SUPPORT_NETBOOT &builtin_bootp, #endif /* SUPPORT_NETBOOT */ &builtin_cat, &builtin_chainloader, &builtin_clear, &builtin_cmp, &builtin_color, &builtin_configfile, &builtin_debug, &builtin_default, : Set the default entry #ifdef GRUB_UTIL &builtin_device, #endif /* GRUB_UTIL */ #ifdef SUPPORT_NETBOOT &builtin_dhcp, #endif /* SUPPORT_NETBOOT */ &builtin_displayapm, &builtin_displaymem, #ifdef GRUB_UTIL &builtin_dump, #endif /* GRUB_UTIL */ &builtin_embed, &builtin_fallback, Set the fallback entry &builtin_find, #ifdef SUPPORT_GRAPHICS &builtin_foreground, #endif &builtin_fstest, &builtin_geometry, &builtin_gfxmenu, &builtin_halt, &builtin_help, &builtin_hiddenmenu, Hide the menu interface &builtin_hide, #ifdef SUPPORT_NETBOOT &builtin_ifconfig, #endif /* SUPPORT_NETBOOT */ &builtin_impsprobe, &builtin_initrd, &builtin_install, &builtin_ioprobe, &builtin_kernel, &builtin_lock, &builtin_makeactive, &builtin_map, #ifdef USE_MD5_PASSWORDS &builtin_md5crypt, #endif /* USE_MD5_PASSWORDS */ &builtin_module, &builtin_modulenounzip, &builtin_pager, &builtin_partnew, &builtin_parttype, &builtin_password, &builtin_pause, #ifdef GRUB_UTIL &builtin_quit, #endif /* GRUB_UTIL */ #ifdef SUPPORT_NETBOOT &builtin_rarp, #endif /* SUPPORT_NETBOOT */ &builtin_read, &builtin_reboot, &builtin_root, &builtin_rootnoverify, &builtin_savedefault, #ifdef SUPPORT_SERIAL &builtin_serial, #endif /* SUPPORT_SERIAL */ &builtin_setkey, &builtin_setup, #ifdef SUPPORT_GRAPHICS &builtin_splashimage, #endif /* SUPPORT_GRAPHICS */ #if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) &builtin_terminal, #endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ #ifdef SUPPORT_SERIAL &builtin_terminfo, #endif /* SUPPORT_SERIAL */ &builtin_testload, &builtin_testvbe, #ifdef SUPPORT_NETBOOT &builtin_tftpserver, #endif /* SUPPORT_NETBOOT */ &builtin_timeout, Set the timeout &builtin_title, Start a menu entry &builtin_unhide, &builtin_uppermem, &builtin_vbeprobe, 0 }; }}} * boot_func (char *arg, int flags) (builtins.c) * current_term->shutdown * linux_boot (); or big_linux_boot (); (asm.S) === grub === * grub-install 에 의해 stage1 은 MBR 이나 일정 파티션의 boot sector 또는 floppy disk 에 저장하면서, stage2 의 위치를 같이 저장한다. * stage1 은 bios 에 의해 메모리에 올라 오고, 수행된다. * stage1 은 stage2 를 읽어 메모리에 올리고, jmp 한다. * stage1.5 는 파일 시스템에 관련된 내용들이다. * 누가 올리는가? 어떻게 사용하는가? * stage2 는 config 파일을 읽고, 필요한 작업을 수행한다. === korean character === * mkdir ucsfont * cd ucsfont * http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz * http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-asian.tar.gz * mv ucs-fonts.tar.gz ucsfont/ * mv ucs-fonts-asian.tar.gz ucsfont/ * unzip *.gz * cd .. * cp -Rp ucsfont /usr/X11R6/lib/X11/fonts/ * mkfontdir * make 16x16.font {{{ getx11font -v -l 18 -p 2,4 \ -c ISO-8859-15 -c ISO-8859-2 -c koi8-r \ -t help-boot.ko.html \ -t help-install.ko.html \ -f -misc-fixed-medium-r-normal-ko-18-120-100-100-c-180-iso10646-1 \ 16x16.font >16x16.font.log }}} * xlsfonts * http://openlab.ring.gr.jp/efont/unicode/ {{{ [root@localhost efont-unicode-bdf-0.4.2-src]# make tools/hexmerge taipei10_uni.hex gb10fs_uni.hex gulim10_uni.hex K10-1_uni.hex K10-2_uni.hex > f10_source.hex.tmp && \ mv f10_source.hex.tmp f10_source.hex Died at tools/hexmerge line 9. make: *** [f10_source.hex] 오류 255 }}} * bdfresize 가 없는 것이 문제인 것 같음. * K14-1_uni.hex 파일에 첫번째 줄 14 14 가 없음. * http://openlab.ring.gr.jp/efont/dist/tools/bdfresize/ {{{ [root@localhost bdfresize-1.5]# make gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -Wall -Wunused -Wuninitialized -Wmissing-prototypes -Wmissing-declarations -c bdfresize.c gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -Wall -Wunused -Wuninitialized -Wmissing-prototypes -Wmissing-declarations -c charresize.c charresize.c: In function `processChar': charresize.c:49: error: conflicting types for 'malloc' make: *** [charresize.o] 오류 1 }}} * rpm -ivh bdfresize-1.5-413.i586.rpm * mkfontdir /usr/X11R6/lib/X11/fonts/efont/ * xset +fp /usr/X11R6/lib/X11/fonts/efont * xset fp rehash === Makefile === {{{ $(addprefix prefix,names...) The argument names is regarded as a series of names, separated by whitespace; prefix is used as a unit. The value of prefix is prepended to the front of each individual name and the resulting larger names are concatenated with single spaces between them. For example, $(addprefix src/,foo bar) produces the result `src/foo src/bar'. }}} {{{ $(suffix names...) Extracts the suffix of each file name in names. If the file name contains a period, the suffix is everything starting with the last period. Otherwise, the suffix is the empty string. This frequently means that the result will be empty when names is not, and if names contains multiple file names, the result may contain fewer file names. For example, $(suffix src/foo.c src-1.0/bar.c hacks) produces the result `.c .c'. }}} {{{ $(basename names...) Extracts all but the suffix of each file name in names. If the file name contains a period, the basename is everything starting up to (and not including) the last period. Periods in the directory part are ignored. If there is no period, the basename is the entire file name. For example, $(basename src/foo.c src-1.0/bar hacks) produces the result `src/foo src-1.0/bar hacks'. }}} {{{ $(wildcard pattern) The argument pattern is a file name pattern, typically containing wildcard characters (as in shell file name patterns). The result of wildcard is a space-separated list of the names of existing files that match the pattern. See section Using Wildcard Characters in File Names. }}} {{{ $(notdir names...) Extracts all but the directory-part of each file name in names. If the file name contains no slash, it is left unchanged. Otherwise, everything through the last slash is removed from it. A file name that ends with a slash becomes an empty string. This is unfortunate, because it means that the result does not always have the same number of whitespace-separated file names as the argument had; but we do not see any other valid alternative. For example, $(notdir src/foo.c hacks) produces the result `foo.c hacks'. }}} === gfxboot-grub === * rm install.config * rm po/*.po * cp po/bootloader.pot po/ko.po * rm help-install.en.html * edit keytables.inc * rm rm keymap* * rm servers.cfg {{{ edited keytables.inc /.km.locale 0 def /.km.map 1 def % must not be empty /keymaps [ [ "en" .undef ] ] def }}} {{{ Makefile diff 6a7 > HELPINST = $(addprefix install/help,$(suffix $(basename $(wildcard help-install.*.html)))) 8a10 > HELPINST_ALL = $(notdir $(HELPINST)) 10c12,16 < DEFAULT_LANG = ko --- > DEFAULT_LANG = en > > FILES_INST = init languages $(TRANSLATIONS) 16x16.font background.pcx \ > splash.pcx kroete.data \ > $(HELPINST_ALL) 18a25 > FILES_INST += lang 24a32,34 > install/help.%: help-install.%.html install > $(HELP2TXT) $< >$@ > 29c39 < boot: po --- > boot install: po 35c45 < themes: bootdir --- > themes: bootdir installdir 46a57,65 > installdir: install.config $(INCLUDES) $(HELPINST) > @cp -a po/texts.* install > @for i in $(FILES_INST) ; do [ -f $$i ] && cp $$i install ; done ; true > $(MKBOOTMSG) $(BFLAGS) -l install/log -c $< install/init > ifdef DEFAULT_LANG > @echo $(DEFAULT_LANG) >install/lang > endif > @sh -c 'cd install; echo $(FILES_INST) | sed -e "s/ /\n/g" | cpio --quiet -o >bootlogo' > 49,51c68,74 < -c ISO-8859-15 \ < -t help-boot.ko.html \ < -t help-install.ko.html \ --- > -c ISO-8859-15 -c ISO-8859-2 -c koi8-r \ > -t help-boot.ja.html \ > -t help-install.ja.html \ > -t po/ja.po \ > -t install/log -t boot/log \ > -f -efont-fixed-medium-r-normal--16-160-75-75-c-80-iso10646-1 \ > -f -efont-fixed-medium-r-normal--16-160-75-75-c-160-iso10646-1 \ 56,57c79,80 < rm -f bootdir *~ < rm -rf boot --- > rm -f bootdir installdir *~ > rm -rf boot install }}} * DEFAULT_LANG = ko * font: 수정 필요. === prime function === * 변수에 상수 설정 * /x 6 def * 변수에 참, 거짓 설정 * /true 0 0 eq def * 함수 정의 * /.value { t_int settype } def * /t_int 1 def * settype: prim function * ( obj type ) -> ( type ) : 정확히 모르겠음 * .value : arg 를 int type 으로 설정 * ( obj ) ==> ( int ) * cvp: ( obj ) ==> ( ptr ) * /cvp { t_ptr settype } def * cvs: ( obj ) ==> ( string ) * /cvs { t_string settype } def * string.print: Print string (for debugging). {{{ /string.print { dup currentpoint currentpoint 5 -1 roll strsize image moveto show } def }}} * stack status * string string currentpoint currentpoint * statck status after 5 -1 roll * string currentpoint currentpoint string * after strsize * string currentpoint currentpoint width height * after image * string currentpoint * after moveto * string * show * 끝 === boot.config === * 640 480 8 findmode setmode not { false .end } if * "background.pcx" findfile setimage loadpalette * bsplash.show ( do nothing ) * 여기서는 단지 그림만 올리고 끝남. === /grub/stage2/stage2.c === {{{ ; jmp table to interface functions jt_init dw gfx_init jt_done dw gfx_done jt_input dw gfx_input jt_menu_init dw gfx_menu_init jt_infobox_init dw gfx_infobox_init jt_infobox_done dw gfx_infobox_done jt_progress_init dw gfx_progress_init jt_progress_done dw gfx_progress_done jt_progress_update dw gfx_progress_update jt_progress_limit dw gfx_progress_limit jt_password_init dw gfx_password_init jt_password_done dw gfx_password_done }}} * gfx_init : stage2.c * pushl gfx_ofs_jmp_table + 4 * 0 (%di) asm.S * * gfxboot-grub 밑의 background1.pcx 디스플레이 하고 끝남. * gfx_setup_menu(gfx_data); stage2.c * lcall %ds: *gfx_ofs_jmp_table + 4 * 3 (%bx) asm.S * gfx_menu_init : bincode.asm * mov cx,cb_MenuInit * MenuInit : common.inc (gfxboot-grub) * gfx_input : stage2.c * lcall *gfx_ofs_jmp_table + 4 * 2 (%bx) asm.S * gfx_input bincode.asm * mov cx,cb_KeyEvent * KeyEvent common.inc * http://chem.skku.ac.kr/~wkpark/baekmuk/iso10646/ === install 부분 제거 === * Makefile {{{ 6a7 > HELPINST = $(addprefix install/help,$(suffix $(basename $(wildcard help-install.*.html)))) 8a10 > HELPINST_ALL = $(notdir $(HELPINST)) 10c12,16 < DEFAULT_LANG = ko --- > DEFAULT_LANG = en > > FILES_INST = init languages $(TRANSLATIONS) 16x16.font background.pcx \ > splash.pcx kroete.data \ > $(HELPINST_ALL) 18a25 > FILES_INST += lang 24a32,34 > install/help.%: help-install.%.html install > $(HELP2TXT) $< >$@ > 29c39 < boot: po --- > boot install: po 35c45 < themes: bootdir --- > themes: bootdir installdir 46a57,65 > installdir: install.config $(INCLUDES) $(HELPINST) > @cp -a po/texts.* install > @for i in $(FILES_INST) ; do [ -f $$i ] && cp $$i install ; done ; true > $(MKBOOTMSG) $(BFLAGS) -l install/log -c $< install/init > ifdef DEFAULT_LANG > @echo $(DEFAULT_LANG) >install/lang > endif > @sh -c 'cd install; echo $(FILES_INST) | sed -e "s/ /\n/g" | cpio --quiet -o >bootlogo' > 49,50c68,74 font 부분은 집에서 적용할 것 55,56c79,80 < rm -f bootdir *~ < rm -rf boot --- > rm -f bootdir installdir *~ > rm -rf boot install }}} * common.inc * syslinux 가 set 되는 것은 install cd 의 경우임. * 이에 해당하는 부분을 모두 없엔다. * syslinux * common.inc help.inc panel.inc system.inc window.inc * system.inc 의 syslinux define 은 그냥 둔다. * is_second_side * do_64bit_check * 64bit_source * is_dvd * 32bit_popup * 64bit_popup * help-boot.en.html * panel.inc * window.inc {{{ diff -r ../gfxboot-grub/boot.config ../gfxboot-grub.org/boot.config 20a21 > %% include dia_install.inc diff -r ../gfxboot-grub/common.inc ../gfxboot-grub.org/common.inc 14,16c14,16 < %/is_second_side { < % syslinux usernote 1 and 0 ne and < %} def --- > /is_second_side { > syslinux usernote 1 and 0 ne and > } def 25,27c25,27 < %/do_64bit_check { < % syslinux usernote 2 and 0 ne and < %} def --- > /do_64bit_check { > syslinux usernote 2 and 0 ne and > } def 36,38c36,38 < %/64bit_source { < % syslinux usernote 4 and 0 ne and < %} def --- > /64bit_source { > syslinux usernote 4 and 0 ne and > } def 47,49c47,49 < %/is_dvd { < % syslinux usernote 8 and 0 ne and < %} def --- > /is_dvd { > syslinux usernote 8 and 0 ne and > } def 141,144c141,144 < % window.action actInstallOK eq { < % /window.action actNothing def < % install.ok < % } if --- > window.action actInstallOK eq { > /window.action actNothing def > install.ok > } if 146,149c146,149 < % window.action actInstallCancel eq { < % /window.action actNothing def < % install.cancel < % } if --- > window.action actInstallCancel eq { > /window.action actNothing def > install.cancel > } if 259a260,265 > xmenu.install { > install.option "" ne { > install.option "%s " bc.cmd dup length add sprintf > } if > } if > 293c299 < % is_second_side { --- > is_second_side { 295c301 < % notimeout dvd_popup --- > notimeout dvd_popup 297c303 < % } { --- > } { 299,305c305,311 < % do_64bit_check { < % 64bit { < % 64bit_source not { notimeout 32bit_popup } if < % } { < % 64bit_source { notimeout 64bit_popup } if < % } ifelse < % } if --- > do_64bit_check { > 64bit { > 64bit_source not { notimeout 32bit_popup } if > } { > 64bit_source { notimeout 64bit_popup } if > } ifelse > } if 307c313 < % } ifelse --- > } ifelse 586,609c592,615 < % info.type 2 eq < % is_second_side and { < % txt_dvd_warning info.msg < % over length info.msg length 1 add add "%s%s" exch < % dup string dup /info.msg exch def snprintf < % } if < < % syslinux info.type 3 eq and { < % dup .title txt_change_disk_title put < % 0 getinfo 1 add txt_insert_disk info.tmpmsg sprintf < % /info.msg info.tmpmsg def < % } if < < % syslinux info.type 4 eq and { < % dup .title txt_change_disk_title put < % 1 getinfo 15 not and { < % 0 getinfo 1 add < % txt_insert_disk3 info.tmpmsg sprintf < % } { < % 0 getinfo 1 add 1 getinfo 1 add < % txt_insert_disk2 info.tmpmsg sprintf < % } ifelse < % /info.msg info.tmpmsg def < % } if --- > info.type 2 eq > is_second_side and { > txt_dvd_warning info.msg > over length info.msg length 1 add add "%s%s" exch > dup string dup /info.msg exch def snprintf > } if > > syslinux info.type 3 eq and { > dup .title txt_change_disk_title put > 0 getinfo 1 add txt_insert_disk info.tmpmsg sprintf > /info.msg info.tmpmsg def > } if > > syslinux info.type 4 eq and { > dup .title txt_change_disk_title put > 1 getinfo 15 not and { > 0 getinfo 1 add > txt_insert_disk3 info.tmpmsg sprintf > } { > 0 getinfo 1 add 1 getinfo 1 add > txt_insert_disk2 info.tmpmsg sprintf > } ifelse > /info.msg info.tmpmsg def > } if 859,873c865,874 < % syslinux { < % dup "linux" eq { pop txt_install return } if < % dup "failsafe" eq { pop txt_safe_install return } if < % dup "noacpi" eq { pop txt_noacpi_install return } if < % dup "manual" eq { pop txt_manual_install return } if < % dup "rescue" eq { pop txt_rescue return } if < % dup "hwcheck" eq { pop "Hardware Check" return } if < % dup "harddisk" eq { pop txt_boot_harddisk return } if < % dup "eval" eq { pop "LiveEval" return } if < % } { < % dup "linux" eq { pop "Linux" return } if < % dup "failsafe" eq { pop txt_safe_linux return } if < % dup "windows" eq { pop "Windows" return } if < % } ifelse < { --- > syslinux { > dup "linux" eq { pop txt_install return } if > dup "failsafe" eq { pop txt_safe_install return } if > dup "noacpi" eq { pop txt_noacpi_install return } if > dup "manual" eq { pop txt_manual_install return } if > dup "rescue" eq { pop txt_rescue return } if > dup "hwcheck" eq { pop "Hardware Check" return } if > dup "harddisk" eq { pop txt_boot_harddisk return } if > dup "eval" eq { pop "LiveEval" return } if > } { 877c878 < } --- > } ifelse 1069,1073c1070,1074 < % dup keyF7 eq syslinux and { < % "kroete.data" findfile kroete.dir idle < % /kroete.dir kroete.dir 1 xor def < % pop 0 < % } if --- > dup keyF7 eq syslinux and { > "kroete.data" findfile kroete.dir idle > /kroete.dir kroete.dir 1 xor def > pop 0 > } if 1075,1078c1076,1079 < % dup keyF8 eq syslinux and { < % .undef 0 idle < % pop 0 < % } if --- > dup keyF8 eq syslinux and { > .undef 0 idle > pop 0 > } if 1080,1086c1081,1087 < % dup keyShiftF3 eq syslinux and debug 3 ge and { < % currentcolor black setcolor < % currentpoint 0 0 moveto < % "eject " print bootdrive eject print < % moveto setcolor < % pop 0 < % } if --- > dup keyShiftF3 eq syslinux and debug 3 ge and { > currentcolor black setcolor > currentpoint 0 0 moveto > "eject " print bootdrive eject print > moveto setcolor > pop 0 > } if 1088,1094c1089,1095 < % dup keyShiftF5 eq syslinux and debug 3 ge and { < % currentcolor black setcolor < % currentpoint 100 0 moveto < % bootdrive print < % moveto setcolor < % pop 0 < % } if --- > dup keyShiftF5 eq syslinux and debug 3 ge and { > currentcolor black setcolor > currentpoint 100 0 moveto > bootdrive print > moveto setcolor > pop 0 > } if 1198,1199c1199,1200 < %/32bit_popup { < % window.dialog --- > /32bit_popup { > window.dialog 1201,1207c1202,1208 < % dup .title "Cool computer, but..." put < % dup .text "You are about to install 32-bit software on a 64-bit computer." put < % dup .buttons [ < % button.continue button.default actNothing button.setaction < % ] put < % dup window.init < % window.show --- > dup .title "Cool computer, but..." put > dup .text "You are about to install 32-bit software on a 64-bit computer." put > dup .buttons [ > button.continue button.default actNothing button.setaction > ] put > dup window.init > window.show 1209c1210 < %} def --- > } def 1217,1218c1218,1219 < %/64bit_popup { < % window.dialog --- > /64bit_popup { > window.dialog 1220,1226c1221,1227 < % dup .title "Cool software, but..." put < % dup .text "This is a 32-bit computer. You cannot use 64-bit software on it." put < % dup .buttons [ < % button.reboot button.default actReboot actNoClose or button.setaction < % ] put < % dup window.init < % window.show --- > dup .title "Cool software, but..." put > dup .text "This is a 32-bit computer. You cannot use 64-bit software on it." put > dup .buttons [ > button.reboot button.default actReboot actNoClose or button.setaction > ] put > dup window.init > window.show 1228c1229 < %} def --- > } def diff -r ../gfxboot-grub/help.inc ../gfxboot-grub.org/help.inc 61c61 < % syslinux not { --- > syslinux not { 69c69 < % } if --- > } if Only in ../gfxboot-grub.org/: install.config Only in ../gfxboot-grub.org/: keymap.cs.inc Only in ../gfxboot-grub.org/: keymap.de.inc Only in ../gfxboot-grub.org/: keymap.es.inc Only in ../gfxboot-grub.org/: keymap.fr.inc Only in ../gfxboot-grub.org/: keymap.hu.inc Only in ../gfxboot-grub.org/: keymap.it.inc Only in ../gfxboot-grub.org/: keymap.ja.inc Only in ../gfxboot-grub.org/: keymap.ru.inc Only in ../gfxboot-grub.org/: keymap.sk.inc Only in ../gfxboot-grub.org/: keymap.sl.inc Only in ../gfxboot-grub.org/: keymap.sv.inc diff -r ../gfxboot-grub/keytables.inc ../gfxboot-grub.org/keytables.inc 15a16,27 > %% include keymap.cs.inc > %% include keymap.es.inc > %% include keymap.fr.inc > %% include keymap.de.inc > %% include keymap.it.inc > %% include keymap.ja.inc > %% include keymap.hu.inc > %% include keymap.ru.inc > %% include keymap.sk.inc > %% include keymap.sl.inc > %% include keymap.sv.inc > 17a30 > [ "cs" keymap.cs ] 18a32,41 > [ "es" keymap.es ] > [ "fr" keymap.fr ] > [ "de" keymap.de ] > [ "it" keymap.it ] > [ "ja" keymap.ja ] > [ "hu" keymap.hu ] > [ "ru" keymap.ru ] > [ "sk" keymap.sk ] > [ "sl" keymap.sl ] > [ "sv" keymap.sv ] Only in ../gfxboot-grub.org/po: cs.po Only in ../gfxboot-grub.org/po: de.po Only in ../gfxboot-grub.org/po: es.po Only in ../gfxboot-grub.org/po: fr.po Only in ../gfxboot-grub.org/po: hu.po Only in ../gfxboot-grub.org/po: it.po Only in ../gfxboot-grub.org/po: ja.po Only in ../gfxboot-grub/po: ko.po Only in ../gfxboot-grub.org/po: nl.po Only in ../gfxboot-grub.org/po: ro.po Only in ../gfxboot-grub.org/po: ru.po Only in ../gfxboot-grub.org/po: sk.po Only in ../gfxboot-grub.org/po: sl.po Only in ../gfxboot-grub.org/po: sv.po Only in ../gfxboot-grub.org/: servers.cfg diff -r ../gfxboot-grub/window.inc ../gfxboot-grub.org/window.inc 529,531c529,530 < % dialog.tmp .ed.list get .undef ne syslinux and < % { xsavescreen } { savescreen } ifelse < savescreen --- > dialog.tmp .ed.list get .undef ne syslinux and > { xsavescreen } { savescreen } ifelse 639,642c638,641 < % dup actInstallOK eq { < % install.ok < % exch not exch < % } if --- > dup actInstallOK eq { > install.ok > exch not exch > } if }}} * 오류 * common.inc 의 menuitemmap 에서 {} 를 빼야 함. === po === {{{ txt_ok txt_cancel txt_reboot txt_continue txt_error_title txt_info_title txt_load_kernel_title txt_load_memtest txt_load_kernel txt_memtest txt_bootoptions }}}