多语言展示
当前在线:1320今日阅读:142今日分享:25

Linux下将grub2安装到memdisk设备中

grub2是个优秀的启动管理器,但是原版的gurb模块一大堆,放在移动设备上感觉文件太多了,本文将常用的模块使用cpio打包到memdisk中。这样grub2只需要几个文件就够了
工具/原料

linux系统或者windows系统下使用cygwin

方法/步骤
1

#!/bin/shallmods=' '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-pcexport ulg=/usr/lib/grubexport bg=/boot/grubexport temp=/tmp/boot/grubcd $ulg/i386-pc#cp $allmods *.lst $temp/i386-pc/cp $allmods $temp/i386-pc/cp -R $bg/locale $tempecho 'set locale_dir=${prefix}/locale' >> $temp/grub.cfg#echo 'if search -s -f /grub2/grub.cfg; then' >> $temp/grub.cfgecho 'search --no-floppy -f --set=root  /grub2/grub.cfg' >> $temp/grub.cfgecho '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.cfgcd /tmpfind boot | cpio -o -H newc > $ulg/i386-pc/memdisk.cpiocd $ulg/i386-pcgrub-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 normalcat lnxboot.img core.img > $current_dir/g2ldrchmod 666 $current_dir/g2ldrrm core.img memdisk.cpiorm -rf /tmp/bootecho '生成的g2ldr在脚本运行目录下'将以上代码复制保存为mk-cpio.sh文件,在终端下运行:sudo sh mk-cpio.sh得到的g2ldr在脚本文件的同目录下。

2

贴上我的grub.cfg头内容:search --no-floppy -f --set=root /grub2/grub.cfgset default='0'insmod all_videoinsmod vbeinsmod vgainsmod video_bochsinsmod video_cirrusfont=/grub2/fonts/unicode.pf2if loadfont $font ; then  set gfxmode=1366x768#insmod gfxterm  set  insmod gettextfiterminal_output gfxterm#insmod gfxmenu#loadfont ($root)/boot/grub/themes/deepin/unifont-regular-16.pf2if search --no-floppy -f /grub2/themes/deepin/theme.txt; then insmod png set theme=/grub2/themes/deepin/theme.txtelse insmod png background_image /grub2/background.png set color_normal=red/black set color_highlight=magenta/blackfimenuentry '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 gzioinsmod part_msdosinsmod ext2set 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-02e1ddbed205else search --no-floppy --fs-uuid --set=root eda72fcf-989d-445f-8260-02e1ddbed205filinux /boot/vmlinuz-3.13.0-43-generic root=UUID=eda72fcf-989d-445f-8260-02e1ddbed205 ro  quiet splash $vt_handoffinitrd /boot/initrd.img-3.13.0-43-generic}下面是我制作好的:链接:http://pan.baidu.com/s/1ntNxO73 密码:nl45

注意事项

本文在deeplinux下操作,基于ubuntu的发行版应该都能直接使用,别的发行版需要稍稍修改脚本文件

推荐信息