在 Windows 上的 Ubuntu 上安装 grub 和 xorriso

在 Windows 上的 Ubuntu 上安装 grub 和 xorriso

我需要使用 grub-mkrescue 来生成一些 ISO。我的主要工作环境是 Windows 10 机器。我已经使用 Linux 子系统执行各种任务。

我成功地安装了 grub,没有遇到任何问题,但我需要 xorriso 才能使用 grub-mkrescue。当我这样做时,sudo apt-get install xorriso我收到以下错误:

正在读取软件包列表... 完成 正在构建依赖关系树 正在读取状态信息... 完成 软件包 xorriso 不可用,但被另一个软件包引用。这可能意味着软件包缺失、已过时或只能从其他来源获得

E: 软件包‘xorriso’没有安装候选项

支持吗?

答案1

从源代码构建其静态链接版本。

下载https://www.gnu.org/software/xorriso/xorriso-1.4.6.tar.gz 到你想要构建 xorriso 的目录

tar xzf xorriso-1.4.6.tar.gz
cd xorriso-1.4.6
touch xorriso/*.info
./configure && make

我认为您需要包build-essentialtar

该命令touch xorriso/*.info避免了需要makeinfo 从包中获取程序texinfo,这种情况在极少数情况下可能会由于 中的文件顺序不当而出现xorriso-1.4.6.tar.gz。(有关故障症状,请参阅 user3804799 于 10 月 12 日 18:56 的评论。这种情况不会发生在真正的 Debian 或 Ubuntu 上,因为没有tar选项-m会从 tar 存档中恢复时间戳。)

成功后将生成一个二进制文件,运行如下

xorriso/xorriso -version

应该说类似

GNU xorriso 1.4.6 : RockRidge filesystem manipulator, libburnia project.
...
There is NO WARRANTY, to the extent permitted by law.

如果是这样,那么您可以使用可执行二进制文件的完整路径作为 grub-mkrescue选项的参数--xorriso

grub-mkrescue -o grub.iso --xorriso=/...path.../xorriso-1.4.6/xorriso/xorriso prepared_directory

如果这对您来说更方便,您可以将可执行二进制文件移动到任何其他存储位置。



虽然在 Win10-Ubuntu 子系统中构建 GNU xorriso 的问题没有被诊断出来,但我添加了以下关于在真正的 Ubuntu没有 Linux 内核依赖项,这可能会使 xorriso 脱离 Win10-Ubuntu 存储库。

如果xorriso/xorriso已经在xorriso-1.4.6树中构建,则首先删除所有编译结果:

make clean

强制执行不涉及 Linux 特定功能的配置并编译:

export CFLAGS="-DLibburn_use_sg_dummY"
./configure --disable-libacl --disable-xattr --disable-zlib --disable-libreadline
make

然后应将生成的文件xorriso/xorriso复制到 Win10-Ubuntu 子系统范围内。尝试/...path.../xorriso -version它是否愿意启动(即它是否找到必要的库)。

xorriso 使用“GNU/Linux SG_IO 适配器 sg-linux”在 Win10-Ubuntu 上构建并运行。但 ioctl(SG_IO) 或对光驱的访问似乎未实现。未检测到任何驱动器。
因此,似乎最好使用-DLibburn_use_sg_dummY“X/Open 适配器 sg-dummy”进行编译,它不依赖于 Linux 细节,也不会尝试操作光驱。

相关内容