Linux下将grub2安装到memdisk设备中
1、#!/bin/sh
allmods=" "
allmods=$allmods" acpi.mod"
allmods=$allmods" affs.mod"
allmods=$allmods" afs.mod"
allmods=$allmods" ahci.mod"
allmods=$allmods" all_video.mod"
allmods=$allmods" ata.mod"
allmods=$allmods" at_keyboard.mod"
allmods=$allmods" bfs.mod"
#allmods=$allmods" blocklist.mod"
allmods=$allmods" btrfs.mod"
allmods=$allmods" bitmap.mod"
allmods=$allmods" bufio.mod"
allmods=$allmods" cat.mod"
allmods=$allmods" cbfs.mod"
allmods=$allmods" chain.mod"
allmods=$allmods" command.lst"
allmods=$allmods" configfile.mod"
#allmods=$allmods" cpio.mod"
allmods=$allmods" cpio_be.mod"
allmods=$allmods" cpuid.mod"
allmods=$allmods" crypto.lst"
allmods=$allmods" crypto.mod"
allmods=$allmods" date.mod"
allmods=$allmods" disk.mod"
allmods=$allmods" drivemap.mod"
allmods=$allmods" echo.mod"
allmods=$allmods" exfat.mod"
#allmods=$allmods" ext2.mod"
allmods=$allmods" extcmd.mod"
allmods=$allmods" fat.mod"
allmods=$allmods" font.mod"
allmods=$allmods" freedos.mod"
allmods=$allmods" fs.lst"
allmods=$allmods" functional_test.mod"
allmods=$allmods" gcry_arcfour.mod"
allmods=$allmods" gcry_blowfish.mod"
allmods=$allmods" gcry_crc.mod"
allmods=$allmods" gcry_md4.mod"
allmods=$allmods" gcry_md5.mod"
allmods=$allmods" gcry_rfc2268.mod"
allmods=$allmods" gcry_rmd160.mod"
allmods=$allmods" gcry_sha1.mod"
allmods=$allmods" gcry_sha256.mod"
allmods=$allmods" gcry_sha512.mod"
allmods=$allmods" gettext.mod"
allmods=$allmods" gfxterm_background.mod"
allmods=$allmods" gfxterm_menu.mod"
#allmods=$allmods" gfxmenu.mod"
#allmods=$allmods" gfxterm.mod"
allmods=$allmods" gzio.mod"
allmods=$allmods" halt.mod"
allmods=$allmods" hashsum.mod"
allmods=$allmods" help.mod"
allmods=$allmods" hfs.mod"
allmods=$allmods" hfsplus.mod"
allmods=$allmods" jfs.mod"
allmods=$allmods" jpeg.mod"
allmods=$allmods" keylayouts.mod"
allmods=$allmods" keystatus.mod"
allmods=$allmods" ldm.mod"
allmods=$allmods" linux16.mod"
allmods=$allmods" video_fb.mod"
allmods=$allmods" linux.mod"
allmods=$allmods" loadenv.mod"
#allmods=$allmods" loopback.mod"
allmods=$allmods" ls.mod"
allmods=$allmods" lsapm.mod"
allmods=$allmods" luks.mod"
allmods=$allmods" lzma_decompress.img"
allmods=$allmods" lzopio.mod"
allmods=$allmods" mdraid09.mod"
allmods=$allmods" mdraid09_be.mod"
allmods=$allmods" mdraid1x.mod"
#allmods=$allmods" memdisk.mod"
allmods=$allmods" memrw.mod"
#allmods=$allmods" minicmd.mod"
allmods=$allmods" minix.mod"
allmods=$allmods" minix2.mod"
allmods=$allmods" minix2_be.mod"
allmods=$allmods" minix3.mod"
allmods=$allmods" minix3_be.mod"
allmods=$allmods" minix_be.mod"
allmods=$allmods" mmap.mod"
allmods=$allmods" moddep.lst"
allmods=$allmods" msdospart.mod"
allmods=$allmods" multiboot.mod"
#allmods=$allmods" newc.mod"
allmods=$allmods" nilfs2.mod"
allmods=$allmods" ntfscomp.mod"
allmods=$allmods" ntldr.mod"
allmods=$allmods" odc.mod"
allmods=$allmods" ohci.mod"
allmods=$allmods" partmap.lst"
allmods=$allmods" parttool.lst"
allmods=$allmods" parttool.mod"
allmods=$allmods" part_acorn.mod"
allmods=$allmods" part_amiga.mod"
allmods=$allmods" part_apple.mod"
allmods=$allmods" part_bsd.mod"
allmods=$allmods" part_dvh.mod"
allmods=$allmods" part_gpt.mod"
#allmods=$allmods" part_msdos.mod"
allmods=$allmods" part_plan.mod"
allmods=$allmods" part_sun.mod"
allmods=$allmods" part_sunpc.mod"
allmods=$allmods" password.mod"
allmods=$allmods" password_pbkdf2.mod"
allmods=$allmods" pata.mod"
allmods=$allmods" pci.mod"
allmods=$allmods" play.mod"
allmods=$allmods" png.mod"
allmods=$allmods" priority_queue.mod"
allmods=$allmods" probe.mod"
allmods=$allmods" read.mod"
allmods=$allmods" procfs.mod"
#allmods=$allmods" reboot.mod"
#allmods=$allmods" reiserfs.mod"
allmods=$allmods" romfs.mod"
allmods=$allmods" scsi.mod"
allmods=$allmods" search.mod"
allmods=$allmods" search_fs_file.mod"
allmods=$allmods" search_fs_uuid.mod"
allmods=$allmods" search_label.mod"
allmods=$allmods" sendkey.mod"
allmods=$allmods" serial.mod"
allmods=$allmods" setpci.mod"
allmods=$allmods" sfs.mod"
allmods=$allmods" sleep.mod"
allmods=$allmods" squash4.mod"
allmods=$allmods" tar.mod"
allmods=$allmods" terminal.lst"
allmods=$allmods" terminal.mod"
allmods=$allmods" terminfo.mod"
allmods=$allmods" test.mod"
allmods=$allmods" testload.mod"
allmods=$allmods" test_blockarg.mod"
allmods=$allmods" time.mod"
allmods=$allmods" trig.mod"
allmods=$allmods" udf.mod"
allmods=$allmods" ufs1.mod"
allmods=$allmods" ufs1_be.mod"
allmods=$allmods" ufs2.mod"
allmods=$allmods" uhci.mod"
allmods=$allmods" usb.mod"
allmods=$allmods" usbtest.mod"
allmods=$allmods" usb_keyboard.mod"
allmods=$allmods" vbe.mod"
allmods=$allmods" vga.mod"
allmods=$allmods" vga_text.mod"
allmods=$allmods" video.lst"
allmods=$allmods" video.mod"
allmods=$allmods" videoinfo.mod"
allmods=$allmods" videotest.mod"
allmods=$allmods" video_bochs.mod"
allmods=$allmods" video_cirrus.mod"
allmods=$allmods" xfs.mod"
allmods=$allmods" xnu_uuid_test.mod"
allmods=$allmods" xzio.mod"
allmods=$allmods" zfs.mod"
allmods=$allmods" zfsinfo.mod"
current_dir=$(cd `dirname $0`; pwd)
mkdir -p /tmp/boot/grub/i386-pc
export ulg=/usr/lib/grub
export bg=/boot/grub
export temp=/tmp/boot/grub
cd $ulg/i386-pc
#cp $allmods *.lst $temp/i386-pc/
cp $allmods $temp/i386-pc/
cp -R $bg/locale $temp
echo 'set locale_dir=${prefix}/locale' >> $temp/grub.cfg
#echo "if search -s -f /grub2/grub.cfg; then" >> $temp/grub.cfg
echo 'search --no-floppy -f --set=root /grub2/grub.cfg' >> $temp/grub.cfg
echo 'configfile /grub2/grub.cfg' >> $temp/grub.cfg
#echo " else" >> $temp/grub.cfg
#echo ' loadfont $prefix/font.pf2' >> $temp/grub.cfg
#echo ' menuentry "" {' >> $temp/grub.cfg
#echo " true" >> $temp/grub.cfg
#echo " }" >> $temp/grub.cfg
#echo ' menuentry "===cat (memdisk)/bot/grub/grub.cfg===" {' >> $temp/grub.cfg
#echo " true" >> $temp/grub.cfg
#echo " }" >> $temp/grub.cfg
#echo "fi" >> $temp/grub.cfg
cd /tmp
find boot | cpio -o -H newc > $ulg/i386-pc/memdisk.cpio
cd $ulg/i386-pc
grub-mkimage -O i386-pc -d . -o core.img -m memdisk.cpio -p '(memdisk)/boot/grub' -v biosdisk newc blocklist fat iso9660 pxe reiserfs memdisk cpio minicmd part_msdos ext2 ntfs loopback gfxmenu gfxterm reboot normal
cat lnxboot.img core.img > $current_dir/g2ldr
chmod 666 $current_dir/g2ldr
rm core.img memdisk.cpio
rm -rf /tmp/boot
echo "生成的g2ldr在脚本运行目录下"
将以上代码复制保存为mk-cpio.sh文件,在终端下运行:
sudo sh mk-cpio.sh
得到的g2ldr在脚本文件的同目录下。
2、贴上我的grub.cfg头内容:
search --no-floppy -f --set=root /grub2/grub.cfg
set default="0"
insmod all_video
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
font=/grub2/fonts/unicode.pf2
if loadfont $font ; then
set gfxmode=1366x768
#insmod gfxterm
set
insmod gettext
fi
terminal_output gfxterm
#insmod gfxmenu
#loadfont ($root)/boot/grub/themes/deepin/unifont-regular-16.pf2
if search --no-floppy -f /grub2/themes/deepin/theme.txt; then
insmod png
set theme=/grub2/themes/deepin/theme.txt
else
insmod png
background_image /grub2/background.png
set color_normal=red/black
set color_highlight=magenta/black
fi
menuentry 'Deepin 2014.2 GNU/Linux' --class deepin --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-eda72fcf-989d-445f-8260-02e1ddbed205' {
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos10'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos10 --hint-efi=hd0,msdos10 --hint-baremetal=ahci0,msdos10 eda72fcf-989d-445f-8260-02e1ddbed205
else
search --no-floppy --fs-uuid --set=root eda72fcf-989d-445f-8260-02e1ddbed205
fi
linux /boot/vmlinuz-3.13.0-43-generic root=UUID=eda72fcf-989d-445f-8260-02e1ddbed205 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.13.0-43-generic
}
下面是我制作好的:
链接:http://pan.baidu.com/s/1ntNxO73 密码:nl45