mmdebstrap is a tool for creating Debian-based system images (root filesystems) in a minimal and efficient manner. It is designed to be simple, fast, and lightweight, making it ideal for creating small, customized system images for containers, virtual machines, or embedded systems. If you frequently use mmdebstrap to create minimal Debian-based systems, this guide will help you troubleshoot and fix the most common issues you might encounter.
Table of Contents
When running commands like apt update inside the chroot, you see errors like:
Hit:1 http://deb.debian.org/debian bookworm InRelease Hit:2 http://deb.debian.org/debian bookworm-updates InRelease 0% [Connecting to security.debian.org (2a04:4e42:400::644)]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Err:1 http://deb.debian.org/debian bookworm InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed 0% [Waiting for headers]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Err:2 http://deb.debian.org/debian bookworm-updates InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Hit:3 http://security.debian.org/debian-security bookworm-security InRelease 0% [Working]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Err:3 http://security.debian.org/debian-security bookworm-security InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Reading package lists... Done Building dependency tree... Done Reading state information... Done All packages are up to date. W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://deb.debian.org/debian bookworm InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://deb.debian.org/debian bookworm-updates InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://security.debian.org/debian-security bookworm-security InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: Failed to fetch http://deb.debian.org/debian/dists/bookworm/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: Failed to fetch http://deb.debian.org/debian/dists/bookworm-updates/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: Failed to fetch http://security.debian.org/debian-security/dists/bookworm-security/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: Some index files failed to download. They have been ignored, or old ones used instead.
The chroot environment doesn’t have access to the host’s /dev directory.
To fix permission Denied for/dev/null error, exit from the chroot environment and mount the /dev directory inside the chroot:
sudo mount --bind /dev /path/to/chroot/dev
Replace /path/to/chroot with the directory where your chroot is located.
Example:
sudo mount --bind /dev ~/debian-chroot/dev/
The /dev directory contains device files like /dev/null, which are essential for many programs. Mounting the host’s /dev directory gives the chroot access to these files.
When running apt update, you see errors like:
gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Install gpgv inside the chroot:
sudo chroot /path/to/chroot apt update sudo chroot /path/to/chroot apt install -y gpgv
apt uses gpgv to verify package signatures. Installing it ensures that apt can securely update and install packages.
When running apt update, you see errors like:
The repository is not signed. Updating from such a repository can't be done securely.
This error occurs because gpgv is missing or the repository keys are not trusted. Follow these steps:
Hit:1 http://deb.debian.org/debian bookworm InRelease Hit:2 http://deb.debian.org/debian bookworm-updates InRelease 0% [Connecting to security.debian.org (2a04:4e42:400::644)]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Err:1 http://deb.debian.org/debian bookworm InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed 0% [Waiting for headers]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Err:2 http://deb.debian.org/debian bookworm-updates InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Hit:3 http://security.debian.org/debian-security bookworm-security InRelease 0% [Working]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied /usr/bin/apt-key: 95: cannot create /dev/null: Permission denied E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Err:3 http://security.debian.org/debian-security bookworm-security InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed Reading package lists... Done Building dependency tree... Done Reading state information... Done All packages are up to date. W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://deb.debian.org/debian bookworm InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://deb.debian.org/debian bookworm-updates InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://security.debian.org/debian-security bookworm-security InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: Failed to fetch http://deb.debian.org/debian/dists/bookworm/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: Failed to fetch http://deb.debian.org/debian/dists/bookworm-updates/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: Failed to fetch http://security.debian.org/debian-security/dists/bookworm-security/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed W: Some index files failed to download. They have been ignored, or old ones used instead.
gpgv is required to verify the authenticity of packages. Without it, apt cannot securely update the package lists.
Commands like apt update fail with network errors, such as:
sudo mount --bind /dev /path/to/chroot/dev
The chroot environment might not have access to the host’s network configuration. To fix this, copy the host’s DNS settings into the chroot:
sudo mount --bind /dev ~/debian-chroot/dev/
The resolv.conf file contains DNS settings. Copying it from the host ensures that the chroot can resolve domain names.
Basic commands like ls or bash don’t work inside the chroot.
Install essential packages like coreutils and bash:
gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
The minimal root filesystem created by mmdebstrap might not include all essential packages. Installing them ensures that the chroot is functional.
After using the chroot, you forget to unmount /dev, leaving the host’s /dev directory bound.
Always unmount /dev when you’re done with the chroot:
sudo chroot /path/to/chroot apt update sudo chroot /path/to/chroot apt install -y gpgv
Unmounting /dev ensures that the host’s /dev directory is not left in an inconsistent state.
You frequently need to install the same packages (e.g., gpgv, gnupg) after creating the chroot.
Include these packages during the creation of the root filesystem:
The repository is not signed. Updating from such a repository can't be done securely.
The --include option lets you specify additional packages to install during the creation process, saving time and effort.
The chroot directory takes up disk space, and you forget to delete it after testing.
Always delete the chroot directory when you’re done:
sudo chroot /path/to/chroot apt update
Deleting the chroot directory frees up disk space and keeps your system clean.
You frequently create and test chroots and want to automate the process.
Write a script to automate the creation, testing, and cleanup of chroots. For example:
Temporary failure resolving 'deb.debian.org'
Save this script as mmdebstrap-test.sh, make it executable with chmod x mmdebstrap-test.sh, and run it:
sudo cp /etc/resolv.conf /path/to/chroot/etc/resolv.conf
mmdebstrap is a powerful tool for creating minimal Debian-based systems, but it can sometimes throw errors. By following this troubleshooting guide, you can quickly resolve common issues and get back to work. Remember to:
With these tips, you’ll be able to use mmdebstrap efficiently.
The above is the detailed content of Troubleshooting Guide For Mmdebstrap: Fixing Common Issues. For more information, please follow other related articles on the PHP Chinese website!