【Grub & Grub2】万能优盘启动盘 (WinPE、LinuxPE)-- 方法1 U盘三分区法(不推荐,供参考)

2023-10-27

        由于工作需要,经常使用Windows和Linux双系统,系统使用过程中,个人涉及到的开发软件过多(光基于Eclipse的IDE就有好几个),经常过度安装软件,有时会越来越庞大,越来越不稳定,定期要重新安装配置,但是又不想重头安装,基本软件最好先配置好备份一下,然后直接恢复。

        Windows下使用Ghost即可,Linux下之前使用dd以及tar备份过,前者磁盘限制较大,后者效果很不好,后来使用了CloneZilla做备份,注意恢复时需要修改引导,所以为了避免引导被破坏,可以参考以下方式分配硬盘。

推荐的硬盘分区方式
分区 描述 大小 备注
第1分区 【GRUB2 分区】

约250MB

fat/fat32格式

放GRUB2配置文件,如何制作BIOS或者UEFI的GRUB2引导,请参考:

BIOS:https://blog.csdn.net/u010875635/article/details/82584644

UEFI:https://blog.csdn.net/u010875635/article/details/74289971

第2分区 【Win7 NTFS分区】

约100GB

NTFS格式

Windows安装时,引导选择在本分区,且不新建引导,这样不会破坏整体GRUB2引导,对于有多个Windows,可以多建几个分区,统一使用GRUB2引导
第3分区 【文件分区1】 自定义  
…… …… 自定义  
第3+n分区 【文件分区n】 自定义  
第4+n分区 【Linux ext4分区】   Windows安装时,引导选择在本分区,不能选择磁盘,这样不会破坏整体GRUB2引导,对于有多个Linux,可以多建几个分区,统一使用GRUB2引导

      以上属于题外话,下面讲述U盘万能启动盘的制作,万能启动盘有以下特性

  1. 同时使用GRUB和GRUB2(因为GRUB2不支持UD分区)
  2. 支持UD分区
  3. 支持BIOS和UEFI
  4. 含WinPE(含aomei无损windows分区)
  5. 含LinuxPE如Slitaz及Ubuntu Live CD(含gparted无损Linux分区)
  6. 含CloneZilla(支持Linux系统备份)

        整个优盘的分区分布如下:

万能启动优盘分区分布
分区 描述 大小 备注
第1分区

【UD分区】隐藏

根据WinPE大小确定,一般500MB 放置bios版的grub,以及winpe
第2分区 【数据分区】可见 正常U盘拷贝文件的区域

可将Ubuntu镜像拷贝进去

第3分区 【EFI分区】高端隐藏 根据UEFI版本WinPE和CloneZilla大小决定,500MB左右 BIOS及UEFI版本GRUB2,以及EFI WinPE,CloneZilla等

 

    制作需要原料(由于文件太大,我就不上传一键制作软件了)

1、U盘三分区一键制作软件(例如天意优盘三分区,我们在这个基础上改就好了)

2、制作好的BIOS及UEFI版本的GRUB2

3、Ubuntu镜像

4、CloneZilla镜像

5、UltraISO以及FbinstTool两个编辑软件

6、U盘一个(2G以上,若Ubuntu较大,则需更大优盘)

 

        解压已有的U盘三分区压缩包,会发现三个文件,ty.fba、ty.exe、ty.iso,fba对应UD分区,ISO对应EFI分区。

 

一、制作步骤

        1、解压CloneZilla,提取 live、syslinux文件夹以及CloneZilla-Live-Version和GPL文件

 

        2、使用UltraISO编辑ty.iso,将live、syslinux文件夹以及CloneZilla-Live-Version和GPL文件添加到根目录

 

        3、将BIOS和UEFI的GRUB2添加到ty.iso的对应目录(根据制作是参数确定)

 

 

        3、编辑GRUB2的配置菜单(提取CloneZilla下EFI/boot/grub.conf的menuentry菜单,集成进入我们的菜单),GRUB2原生支持UEFI,所以部分BIOS菜单也可添加到UEFI版本GRUB2菜单。

        BIOS版GRUB2菜单范例(grub.cfg)

        注意:XUbuntu镜像的路径为/OS/Linux下,所以我们后面要将镜像放到对应的可见区域内,名称一定要确保完全一致。

