#disk #disk-image #input-file #file-format #imaging #tui #burn

应用 caligula

一个轻量级、用户友好的磁盘镜像工具

1 个不稳定版本

0.4.7 2024 年 5 月 24 日

#711解析实现

GPL-3.0 许可证

175KB
4.5K SLoC

Caligula 烧录工具

CI

Screenshot of the Caligula TUI verifying a disk.

Caligula 是一个轻量级、用户友好的 TUI 磁盘镜像工具。

$ caligula burn -h
A lightweight, user-friendly disk imaging tool

Usage: caligula burn [OPTIONS] <INPUT>

Arguments:
  <INPUT>  Input file to burn

Options:
  -o <OUT>                         Where to write the output. If not supplied, we will search for possible disks and ask you for where you want to burn
  -z, --compression <COMPRESSION>  What compression format the input file is in [default: ask] [possible values: ask, auto, none, gz, bz2, xz]
  -s, --hash <HASH>                The hash of the input file. For more information, see long help (--help) [default: ask]
      --hash-of <HASH_OF>          Is the hash calculated from the raw file, or the compressed file? [possible values: raw, compressed]
      --show-all-disks             If provided, we will show all disks, removable or not
      --interactive <INTERACTIVE>  If we should run in interactive mode or not [default: auto] [possible values: auto, always, never]
  -f, --force                      If supplied, we will not ask for confirmation before destroying your disk
      --root <ROOT>                If we don't have permissions on the output file, should we try to become root? [default: ask] [possible values: ask, always, never]
  -h, --help                       Print help (see more with '--help')
  -V, --version                    Print version

特性

  • 小型二进制文件(几兆字节)
  • 酷炫的图形
  • 列出附加磁盘,并告诉你其大小和硬件型号信息
  • 丰富的确认对话框,以防你意外删除文件系统
  • 解压缩各种格式的输入文件,包括 gz、bz2 和 xz
  • 在烧录前验证您的输入文件与散列值,支持 md5、sha1、sha256 等!
  • 如果之前忘记以 root 运行,将运行 sudo/doas/su(这种情况会发生)
  • 写入后验证您的磁盘,以确保其正确写入
  • Linux 版本静态链接
  • 我提到过 酷炫的图形 吗?

如何安装

安装 Caligula 有几种方法。

  • 二进制发布:您可以从 最新的 Github 发布版 下载预构建的二进制文件。
  • Arch Linux
  • Nix
    • Nixpkgs: nix-env -i caligula
    • 仓库 flake:如果您的系统启用了 flake,您可以使用 github:ifd3f/caligula 获取最新更改。
  • 从源代码构建:这是一个相对标准的货运项目,所以你应该能够直接 git clonecargo build --release 它。

平台支持矩阵

平台 自动测试 自动构建 发布的二进制文件
x86_64-linux
x86_64-darwin
aarch64-linux
aarch64-darwin

Linux对于其他架构理论上可以工作,但我们不做任何保证。

我们计划最终支持Windows、FreeBSD和OpenBSD。如果您希望支持其他操作系统和架构,请提交问题!

常见问题解答

为什么你做了这个?

因为我想要一个围绕 dd 的良好、用户友好的包装器,而不是像某些其他磁盘蚀刻软件那样,是一个约 90 95 MB 的可执行文件,它包装了Chromium并且消耗了数百MB的RAM。

为什么叫“凯吉拉”?

因为曾经有一个名为Nero Burning ROM的工具,所以我选择另一位疯狂的罗马皇帝来命名这个软件。这是一个非常不创造性的名字,我可能以后会改名字。

为什么dd对你来说不够好?

我知道dd是如何工作的。实际上,我可以用以下方法来代替caligula

$ sha256sum some-image-file.iso.gz

然后,我必须在这里暂停以确认文件具有正确的SHA。

$ gunzip some-image-file.iso.gz
$ lsblk

我在这里暂停以确保我的磁盘确实被操作系统检测到。

$ dd bs=4M if=some-image-file.iso of=/dev/

我在这里暂停以确认从上面的输出来看,我确实输入了正确的磁盘。

$ dd bs=4M if=some-image-file.iso of=/dev/sdb

我再次暂停,以确保我确实输入了正确的磁盘,并且我不会摧毁任何存储重要数据的磁盘。

dd: failed to open '/dev/sdb': Permission denied

我忘记输入sudo。

$ sudo dd bs=4M if=some-image-file.iso of=/dev/sdb

没有输出,但我想看到进度。

^C^C^C
$ sudo dd bs=4M if=some-image-file.iso of=/dev/sdb status=progress

最后,写完了!

到这个时候,我甚至懒得验证磁盘是否正确写入,因为我不知道如何执行此操作,而且——让我们说实话——我认为其他人也不太可能知道。

当然,我可以用下面的命令来代替整个舞蹈

$ caligula burn some-image-file.iso.gz

让计算机填空,因为计算机擅长填空,这就是它们存在的原因。并不是我不知道如何使用dd,只是在我闪存了这么多SD卡和USB之后,我更愿意做一件更不容易出错的事情。

为什么选择Rust?

因为它🚀🚀🚀非常快🚀🚀🚀并且💾💾💾内存安全💾💾💾

为什么选择Nix?

它使CI更可预测。

为什么有这么多其他依赖项?

公平地说,Rust没有非常全面的标准库,而且我大多数情况下只使用这些依赖项中的一个或两个函数。多亏了死代码消除、内联和其他优化,它们最终对总体二进制大小的影响不大。

二进制文件会变得更大吗?

我想保持二进制文件非常小,或者至少尽可能小。我目前的软限制是将x86_64-linux版本的二进制文件大小控制在4MB以下。这个值可能会随着时间的推移或随着功能的添加而改变,但我不想让二进制文件接近普通Electron应用的大小。截至v0.4.3,它只有2.77MB,这还不错!

为什么必须输入burn?你以后会添加其他子命令吗?

是的。我最终™计划添加Windows安装盘支持,这很可能会成为其自己的子命令。

依赖项

~22–40MB
~582K SLoC