From: Ivan Shmakov Document-Id: 3083ffaa-7304-4eed-bdb6-9d1ca12002dd License: CC0-1.0 Link: ; rel="canonical" In the text below, leading horizontal tabulation (ASCII HT) code indicates human-readable prose, while lines lacking one are intended for machine processing. Here we document the selection of Debian packages as used for AM-1.ORG live images, including the rationale behind our choice. Generally, the packages listed first are the most likely to be included on the image. However, for technical reasons the kernel and supporting packages are listed last. The system as described is intended to fit on an approximately 256 MiB Zstd-compressed Squashfs (-always-use-fragments -comp zstd -b 1048576), not including the kernel (and initramfs), which thus would be usable when copied to tmpfs (toram=) even on rather modest (down to around 512 MiB RAM) hardware. The omit tag indicates packages which were considered but not included in the final list for one reason or another. This document is a work in progress. * * * The following Debian packages comprise the base system, common to all AM-1.ORG environments, including those running on real hardware, under Qemu, live images, within containers and chroots (although non-container chroots are deprecated on AM-1.ORG systems), etc. This list is ought to include ca-cacert, which is unfortunately no longer in Debian as of Buster. Tags: base Packages: apg apt ascii bash bc bmake bsdutils busybox bzip2 ca-certificates coreutils cpio dash dc debian-archive-keyring debianutils debootstrap diffutils dpkg e2fsprogs ed fakechroot fakeroot file findutils gawk gdisk gnutls-bin gpgv grep gzip less libc-bin libcommon-sense-perl libconvert-asn1-perl libdata-dump-perl libdigest-sha-perl libencode-locale-perl libtasn1-bin libterm-readline-gnu-perl libuuid-perl locales-all ltrace lynx lzop m4 minilzip mtree-netbsd ncurses-bin ncurses-term nettle-bin patch patchutils pdlzip perl procps pseudo psmisc rcs rhash rsync sed sharutils sleuthkit sqlite3 squashfs-tools strace tar time tree unzip util-linux vim-tiny wamerican wdiff wget zip As an alternative to ed and vim-tiny, lightweight Emacs-like zile editor may also be used. Tags: omit, base Packages: zile For data recovery, a generous selection of archivers and compressors (beyond those included in base above) may get handy. Tags: archivers Packages: arj lhasa p7zip xz-utils zstd Similarly, we may need to interact with FAT filesystems. Tags: fatfs Packages: dosfstools mtools The following packages are useful for interfacing equipment over serial lines, as well as managing virtual and pseudo ttys. Also relevant is rlwrap, not included because of its superfluous dependencies. In addition to (or in place of) screen, dtach and tmux may be included. Tags: tty Packages: cu lrzsz reptyr screen Tags: omit, tty Packages: dtach rlwrap tmux For networking diagnostics the following packages may be useful. Also included are lighttpd and polipo, to allow for setting up HTTP mirrors, proxies (including HTTP over Tor) and such. The more generic socat tool makes the netcat-openbsd and netcat-traditional packages unnecessary. Tags: network Packages: curl dns-root-data esmtp idn idn2 lighttpd netbase polipo sic socat Tags: network, perl Packages: libio-socket-inet6-perl libio-socket-ip-perl spf-tools-perl swaks Tags: buster, network Packages: dnsutils Tags: bullseye, network Packages: bind9-dnsutils Tags: conventional, network Packages: libsasl2-modules neomutt Tags: omit, conventional, network Packages: alpine Tags: heimdal Packages: heimdal-clients Implies: network Tags: ldap Packages: ldap-utils Implies: network Tags: ntlm Packages: cntlm Implies: network Tags: omit, netcat Packages: netcat-openbsd netcat-traditional Implies: network The following packages are likely to be useful on a system booted on real hardware or in a (para)virtualized environment, but not necessarily in a chroot or container. We formerly made use of Btrfs and Nilfs filesystems, hence the respective packages may be useful on recovery images, yet currently not included to save space. Tags: bootable Packages: acl gnupg1 jdupes login lsof makedev mount pinentry-tty sysv-rc sysvinit-core sysvinit-utils uuid-runtime Tags: bootable-lite Packages: busybox-syslogd tinysshd Implies: bootable Tags: omit, bootable Packages: btrfs-progs, nilfs-tools Tags: lvm2 Packages: dmsetup lvm2 thin-provisioning-tools Implies: bootable The following packages are mainly useful for systems booted on real hardware. We do not include fbset here as it apparently does not allow for framebuffer mode setting with recent kernels. Tags: bootable, real Packages: beep console-setup cryptsetup-bin cryptsetup-initramfs cryptsetup-run flashrom gddrescue gpm haveged hddtemp hdparm kbd kexec-tools keyutils lm-sensors parted pciutils setserial smartmontools statserial udhcpc usbutils vlock Tags: omit, bootable, real Packages: fbset Tags: bootable, network Packages: ifupdown iproute2 mtr-tiny net-tools netdiag ntp openssh-client oping tcpdump Tags: bootable, cluster Packages: dsh Implies: network We may need to access NFS or iSCSI resources as well. Typically we will use autofs to automatically (un)mount remote filesystems, but for recovery image it seems superfluous. Tags: nfs-client Packages: nfs-common rpcbind Tags: open-iscsi Packages: open-iscsi We may also want to use a system started from this live image as a (perhaps temporary) Ethernet bridge or router. Tags: bootable, bridge Packages: bridge-utils ebtables Tags: gateway Packages: ipset iptables iptables-persistent nftables Miscellaneous network-related packages. In particular, aria2 may be used to efficiently transfer large datasets to multiple destinations (thanks to its BitTorrent support), while openbsd-inetd is our preferred way to start tinysshd, which is part of bootable-lite above. Tags: network-extra Packages: aria2 openbsd-inetd radvdump tinc Tags: omit, network-extra Packages: dovecot-imapd isync nmap Perl-compatible regular expressions occasionally get handy. Given the presence of sqlite3 in base, it does not make sense to omit sqlite3-pcre from here. Tags: pcre Packages: pcregrep sqlite3-pcre A selection of languages beyond those already in base. Note that edbrowse is included here chiefly as a lightweight (although largely incomplete) Javascript implementation, in case one is needed. Tags: languages Packages: duktape jimsh make mawk Tags: edbrowse Packages: edbrowse A selection of extra packages for Perl. Tags: perl Packages: libconvert-base32-perl liblocale-gettext-perl libsys-mmap-perl libterm-readkey-perl libterm-readline-perl-perl libterm-readpassword-perl libtree-rb-perl liburi-perl Tags: perl, sqlite Packages: libdbd-sqlite3-perl libdbi-perl Sometimes tinysshd may be not enough (for instance, it lacks support for TCP and Unix domain socket forwarding), so we include openssh-server as well. Tags: openssh-server Packages: openssh-server Implies: network For long-term archival storage, AM-1.ORG specifies the use of DVD+R media with the ISO 9660 filesystem being preferred. The following packages facilitate making such archives. (For CD-R media, it may make sense to include cdrdao as well. Also relevant to ISO 9660 are makefs and xorriso packages, not included here to save space.) Tags: cd Packages: dvd+rw-tools eject growisofs Tags: iso9660 Packages: genisoimage Tags: omit, cd Packages: cdrdao Tags: omit, iso9660 Packages: makefs xorriso The mandoc package provides a somewhat lighter-weight formatter for the *roff-based man pages documentation. We do not include man-db and pinfo here to save space. Tags: conventional Packages: mandoc Tags: omit, conventional Packages: man-db pinfo The following packages allow for basic graphics manipulation, which may be of use when recovering images from failed media. Tags: graphics Packages: jpeginfo libjpeg-turbo-progs netpbm pvrg-jpeg To view images on Linux framebuffer we may use fbi, which in turn requires a scalable font, the smallest of which apparently being ttf-bitstream-vera. Tags: graphics, real, ttf Packages: fbi Tags: ttf Packages: ttf-bitstream-vera It does make sense to boot the system with init=/bin/bash and set the root password explicitly (# passwd) before proceeding (# exec /sbin/init). Nevertheless, sudo is provided as a more conventional way to gain root access. Tags: bootable, conventional Packages: sudo A diagnostics and recovery image would also make use of the following packages. It does not make much sense to include them on the Squashfs image proper. Tags: omit, syslinux Packages: extlinux isolinux syslinux syslinux-common Tags: omit, bootable Packages: memtest86+ memtest86 The kernel and the utilities to make the respective initramfs. Note that it is not necessary to include initramfs itself (nor anything else from below boot/) on the Squashfs image proper. Tags: bootable, final Packages: initramfs-tools linux-image-amd64 Tags: omit, bootable, final Packages: firmware-linux-free The following packages make it possible to run the system from read-only media, overlaid by a tmpfs. Tags: live Packages: live-config live-config-sysvinit live-tools user-setup Tags: live, bootable Packages: live-boot live-boot-initramfs-tools