insmod echo
insmod part_msdos
insmod fat

#background
insmod jpeg
insmod gfxmenu
insmod gfxterm
insmod gfxterm_background
insmod gfxterm_menu
insmod true

#adjust the screen resolution
terminal_output gfxterm


set background_image=$prefix/background.jpg

# set menu_color_normal=white/black
# set menu_color_highlight=black/light-gray
# background_color 255,255,155,0; then

#default select menu index
set default=0

#timeout
set timeout_style=menu
set timeout=5

menuentry "Win7" --class windows --class os {
	insmod ntfs
	insmod chain
	insmod echo
	set root=(hd1,msdos2)
	echo "Start Windows"
	chainloader +1
}

menuentry "Install XUbuntu18.04" --class ubuntu --class os {
	insmod ext2
	insmod linux
	insmod loopback
	insmod ntfs
	insmod echo
	search.file /OS/Linux/xubuntu-18.04-desktop-amd64.iso root
	loopback loop0 /OS/Linux/xubuntu-18.04-desktop-amd64.iso
	linux (loop0)/casper/vmlinuz ro boot=casper iso-scan/filename=/OS/Linux/xubuntu-18.04-desktop-amd64.iso ro splash
	initrd (loop0)/casper/initrd.lz
	echo "Install XUbuntu 18.04"
}


menuentry "Clonezilla live (Default settings, VGA 800x600)"{
  insmod linux
  search --set -f /live/vmlinuz
  linux /live/vmlinuz boot=live union=overlay username=user hostname=bionic config quiet components noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  initrd /live/initrd.img
}
menuentry "Clonezilla live (Default settings, VGA 1024x768)"{
  insmod linux
  search --set -f /live/vmlinuz
  linux /live/vmlinuz boot=live union=overlay username=user hostname=bionic config quiet components noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=791 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  initrd /live/initrd.img
}

menuentry "Clonezilla live (Default settings, VGA 640x480)"{
  insmod linux
  search --set -f /live/vmlinuz
  linux /live/vmlinuz boot=live union=overlay username=user hostname=bionic config quiet components noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=785 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  initrd /live/initrd.img
}

menuentry "Clonezilla live (Default settings, KMS)"{
  insmod linux
  search --set -f /live/vmlinuz
  linux /live/vmlinuz boot=live union=overlay username=user hostname=bionic config quiet components noswap edd=on locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=791 ip= net.ifnames=0  splash
  initrd /live/initrd.img
}

menuentry "Clonezilla live (To RAM, boot media can be removed later)"{
  insmod linux
  search --set -f /live/vmlinuz
  linux /live/vmlinuz boot=live union=overlay username=user hostname=bionic config quiet components noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 toram=live,syslinux ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  initrd /live/initrd.img
}

menuentry "Clonezilla live Safe graphic settings (vga=normal)"{
  insmod linux
  search --set -f /live/vmlinuz
  linux /live/vmlinuz boot=live union=overlay username=user hostname=bionic config quiet components noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" ip= net.ifnames=0 nomodeset vga=normal nosplash
  initrd /live/initrd.img
}

menuentry "Clonezilla live (Failsafe mode)"{
  insmod linux
  search --set -f /live/vmlinuz
  linux /live/vmlinuz boot=live union=overlay username=user hostname=bionic config quiet components noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" acpi=off irqpoll noapic noapm nodma nomce nolapic nosmp ip= net.ifnames=0 nomodeset vga=normal nosplash
  initrd /live/initrd.img
}

menuentry --hotkey=s "Clonezilla live (speech synthesis)"{
  insmod linux
  search --set -f /live/vmlinuz
  linux /live/vmlinuz boot=live union=overlay username=user hostname=bionic config quiet components noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1 speakup.synth=soft ---
  initrd /live/initrd.img
}

