启动不起来_国产开源工具:U盘启动工具Ventoy v1.0.29发布——墨涩网

d2facd993c3688106f10843635530a30.png

Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把ISO文件拷贝到U盘里面就可以启动了,无需其他操作。你可以一次性拷贝很多个不同类型的ISO文件,在启动时Ventoy会显示一个菜单来选择。 无差异支持Legacy BIOS和UEFI模式。目前已经测试了各类超过200+ 个ISO文件,

背景介绍

从相关文档中可以知道,Ventoy在启动时会基于ISO文件创建一个虚拟设备然后启动它。但是这个虚拟设备仅仅是BIOS层面的(Legacy或者UEFI)。大多数情况下它只在启动阶段存在。绝大多数现代操作系统的内核在启动之后都是使用它们自身的驱动来访问硬件,因此这个虚拟设备对于内核来说是不可见的。一般情况下,ISO里面的系统起来之后会遍历所有的硬件设备(CDROM/USB/HD …) 去寻找安装源。但是在Ventoy启动的环境下是找不到的,因为没有这样一个实际的安装介质,是虚拟的设备嘛。但是系统内核不知道这个情况,它们不知道当前是 Ventoy使用虚拟设备引导起来的,并不是传统的物理光驱或者U盘引导起来的。所以,如果不做特殊处理的话,大部分ISO文件启动以后就会报找不到安装源的错误而停止。因此,Ventoy必须做很多hook的工作,帮助内核找到、挂载安装源。其实就是告诉内核,当前是Ventoy从一个虚拟的设备引导起来的,你的安装源并不在常规的介质中,而是在XX硬盘的XXX.iso文件, 你把它挂载起来当做安装源就可以啦。。。。。但是这个hook工作是非常枯燥而且麻烦的,因为系统种类实在太多而且有各种各样的特殊情况。

Ventoy Compatible 概念

实际上,Ventoy在启动之前,把相关的信息都保存在了运行时内存中(保留内存段),同时还提供了一个工具可以在系统下获取这些信息。这样,操作系统调用一下这个工具就可以知道,当前是Ventoy环境启动的,而且还能详细知道是基于哪个磁盘的哪个ISO文件启动而来的。这样,系统就可以直接去找到对应的ISO文件,挂载起来作为安装源就可以了。不需要再用常规的方式去寻找。当然,如果是常规方式启动起来的,系统下调用这个工具是获取不到任何数据的,这种情况下就按照常规的启动步骤往下走就可以了。
因此,如果ISO里面的系统集成了这个工具,并且做了上述处理的话,对于Ventoy就很简单了,只需要做好这个虚拟设备就可以了,不用再费力做那些hook工作了。另一方面,还有一个问题就是,就算ISO里面的系统做了这些工作,Ventoy怎么知道呢?因此Ventoy提供了几种方式让ISO文件来标识自己。

我把集成了这个工具并且做了上述处理的操作系统或者ISO文件称之为 “Ventoy Compatible” 的。

Ventoy 特点

  • 100% 开源 (许可证)

  • 使用简单 (使用说明)

  • 快速 (拷贝文件有多快就有多快)

  • 直接从ISO文件启动,无需解开

  • 无差异支持Legacy + UEFI 模式

  • UEFI 模式支持安全启动 (Secure Boot) (1.0.07版本开始) 说明

  • 支持超过4GB的ISO文件

  • 保留ISO原始的启动菜单风格(Legacy & UEFI)

  • 支持大部分常见操作系统, 已测试200+ 个ISO文件

  • 不仅仅是启动,而是完整的安装过程

  • ISO文件支持列表模式或目录树模式显示 说明

  • 提出 “Ventoy Compatible” 概念

  • 支持插件扩展

  • 支持自动安装部署(1.0.09+) 说明

  • 启动过程中支持U盘设置写保护

  • 不影响U盘日常普通使用

  • 版本升级时数据不会丢失

  • 无需跟随操作系统升级而升级Ventoy

使用说明

  • Windows系统安装 Ventoy

下载安装包,例如 ventoy-1.0.00-windows.zip 然后解压开。
直接执行 Ventoy2Disk.exe 如下图所示,选择U盘设备,然后点击 Install 按钮即可。

fff0c92f7f69f5d044c6c9200074adcc.png

安装包内 Ventoy 版本:当前安装包中的Ventoy版本号
设备内部 Ventoy 版本:U盘中已安装的Ventoy版本号,如果为空则表示未安装
安装:把Ventoy安装到U盘,只有第一次的时候需要,其他情况就只需要Update升级即可
升级:升级U盘中的Ventoy版本,升级不会影响ISO文件

  • Linux系统安装 Ventoy

下载安装包,例如 ventoy-1.0.00-linux.tar.gz, 然后解压开.
在终端以root权限执行 sh Ventoy2Disk.sh -i /dev/XXX   其中 /dev/XXX 是U盘对应的设备名,比如 /dev/sdb

