2 个版本

0.1.1 2020年3月21日
0.1.0 2020年3月21日

#439 in 压缩

MIT 许可证

200KB
372

NutShell

nutshell

在“NutShell”中创建裁判环境!

NutShell 是 Project Polya 的一部分。该项目旨在为教师/学生提供一个命令行助手,以便他们可以设置自己的沙箱环境,以便在后来的评分中顺利协作。

如何使用?

为什么不先查看帮助页面呢?

nutshell 0.1.0

USAGE:
    nutshell <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    create-root      create an arch chroot environment
    help             Prints this message or the help of the given subcommand(s)
    init-overlay     initialize an overlay file system
    make-squashfs    create a squashfs

create-root

nutshell-create-root 0.1.0
create an arch chroot environment

USAGE:
    nutshell create-root [FLAGS] [OPTIONS] --target-dir <target-dir>

FLAGS:
    -h, --help       Prints help information
    -s, --shell      enter the chroot environment after basic setups
    -V, --version    Prints version information

OPTIONS:
    -d, --download-backend <download-backend>    downloader [default: aria2c]  [possible values: aria2c, wget, pacstrap]
    -m, --mirror <mirror>                        image download mirror [default: https://mirrors.kernel.org/archlinux/]
    -l, --mirror-list <mirror-list>              pacman mirror list
    -p, --pacman-config <pacman-config>          pacman config file
    -t, --target-dir <target-dir>                target directory to create the root              

此命令帮助您创建一个 Arch Linux chroot 环境。您可以设置自己的下载后端: aria2cwgetpacstrap 均可用。

此命令将下载 Arch 的引导 tar 文件并将其提取到目标目录。使用 systemd-nspawn,它将填充 GPG 密钥并运行一些基本更新。它还将准备 basebase-devel 环境。

用户来自中国大陆

强烈建议您在大陆设置镜像,例如 https://mirrors.tuna.tsinghua.edu.cn/archlinux/。至于 mirrorlist,您可能需要以下配置

# mirrorlist
Server = https://ftp.sjtu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

init-overlay

nutshell-init-overlay 0.1.0
initialize an overlay file system

USAGE:
    nutshell init-overlay [FLAGS] [OPTIONS] --base-dir <base-dir> --data-dir <data-dir> --mount-dir <mount-dir>

FLAGS:
    -h, --help            Prints help information
    -p, --print-result    print the result in json format
    -s, --shell           enter the chroot environment after mount
    -V, --version         Prints version information

OPTIONS:
    -b, --base-dir <base-dir>      the path to the lowerdir
    -d, --data-dir <data-dir>      the path store workdir and upperdir
    -m, --mount-dir <mount-dir>    the path to mount the merged root
    -t, --tmp-size <tmp-size>      create and bind a tmpfs with the given size

此命令帮助将 squashfs 文件与覆盖层一起挂载。 data-dirbase-dir 是覆盖层所需的临时存储路径。

make-squashfs

nutshell-make-squashfs 0.1.0
create a squashfs

USAGE:
    nutshell make-squashfs [FLAGS] --source <source> --target <target>

FLAGS:
    -f, --faster     make the process faster by disabling high quality compression
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -s, --source <source>    source directory
    -t, --target <target>    target path

此命令是 mksquashfs 的包装器。它将帮助创建一个 squashfs 文件,该文件可以在 Project Polya 中使用。

默认情况下,它使用 -comp lz4 -Xhc 作为压缩参数。

顺便说一句,我们使用 Arch Linux

arch logo我们发现 Arch Linux 拥有大量最新的软件包和非常轻量级的设计原则,这使得它成为 Project Polya 的理想 Linux 发行版。

依赖项

~7–12MB
~256K SLoC