#menuentry "memtest"{
#  search --set -f /live/memtest
#  linux16 /live/memtest
#}

#menuentry "FreeDOS"{
#  linux16 memdisk
#  initrd /live/freedos.img
#}

menuentry "iPXE"{
  search --no-floppy --set=root -f /live/ipxe.efi
  chainloader /live/ipxe.efi + 1
}



menuentry "-------------------" --class ubuntu --class os{
	set root=(hd0,gpt1)
}



menuentry "reboot" --class windows --class os{
	insmod reboot
	reboot
}

menuentry "halt" --class windows --class os{
	insmod halt
	halt
}

 

        UEFI版GRUB2,菜单

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}


insmod part_msdos
insmod fat

#set font
font="$prefix/unicode.pf2"
if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=zh_CN
  insmod gettext
fi

#adjust the screen resolution
terminal_output gfxterm

#background
insmod jpeg
if background_image $prefix/background.jpg; then
  true
else
  set menu_color_normal=white/black
  set menu_color_highlight=black/light-gray
  if background_color 255,255,155,0; then
    clear
  fi
fi



#default select menu index
set default=0

#timeout
set timeout_style=menu
set timeout=5


menuentry "start win8 pe" --class windows --class os {
	set efifile=/EFI/Boot/win8pe.efi
	search.file $efifile root
	echo "Start Windows"
	chainloader $efifile
}

menuentry "start windows" --class windows --class os {
	insmod ntfs
	set efifile=/EFI/Microsoft/Boot/bootmgfw.efi
	search.file $efifile root
	echo "Start Windows"
	chainloader $efifile}

menuentry "start ubuntu" --class ubuntu --class os {
	insmod ext2
	set kernelfile=/vmlinuz
	set initrdfile=/initrd.img
	search.file $kernelfile root
	
	linux $kernelfile ro root=/dev/sda2
	initrd $initrdfile
	echo "Start Ubuntu"
}


menuentry "-------------------" --class ubuntu --class os{
	set root=(hd0,gpt1)
}

menuentry "install ubuntu" --class ubuntu --class os {
	insmod ext2
	insmod loopback

	set isofile=/OS/Linux/xubuntu-16.04.3-desktop-amd64.iso	
	search.file $isofile root

	loopback loop $isofile
	linux	(loop)/casper/vmlinuz.efi  boot=casper iso-scan/filename=$isofile
	initrd	(loop)/casper/initrd.lz
}

menuentry "-------------------" --class ubuntu --class os{
	set root=(hd0,gpt1)
}

menuentry "reboot" --class windows --class os{
	insmod reboot
	reboot
}

menuentry "halt" --class windows --class os{
	insmod halt
	halt
}

        4、使用FbinstTool修改UD分区grub菜单,增加启动grub2菜单(grub2不支持ud分区,所以bios版本grub2放到了EFI分区镜像)。

 

        从grub启动grub2。

title GRUB2 Menu
      find --set-root /efi/grub/z_g2ldr
      kernel /efi/grub/z_g2ldr

 

        至此,定制版万能启动优盘制作完毕,插入U盘,使用ty.exe开始制作,制作完毕后,将Ubuntu镜像放到可见区菜单中设置的目录中,开机从U盘启动即可。

 

二、相关文件修改

1、GRUB菜单修改,使用FbinstTool工具即可

2、GRUB2菜单修改,使用由于EFI分区是隐藏的,所以需要使用工具(例如Bootice的分区管理)显示分区,然后使用记事本修改菜单即可,若是在Linux下则更简单,直接挂载分区,然后修改。

3、若是觉得Ubuntu放在外部麻烦,可以下载精简版的将其打包进ISO中,然后重新制作U盘即可隐藏。一般来说太大会不方便更换。

4、升级CloneZilla和Ubuntu,替换文件夹及文件即可,若是有菜单修改需求,修改菜单。