Ventoy2Disk.sh  选项  /dev/XXX
选项含义:
-i 安装ventoy到磁盘中 (如果对应磁盘已经安装了ventoy则会返回失败)
-I 强制安装ventoy到磁盘中,(不管原来有没有安装过)
-u 升级磁盘中的ventoy版本

针对Linux系统有几点需要特殊说明一下:
1. 执行脚本时需要有root权限, 对一些系统比如ubuntu/deepin 执行的时候需要在前面加 sudo 比如 sudo sh Ventoy2Disk.sh -i /dev/sdb
2. 必须cd到ventoy解压之后的目录下执行此脚本
3. 请务必输入正确的设备名称,ventoy不会检查你输入的设备是U盘还是本地硬盘,如果输错了有可能会把你的系统盘格式化掉哦!

请注意:选择安装的时候,U盘将会被格式化,里面所有的数据都会丢失!
你只需要安装一次Ventoy即可,剩下的就只需要把各种ISO文件拷贝到U盘中就可以了.
你也可以把它当成普通U盘使用,保存普通文件,不会影响Ventoy的功能。

  • 拷贝ISO文件

安装完成之后,U盘会被分成两个区。第一个分区将会被格式化为exFAT文件系统,你只需要把ISO文件拷贝到这里面即可。你可以把ISO文件放在任意目录以及子目录下。Ventoy会遍历所有的目录和子目录,找出所有的ISO文件,并按照字母排序之后显示在菜单中。
请注意:ISO文件的全路径中(包括目录、子目录和文件名)不能包含中文或者空格

  • 升级 Ventoy

如果Ventoy发布了新版本之后,你可以点击 Update 按钮进行升级,或者Linux系统中使用 -u 选项进行升级。
需要说明的是,升级操作是安全的,不会影响原有的ISO文件

