updated:  2026 10. June
published:  2026 06. June

nbd - Network Block Device

Images einbinden mit NBD

Network Block Device mit chroot öffnen

NBD öffnen mit chroot.

#!/bin/bash

# Festplatte wird als Network Block Device (Kernelmodul nbd) bereitgestellt
# und mit chroot zugegriffen.

MOUNTPOINT="/mnt/rootfs"
IMAGE="rootfs.qcow2"
NBD="/dev/nbd0"

echo "Was möchtest du tun?"
echo "1) Image öffnen"
echo "2) Image schließen"
read -p "Auswahl [1-2]: " AUSWAHL

# NBD-Modul laden, falls noch nicht vorhanden
if ! lsmod | grep -q "^nbd"; then
    echo "Lade Kernelmodul nbd mit max 2 Partitionen pro Network Block Device (also ${NBD}p1, ${NBD}p2)."
    sudo modprobe nbd max_part=2

    if ! lsmod | grep -q "^nbd"; then
        echo "Fehler: Modul nbd konnte nicht geladen werden."
        exit 1
    fi
fi


case $AUSWAHL in
    1)
        echo "Image wird geöffnet..."

        sudo qemu-nbd --connect=$NBD $IMAGE
        sudo mount ${NBD}p1 $MOUNTPOINT

        sudo mount --bind /proc $MOUNTPOINT/proc
        sudo mount --bind /sys $MOUNTPOINT/sys
        sudo mount --bind /dev $MOUNTPOINT/dev

	#ggf. resolv.conf kopieren für Internet
	#sudo cp /etc/resolv.conf $MOUNTPOINT/etc/resolv.conf

        # Falls UEFI benötigt wird:
        # sudo mount --bind /run $MOUNTPOINT/run

        echo ""
        echo "Image eingebunden."
        echo "Chroot starten mit:"
        echo "sudo chroot $MOUNTPOINT"
        ;;
        
    2)
        echo "Image wird geschlossen..."

        sudo umount $MOUNTPOINT/dev 2>/dev/null
        sudo umount $MOUNTPOINT/sys 2>/dev/null
        sudo umount $MOUNTPOINT/proc 2>/dev/null

        # Falls /run eingebunden wurde:
        # sudo umount $MOUNTPOINT/run 2>/dev/null

        sudo umount $MOUNTPOINT 2>/dev/null

        sudo qemu-nbd --disconnect ${NBD}p1
        sudo qemu-nbd --disconnect $NBD

        echo "Image ausgehängt."
        ;;

    *)
        echo "Ungültige Auswahl."
        exit 1
        ;;
esac


Hier musste noch Orweiten

Anlegen eines Images mit NBD.

Image anlegen.

#!/bin/bash

MOUNTPOINT="/mnt/rootfs"
IMAGE="rootfs.ubuntu.qcow2"
NBD="/dev/nbd0"



# NBD-Modul laden, falls noch nicht vorhanden
if ! lsmod | grep -q "^nbd"; then
    echo "Lade Kernelmodul nbd mit max 2 Partitionen pro Network Block Device (also ${NBD}p1, ${NBD}p2)."
    sudo modprobe nbd max_part=2

    if ! lsmod | grep -q "^nbd"; then
        echo "Fehler: Modul nbd konnte nicht geladen werden."
        exit 1
    fi
fi





# 1. Image erzeugen und einhängen
qemu-img create -f qcow2 "$IMAGE" 25G
sudo qemu-nbd --connect=$NBD $IMAGE
# Bootfähig machen für BIOS/mbr
sudo parted "$NBD" set 1 boot on
sudo parted "$NBD" --script mklabel msdos mkpart primary ext4 1MiB 100%
sudo mkfs.ext4 ${NBD}p1
sudo mount ${NBD}p1 $MOUNTPOINT


# 2. Rootverzeichnis kopieren in Image
#sudo rsync -aHAX /media/backup/timeshift/snapshots/2019-12-30_22-47-22/localhost/ /mnt/rootfs/

# sudo mkdir -p /mnt/rootfs/{proc,sys,dev}

# 3. Image aushängen
# nimm dafür start.chroot.sh

# 4. Image einhängen und chroot starten
# nimm dafür start.chroot.sh


# 5. /etc/fstab anpassen
# UUID ermitteln 
# blkid | grep -i nbd

# 6. grub installieren
# echo 'GRUB_DISABLE_OS_PROBER=true' >> /etc/default/grub
# GRUB_TIMEOUT=5
# GRUB_TIMEOUT_STYLE=menu
# grub-install /dev/nbd0 --recheck --debug
# update-grub
#

# 7. ssh - Verbindung wenn möglich
# ggf. floppy-Modul dauerhaft deaktivieren
# echo "blacklist floppy" > /etc/modprobe.d/blacklist-floppy.conf
# update-initramfs -u
# Wenn grafische System nicht startet, prüfen mit: systemctl get-default 
# systemctl set-default multi-user.target -> einloggen auf konsole
# systemctl set-default graphical.target  -> grafische Login
# reboot
# auf konsole einloggen
# startx oder xinit ausführen -> Fehlermeldung beobachten


# 7. Netzwerk vorbereiten
# kopiere den Inhalt von /etc/resolv.conf 
# /etc/resolv.conf -> ../run/resolvconf/resolv.conf







Stichworte (tags)