5、若是不希望使用grub,可以不用UD分区,将所有文件制作到一个ISO中,然后写入U盘,写完之后将grub2的BIOS引导使用扇区工具(BootIce)写入mbr,这里使用UD分区目的就是直接使用ty.exe工具一键制作而已。

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Grub & Grub2】万能优盘启动盘 (WinPE、LinuxPE)-- 方法1 U盘三分区法(不推荐,供参考) 的相关文章

  • SQL注入--报错和盲注

    目录 报错注入 floor函数报错注入 extractvalue 函数报错注入 updatexml 函数报错注入 盲注 布尔盲注 时间盲注 报错注入 文章内容篇幅较长 请认真研读 回顾之前的文章 sql注入基础 了解到sql注入的分类有 基
  • EXCEL-VBA:弹出对话框,打开文件(指定扩展名)两种方法

    方法一 Dim FileName As String FileName Application GetOpenFilename Excel 文件 xls xlsx 方法二 With Application FileDialog msoFil
  • Shell脚本入门 07:进程与信号

    文章目录 目的 进程相关 子进程 子Shell 进程替换 信号相关 发送信号 捕获信号 总结 目的 进程与信号中Linux中比较重要的内容 Shell脚本编写调试时也会涉及一些进程与信号相关的内容 这篇文章将对相关内容做个简单的记录 进程相
  • 多线程中递归锁的实现

    多线程中递归锁的实现 在上一篇文章中 我已经阐述了多线程中简单锁的实现 可在结束的时候 我就提了那么一个问题 那就是如果在一个链表中进行插入时 要进行查询的操作 如果只是简单的锁 是没法实现的 所以 递归锁 就浮现于世了 可能有些人看到递归
  • html动态加载js方法,原生JS实现动态加载js文件并在加载成功后执行回调函数的方法...

    本文实例讲述了原生JS实现动态加载js文件并在加载成功后执行回调函数的方法 分享给大家供大家参考 具体如下 有的时候需要动态加载一个javascript文件 并且在加载成功后执行回调函数 例如文件中保存了json数据之类的 要实现这样的功能
  • rclone 命令大全

    rclone 命令大全 使用google翻译 这描述了每个 rclone 命令 分为两组 非后端和后端标志 可用的全局标志 非后端标志 这些标志可用于每个命令 ask password 允许提示输入加密配置的密码 默认为 true auto
  • 肘部法和轮廓系数法确定K-means中的k值

    目录 1 K Means 算法 2 肘部法 3 轮廓系数法 1 K Means 算法 k means算法 详解k means算法原理 是机器学习中常用的聚类算法 原理简单实现容易 内存占用量也比较小 但使用这个方法时 需要事先指定将要聚合成
  • 【Python递归练习】

    1 出售金鱼问题第一次卖出全部金鱼的一半加二分之一条金鱼 第二次卖出乘余金鱼的三分之一加三分之一条金鱼 第三次卖出剩余金鱼的四分之一加四分之一条金鱼 第四次卖出剩余金鱼的五分之一加五分之一条金鱼 现在还剩下11条金鱼 问这鱼缸里原有多少条金
  • 模块定义qmldir文件

    Module Definition qmldir Files 模块定义qmldir文件 There are two distinct types of qmldir files qmldir文件有两种不同的类型 QML document d
  • ubuntu查看系统资源占用(内存,cpu和进程)

    转载自网易博客 http bluexp29 blog 163 com blog static 33858148201071534450856 bluexp29的博客 linux真是太强大了 查看ubuntu的资源占用的命令为 top top
  • odoo第三方模块审批模块的使用

    1 激活超级用户 因为里面的domain限制了一些字段非超级用户只读 2 依次点击 设置 gt gt 审批流设置 设置审批流 审批流设置完成后 进入所绑定模型的form视图 可以看到多了三个动作
  • python 自(1)定义变量 数据类型 判断数据类型 转换数据类型 算数运算符 复合运算符 比较运算符 逻辑运算符 赋值运算符

    注释 注释 就是一个 也可以 ctrl 也可以出来注释 命名规范 标识符 由字母 下划线 数字 组成 数字不能开头 不可以使用 关键字 严格区分大小写 定义变量 变量定义 重复利用 例如 cons 你好小周 print cons print
  • 【论文阅读-ASE 2020】利用单词重叠信息的代码检索 OCoR: An Overlapping-Aware Code Retriever

    OCoR An Overlapping Aware Code Retriever Conference ASE 2020 Authors 摘要 代码搜索任务是通过给出一段自然语言描述 模型能够找到一系列最相关的代码片段 由此来帮助开发人员重
  • Spring中单例bean注入多例bean的解决方法

    1 问题描述 在项目代码的使用过程 单例对象A中需要注入对象B B对象要求是多例的 我们在对象B上添加注解 Scope prototype 代码运行过程中 发现A中注入的B对象始终是同一个 并没有实现多例的效果 下面展示一些 内联代码片 C
  • 蓝桥云课——跳跃 Python(动态规划)

    题目地址 跳跃 此题是一道比较经典又带有一定难度的动态规划题目 且听我慢慢道来 虽然不一定能讲明白 先输入数据 n m map int input split score for i in range n score append list
  • Activiti6.0学习实践(4)-流程引擎配置一

    在上一节 我们进行了一个hello world 的简单应用搭建 本节继续对activiti的一些重要组件进行更进一步的分析 目录 1 activiti工程骨架 1 2 添加demo类到骨架工程 1 3 创建基于骨架的maven工程 2 流程

