[quote="roid로이드":k8bzv6ha]protochaos님의 자세한 설명 덕분에 잘 봤습니다.
평소에 그런쪽으로 관심이 많았었습니다. 아직은 윈도우용 컴퓨터가 많이 존재하고 또 그것에 파티션을 나눠서 설치하는것이 좋겠지만, 그렇게 할 환경이 아니고 어렵다면 설명한 방법이 매우 유용하다 생각합니다.
그런데 grub4dos iso부팅은 아직까지 debian, ubuntu계열은 쉬운거 같은데 배포판마다 설정이 쉬운것만 있지는 않고 까다롭고 어렵고 안되는 배보판까지 있는거 같더군요. 무엇인가 통일된 방법은 아직까지 아닌거 같은 느낌이 들었습니다. 개인적으로 menu.lst 셋팅이 뭔가 통일된 방법이 있었으면 싶내요. 윈도우도 설치용도로 7은 이미 되는걸로 아는데, live사용목적으로 iso부팅이 되었으면 얼마나 좋을까라는 생각도 해봤습니다.
iso 부팅이 굉장히 유용하다 생각하고 있습니다. 특히 윈도우 사용자에게 cd, dvd, usb를 필요로 하지 않고 간단하게 써볼수 있어서 매우 매력적인 방법이 아닐까 생각합니다.
소개해주신 super-grub-disk 는 처음보는데요, 굉장히 쉽게 iso 부팅을 할 수 있을것 같은 느낌이 듭니다. 그걸로 당분간 재미있게 놀아볼수 있을거 같내요. 감사합니다.[/quote:k8bzv6ha]
저는, grub2와 grub4dos를 동시에 사용합니다.
메인 부트로더는 grub2이구요, grub4dos로 chainload하여 일반 iso로도 부팅합니다.
super-grub-disk가 예전엔 grub lua module을 사용하였고, 지금은 lua module은 빠져 있죠.
예전엔 grub lua module을 사용하다가, 지금은 그냥 grub2로 코드로 작성하는데…
둘다 super-grub-disk의 설정을 분석하여 많이 얻어냈죠.
grub2에서 grub4dos로 chainload하기는 쉽습니다.
linux16 /grub4dos/grub.exe --config-file=";으로 분리된 명령줄" 이런식으로 하면…
바로 GRUB4DOS에 전달되어 명령들이 실행됩니다.
예전의 LUA모듈보다는 못하지만, GRUB2로만 작성하더라도, regex 모듈을 사용하여, 소기의 성과를 거둘 수 있습니다.
grub4dos의 경우에도 원래 버젼업이 안되지만, google의 중국인인 chenall 님의 개인 업데이트 버젼은…
msdos batch형식으로 스크립팅도 가능하게 합니다. 이걸 사용하면… grub4dos에서 프로그래밍적으로
부팅을 적용할 수 있죠.
아래는 제가 적용중인 /boot/grub/custom.cfg의 일부분 입니다.
참고해보세요 ^^
[code:k8bzv6ha]
insmod part_msdos
insmod fat
insmod ntfs
insmod ext2
insmod loopback
#.... 중략 ....
search -s grub4dos_dev -f /grub4dos/grub.exe
iso_dir=/boot-images
function boot_legacy_iso {
set iso_file="$1"
set iso_dir2="$2"
if [ -z "$2" ]; then
set iso_dir2=/boot-images
fi
set boot_legacy_cmd=""find --set-root ${iso_dir2}/${iso_file}; map ${iso_dir2}/${iso_file} (0xff); map --hook; chainloader (0xff)""
linux16 ($grub4dos_dev)/grub4dos/grub.exe --config-file=""find --set-root ${iso_dir2}/${iso_file}; map ${iso_dir2}/${iso_file} (0xff); map --hook; chainloader (0xff)""
}
menuentry ‘Acronis Tools’ {
boot_legacy_iso acronis.iso
}
menuentry ‘Hirens Boot CD’ {
boot_legacy_iso Hirens.BootCD.iso
}
menuentry ‘snoopy Ghost’ {
boot_legacy_iso snoopy.Ghost.iso
}
menuentry ‘Mini Windows 7’ {
boot_legacy_iso Win7pe.iso
}
menuentry ‘MiniTool_PatitionWizard_HomeEdition’ {
boot_legacy_iso MiniTool.PartitionWizard.HomeEdition.iso
}
function list_isos {
insmod part_msdos
insmod fat
insmod ntfs
search -s grub4dos_dev -f /grub4dos/grub.exe
iso_dir=/boot-images
export grub4dos_dev
export iso_dir
export boot_legacy_iso
v="a=1"
for img in (hd0,1)$iso_dir/*.iso; do
regexp -s img_name "^.*/([^/]*)\$" $img
v="$v;menuentry ""$img_name"" { boot_legacy_iso $img_name }"
done
}
menuentry "ArchiLinux Live(AMD64)" {
insmod fat
insmod ntfs
insmod loopback
isofile=/ubuntu-cd/archlinux-2011.08.19-core-dual.iso
search -s -f $isofile
loopback lo $isofile
linux (lo)/arch/boot/x86_64/vmlinuz earlymodules=loop img_dev=/dev/sda1 img_loop="${isofile}" archisolabel=ARCH_201108 ramdisk_size=75%
initrd (lo)/arch/boot/x86_64/archiso.img
}
submenu "Boot from ISO" {
insmod part_msdos
insmod fat
insmod ntfs
insmod regexp
insmod functional_test
insmod normal
search -s grub4dos_dev -f /grub4dos/grub.exe
iso_dir=/boot-images
export grub4dos_dev
export iso_dir
for img in (hd0,1)$iso_dir/*.iso;
do
regexp -s img_name "^.*/([^/]*)\$" $img
menuentry "$img_name" --source="boot_legacy_iso $img_name"
done
}
menuentry "Windows XP/2k NTLDR (Auto-detect)" {
linux16 ($grub4dos_dev)/grub4dos/grub.exe --config-file=""map () (hd0); map (hd0) (); map --hook; find --ignore-floppies --ignore-cd --set-root /ntldr; chainloader /ntldr""
}
menuentry "Windows 7/8/Vista BootMgr (Auto-detect)" {
linux16 ($grub4dos_dev)/grub4dos/grub.exe --config-file=""map () (hd0); map (hd0) (); map --hook; find --ignore-floppies --ignore-cd --set-root /bootmgr; chainloader /bootmgr""
}
[/code:k8bzv6ha]
리눅스 배포판에 따라, 라이브 부팅이 차이가 나서 난감하다고 하시는데…
이것은 super-grub-disk의 autoiso.cfg를 참고하시면 됩니다.
grub4dos 부트로더를 MBR에 설치하시려면
[code:k8bzv6ha]
sudo chmod +x ~/Downloads/grub4dos/bootlace.com
sudo ~/Downloads/grub4dos/bootlace64.com
mkdir t
sudo mount /dev/sdb1 t
sudo cp /grub4dos/{grldr,glrdr.mbr} t/
sudo gedit t/menu.lst
sudo umount t
[/code:k8bzv6ha]
여기서 0x80은 첫번째 디스크, 0x81은 두번째 디스크 이런식입니다.
grubinst을 다운받아서 설치하실 수 도 있습니다.