更新日志

  • 2020/11/19 --- 1.0.29 发布

  1. 支持中文文件名(准确来讲是包括空格及其他Unicode字符,如中文、日文、韩文、特殊字符等等)

  2. 新增 Driver Update Disk (DUD) 插件。详见 说明

  3. 搜索 bootx64.efi 时跳过 Ventoy EFI 分区 (issue #592)

  4. 当启动一个不可启动的WIM文件时弹出一个提示信息。

  5. Ventoy2Disk.sh 中新增 -l 命令,用来显示U盘中的 Ventoy 版本信息。

  • 2020/11/14 --- 1.0.28 发布

  1. 在 Ventoy2Disk.sh 中新增 -L 选项,用来设置第1个分区的卷标 (默认是 ventoy)

  2. 扩展了 VTOY_DEFAULT_IMAGE 选项(比如 F4>Search and boot Windows)。 说明

  3. Kaspersky Rescue Disk 持久化支持。 说明

  4. 禁止 Ventoy 在非标准环境下启动。 说明

  5. vtoyboot-1.0.5 发布。 说明

  6. 新增 ISO 支持

  • siduction-patience-nox-amd64-latest.iso (Legacy + UEFI)

  • tails-amd64-4.12.iso (Legacy + UEFI)

下载地址

  1. https://github.com/ventoy/Ventoy/releases

  2. https://gitee.com/longpanda/Ventoy/releases/

  3. https://www.lanzoux.com/b01bd54gb 或 https://www.lanzous.com/b01bd54gb(蓝奏云)

  4. https://cloud.189.cn/t/b2eMBrrmay2y (天翼云)

  5. https://pan.baidu.com/s/1UzHMzn6SToxHRYw7HR16_w 提取码: vtoy (百度网盘)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

众多Android 开源项目再次推荐,学习不可错过

FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。项目地址:http://www.fbreader.org/FBReaderJ/Angle Angle是一款专为Android平台设计的&#…

LeetCode 1231. 分享巧克力(极小极大化 二分查找)

文章目录1. 题目2. 解题1. 题目 你有一大块巧克力,它由一些甜度不完全相同的小块组成。我们用数组 sweetness 来表示每一小块的甜度。 你打算和 K 名朋友一起分享这块巧克力,所以你需要将切割 K 次才能得到 K1 块,每一块都由一些 连续 的小…

筛选末位数字为1或5_看看广州示范性高中排行榜,怎么填报志愿?如何运用末位考生分数...

人们评价一所高中学校的层次通常会用两个指标:高考升学率和录取分数线,升学率又多以高优率高低为排序标准。在志愿填报期间,不少家长总希望我对学校进行比较。我试以三个维度对广州的70所示范性高中学校(校区)进行比较供大家参考。2016-2018近…

简明Python3教程 8.控制流

简介 迄今为止我们见到的所有程序总是含有一连串语句并且python忠实的顺序执行它们。 那么如何改变它们的执行顺序呢?例如你希望程序根据不同情况作出不同反应,按照当前时间分别 打印出’Good Morning’或’Good Evening’? 也许你已经猜到了&#xff0…

LeetCode 1166. 设计文件系统(哈希map)

文章目录1. 题目2. 解题1. 题目 你需要设计一个能提供下面两个函数的文件系统: create(path, value): 创建一个新的路径,并尽可能将值 value 与路径 path 关联,然后返回 True。 如果路径已经存在或者路径的父路径不存在,则返回 …

LeetCode 1087. 字母切换(回溯)

文章目录1. 题目2. 解题1. 题目 我们用一个特殊的字符串 S 来表示一份单词列表,之所以能展开成为一个列表,是因为这个字符串 S 中存在一个叫做「选项」的概念: 单词中的每个字母可能只有一个选项或存在多个备选项。 如果只有一个选项&…

遍历删除_面试难题:List 如何一边遍历,一边删除?

1. 新手常犯的错误可能很多新手(包括当年的我&#xff0c;哈哈)第一时间想到的写法是下面这样的&#xff1a;public static void main(String[] args) { List platformList new ArrayList<>(); platformList.add("博客园"); platformList.add("…

LeetCode 1060. 有序数组中的缺失元素(二分查找)

文章目录1. 题目2. 解题2.1 一次遍历2.2 二分查找1. 题目 给出一个有序数组 A&#xff0c;数组中的每个数字都是 独一无二的&#xff0c;找出从数组最左边开始的第 K 个缺失数字。 示例 1&#xff1a; 输入&#xff1a;A [4,7,9,10], K 1 输出&#xff1a;5 解释&#xff1…

iOS代码工具箱

判断日期是不是同一天&#xff0c;不要求是小时、分钟要一样。from&#xff1a;http://www.oliverfoggin.com/nsdate-isequaltodatetounitgranularity/?utm_sourceiOSDevWeekly&utm_campaigniOS_Dev_Weekly_Issue_115&utm_mediumemail #import <Foundation/Foundat…

LeetCode 536. 从字符串生成二叉树(递归)

文章目录1. 题目2. 解题1. 题目 你需要从一个包括括号和整数的字符串构建一棵二叉树。 输入的字符串代表一棵二叉树。 它包括整数和随后的0&#xff0c;1或2对括号。 整数代表根的值&#xff0c;一对括号内表示同样结构的子树。 若存在左子结点&#xff0c;则从左子结点开始…

LeetCode 1062. 最长重复子串(二分查找)

文章目录1. 题目2. 解题1. 题目 给定字符串 S&#xff0c;找出最长重复子串的长度。如果不存在重复子串就返回 0。 示例 1&#xff1a; 输入&#xff1a;"abcd" 输出&#xff1a;0 解释&#xff1a;没有重复子串。示例 2&#xff1a; 输入&#xff1a;"abbaba…

LeetCode MySQL 1174. 即时食物配送 II

文章目录1. 题目2. 解题1. 题目 配送表: Delivery -------------------------------------- | Column Name | Type | -------------------------------------- | delivery_id | int | | customer_id | int | | o…

存储过程语法

View Code 存储过程如同一门程序设计语言&#xff0c;同样包含了数据类型、流程控制、输入和输出和它自己的函数库。--------------------基本语法--------------------一.创建存储过程 create procedure sp_name() begin ......... end二.调用存储过程 1.基本语法&#xff1a…

LeetCode MySQL 1158. 市场分析 I

文章目录1. 题目2. 解题1. 题目 Table: Users ------------------------- | Column Name | Type | ------------------------- | user_id | int | | join_date | date | | favorite_brand | varchar | ------------------------- 此表主键是 user_i…

sqlite 数据量_向SQLite批量导入csv,txt数据

将csv或者txt格式的文件导入SQLite一般有两种方式&#xff1a;使用pandas.readcsv()读取后&#xff0c;用to_sql方法写入数据库使用SQLiteStudio创建表格&#xff0c;再导入数据但是这两种方法在数据量比较大的时候会非常慢&#xff0c;这里提供一种使用官网提供的SQLite.exe命…

ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL(转)

http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中&#xff0c;我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由。也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值&#xff0c;我们无…

LeetCode MySQL 580. 统计各专业学生人数

文章目录1. 题目2. 解题1. 题目 一所大学有 2 个数据表&#xff0c;分别是 student 和 department &#xff0c;这两个表保存着每个专业的学生数据和院系数据。 写一个查询语句&#xff0c;查询 department 表中每个专业的学生人数 &#xff08;即使没有学生的专业也需列出&a…

LeetCode 1522. Diameter of N-Ary Tree(递归)

文章目录1. 题目2. 解题1. 题目 Given a root of an N-ary tree, you need to compute the length of the diameter of the tree. The diameter of an N-ary tree is the length of the longest path between any two nodes in the tree. This path may or may not pass thro…

LeetCode MySQL 1355. 活动参与者(any函数)

文章目录1. 题目2. 解题1. 题目 表: Friends ------------------------ | Column Name | Type | ------------------------ | id | int | | name | varchar | | activity | varchar | ------------------------ id 是朋友的 id 和该表的主…

LeetCode MySQL 578. 查询回答率最高的问题

文章目录1. 题目2. 解题1. 题目 从 survey_log 表中获得回答率最高的问题&#xff0c; survey_log 表包含这些列&#xff1a;id, action, question_id, answer_id, q_num, timestamp。 id 表示用户 id&#xff1b; action 有以下几种值&#xff1a;"show"&#xff…