是否可以搭建500M以下apt
的Debian系统?我尝试使用 Debian 的网络安装程序并选择了最准系统的设置(实际上什么也没安装)。然后启动并删除一些非必需的软件包。我将系统的包数量减少到大约 160 个。不过,操作系统仍然超过 1G:bash
systemd
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.1G 0 2.1G 0% /dev
tmpfs 414M 5.6M 409M 2% /run
/dev/sda1 13G 1.1G 11G 10% /
tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs 5.3G 0 5.3G 0% /run/lock
tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
为什么 /dev 这么大?
我尝试了一堆微型操作系统但他们有奇怪/令人困惑的包管理,和/或奇怪/令人困惑的方法来启用持久文件系统,或者有损坏/令人困惑的安装程序。我只需要一个超小型的 Debian 操作系统。
答案1
debootstrap 可以传递一个变体;目前 (2020-08-19) Arm64 Debian 10 的 minbase 变体为 184MB,不含内核,约为 18MB,不含 systemd,以及之后的apt-get clean
.
有一些针对小型 GNU/Linux 的项目
- OSMC为300MB,
- Alpine Linux 为 130 MB
- Termux 为 69 MB
- 该死的小Linux只有50MB
- dd-wrt Mega 为 26MB
还有一些关于自己制作的指南(例如 Linux From Scratch)。
可以排除 Debian 软件包,并且可以配置内核以进一步减少。问题是,一旦有人想做某事,就会发现自己正在安装大型软件包。
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -rn | head
15200 coreutils
9805 perl-base
9746 libc6
6673 dpkg
6482 bash
4106 util-linux
3944 apt
3098 libapt-pkg5.0
3064 libc-bin
3036 tzdata
上面清楚地说明了为什么小型发行版使用 BusyBox、自定义包管理器并避免运行时(perl/python/php/etc)
但对于 16 TB 驱动器和 TB NVMe 来说,分布大小对于容器或嵌入式工作之外的人员来说并不重要。
答案2
不是一个功能齐全的系统。
# debootstrap buster /var/tmp/bustertest
# chroot /var/tmp/bustertest apt update
# chroot /var/tmp/bustertest apt install linux-image-amd64
# chroot /var/tmp/bustertest apt policy systemd
systemd:
Installed: 241-7~deb10u4
Candidate: 241-7~deb10u4
Version table:
*** 241-7~deb10u4 500
500 http://deb.debian.org/debian buster/main amd64 Packages
100 /var/lib/dpkg/status
# du -hsx /var/tmp/bustertest
651M /var/tmp/bustertest
该安装唯一缺少的就是grub
能够启动它,而且这是很小的。但这仍然超过了您的 500M 目标。
没有内核的话,它达到了365M。
为什么 /dev 这么大?
因为它不在磁盘上,而是在内存中 - 所以它反映了您的 RAM 大小,与/sys/fs/cgroup
实际情况相同。