无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5076|回复: 3
打印 上一主题 下一主题

[原创] U盘被玩坏,重新制作启动盘,奉上制作手记备忘

[复制链接]
跳转到指定楼层
1#
发表于 2017-3-21 22:01:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 pinkme005 于 2017-3-22 14:25 编辑

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

一、打包模块进memdisk

#!/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 $temp/i386-pc/

二、定制g2ldr内嵌引导菜单grub.cfg

search --no-floppy -f --set=root /loader/grub.cfg
configfile /grub2/grub.cfg
该菜单用于从引导区MBR向U盘上的g2ldr交接引导文件。

三、生成memdisk

cd /tmp
find boot | cpio -o -H newc > memdisk.cpio

四、生成core.img

grub-mkimage -O i386-pc -d /usr/lib/grub/i386-pc -c grub.cfg  -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

五、生成MBR

cat boot.img core.img > g2ldr.mbr

六、生成g2ldr

cat lnxboot.img core.img > g2ldr

七、写入U盘

    用BootICE恢复g2ldr.mbr到U盘,将g2ldr.mbr全部写入U盘首部。

八、关于分区

      为不妨碍使用,U盘可以分为2个区,第1个分区为常用分区,分区起始位置留1~2MB空间,一般为NTFS;第2个分区为启动分区,设置boot标志,文件系统类型选自己喜欢的,我用reiserfs。注意为MBR及引导信息区多留空间,如果U盘首分区从32kb开始,g2ldr.mbr恢复到U盘前部会破坏分区表,导致引导程序工作不正常,U盘崩溃。
      大力感谢百度经验《Linux下将grub2安装到memdisk设备中》,从中学到memdisk打包方法;感谢2011hiboy版主,学到MBR制作方法。

评分

参与人数 1无忧币 +5 收起 理由
wsgdmzr + 5 很给力!

查看全部评分

2#
发表于 2017-3-21 23:39:38 | 只看该作者
支持一下。
回复

使用道具 举报

3#
发表于 2017-3-22 10:09:50 | 只看该作者
支持楼主的分享,打包后GRUB2会变得很清爽。
回复

使用道具 举报

4#
发表于 2017-3-22 10:50:43 | 只看该作者
支持楼主的分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-23 10:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表