1 个不稳定版本
0.4.7 | 2024 年 5 月 24 日 |
---|
#711 在 解析实现
175KB
4.5K SLoC
Caligula 烧录工具
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
- 官方仓库:
pacman -S caligula
- caligula-bin 在 AUR 上: 我们还自动在每次发布时发布二进制文件。
- 官方仓库:
- Nix
- Nixpkgs:
nix-env -i caligula
- 仓库 flake:如果您的系统启用了 flake,您可以使用
github:ifd3f/caligula
获取最新更改。
- Nixpkgs:
- 从源代码构建:这是一个相对标准的货运项目,所以你应该能够直接
git clone
和cargo 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