随机推荐

  • Leetcode20. 给定字符串,判断括号是否有效,不可用栈

    class Solution public boolean isValid String s int len s length if s length 2 1 s length 0 return false else for int i 0
  • SpringBoot项目——创建菜单与游戏页面

    SpringBoot项目 vue 实现游戏页面 回顾 SpringBoot项目 配置git环境与项目创建 文章目录 SpringBoot项目 vue 实现游戏页面 vue 实现前端页面 Web 一 导航栏功能 PK地图的实现 二 js 控制
  • c3p0连接池和druid连接池的使用

    1 c3p0连接池 没有配置文件的情况下 Test public void T1 throws SQLException PropertyVetoException ComboPooledDataSource cpds new ComboP
  • Keil N01:的软件逻辑分析仪( logic analyzer)使用

    在keil MDK中软件逻辑分析仪很强的功能 可以分析数字信号 模拟化的信号 CPU的总线 UART IIC等一切有输出的管脚 提供调试函数机制 用于产生自定义的信号 如Sin 三角波 澡声信号等 这些都可以定义 以keil里自带的stm3
  • 3.网络爬虫——Requests模块get请求与实战

    Requests模块get请求与实战 requests简介 检查数据 请求数据 保存数据 前言 前两章我们介绍了爬虫和HTML的组成 方便我们后续爬虫学习 今天就教大家怎么去爬取一个网站的源代码 后面学习中就能从源码中找到我们想要的数据 此
  • 中级软件设计师考试(软考中级)考试简介与考试内容分布

    原文链接 中级软件设计师考试 软考中级 考试简介与考试内容分布 文章目录 一 考试简介 1 1 软件设计师考试是什么 1 2 通过软件设计师考试应该具备的技术能力 1 3 软件设计师 中级 资格简介 1 4 什么是评什么是聘 1 5 什么是
  • java 栈----java.util.Stack

    Stack类简介 Stack 类表示后进先出 LIFO 的对象堆栈 它通过五个操作对类 Vector 进行了扩展 Stack类继承自Vector类 允许将向量视为堆栈 它提供了通常的 push 和 pop 操作 以及取堆栈顶点的 peek
  • 软件测试-外国语言和易用性测试

    1 外国语言测试 1 1 使用文字图片有意义 开发软件时 考虑用户的国家和地理位置 使软件适应特定地域特征 照顾到语言 方言 地区习俗和文化的过程称为本地化 测试此类软件称为本地化测试 1 2 翻译问题 文本扩展 将英语翻译成其他语言时 通
  • spring框架整合shiro

    shiro框架 定义 Shiro是apache旗下一个开源框架 它将实现用户身份认证 权限授权 加密 会话管理等功能 组成了一个通用的安全认证框架 既然shiro将安全认证相关的功能抽取出来组成一个框架 使用shiro就可以非常快速的完成认
  • 使用frp工具实现内网穿透以及配置多个ssh和web服务

    frp简介 FRP 项目地址 https github com fatedier frp blob master README zh md frp 是一个可用于内网穿透的高性能的反向代理应用 支持 tcp udp 协议 为 http 和 h
  • qt中的toUtf8, toLatin1, Local8bit, toUcs4

    1 首先说下字符集 gb18030字符集兼容了gbk字符集 以两个字节表示一个文字 windows系统可能使用的就是这两种的一种 unicode字符集以2个或以上的字节表示一个汉字 通用字符集 Universal Character Set
  • Windows操作系统安全加固基线检测脚本

    一 背景信息 在我们的安全运维工作中经常需要进行安全基线配置和检查 所谓的安全基线配置就是系统的最基础的安全配置 安全基线检查涉及操作系统 中间件 数据库 甚至是交换机等网络基础设备的检查 面对如此繁多的检查项 自动化的脚本可以帮助我们快速
  • 树的遍历(bfs+递归)

    题目描述 一个二叉树 树中每个节点的权值互不相同 现在给出它的后序遍历和中序遍历 请你输出它的层序遍历 输入描述 第一行包含整数 N 表示二叉树的节点数 第二行包含 N 个整数 表示二叉树的后序遍历 第三行包含 N个整数 表示二叉树的中序遍
  • Docker容器占用过多C盘空间问题解决方案

    Docker容器占用过多C盘空间问题解决方案 简介 Docker 是一个开源的容器化平台 它能够将应用程序及其依赖项打包成一个独立的 可移植的容器 然而 在使用 Docker 过程中 有时会遇到C盘空间不足的问题 这是因为默认情况下 Doc
  • cpu cache一致性和内存屏障机制

    1 cache 局部性原理 引入 Cache 的理论基础是程序局部性原理 包括时间局部性和空间局部性 即最近被CPU访问的数据 短期内CPU 还要访问 时间 被 CPU 访问的数据附近的数据 CPU 短期内还要访问 空间 因此如果将刚刚访问
  • Spring采用properties配置多个数据库

    在一个项目中有这样的需求 上海和武汉采用不同的系统 每个系统都有自己的数据库 但是在上海的系统需要访问武汉的数据库 这就要在项目中配置两个数据源 下面是我给的SSH采用properties配置数据源的方法 1 要有两个properties文
  • Faster R-CNN网络架构详解和TensorFlow Hub实现(附源码)

    文章目录 一 RPN网络 1 RPN网络简介 2 backbone网络简介 二 Faster R CNN网络架构 1 Faster R CNN网络简介 2 基于TensorFlow Hub实现Faster R CNN 前言 Faster R
  • 1089 狼人杀-简单版 (20 分)

    题目 题目链接 题解 思维 首先我们要明确这类问题不用计算机 我们会怎么去做 显然是推矛盾吧 就是假设哪些是狼人 哪些说了假话等等 根据每个人说的话推出矛盾就说明假设不合理 反之正确 既然要推出矛盾就需要找到一些条件 如果推的过程中发现与条
  • 使用UncaughtExceptionHandler捕获运行时异常

    前面我们知道Exceptions分为可检查异常 checked exceptions 和运行时异常 runtime exception 具体参照文章Java异常处理手册和最佳实践 对于可检查异常 我们必须对它进行处理 要么捕获要么在方法上使
  • 【Grub & Grub2】万能优盘启动盘 (WinPE、LinuxPE)-- 方法1 U盘三分区法(不推荐,供参考)

    由于工作需要 经常使用Windows和Linux双系统 系统使用过程中 个人涉及到的开发软件过多 光基于Eclipse的IDE就有好几个 经常过度安装软件 有时会越来越庞大 越来越不稳定 定期要重新安装配置 但是又不想重头安装 基本软件最好