Ich habe in den letzten 2 Tagen versucht, ein bootfähiges Debian-Image (jessie / 8.4) zu erstellen, und soweit ich das beurteilen kann, habe ich die Prozedur richtig ausgeführt, kann aber das Dateisystem nicht richtig einrichten. Ich bin mir ziemlich sicher, dass ich hier etwas falsch mache, etwas mit Montage verpasse oder /etc/fstab
( es ist keines in meinem Bild ). Ich hatte gehofft, jemand mit etwas Erfahrung könnte mir helfen, mir zu zeigen, was ich vermisse.
Hier sind die Fehler, die beim Booten von qemu-system-x86 auftreten:
Als Text und dann als eigentliche Screenshots:
Fehler:
fsck: error 2 (No such file or directory) while executing fsck.ext2 for /dev/sda1
fsck exited with status code 8
[FAILED] Failed to start Load/Save Random Seed
See `systemctl status systemd-random-seed.service` for details.
[FAILED] Failed to start Various fixups to make systemd work better on Debian.
See `systemctl status debian-fixup.service` for details.
...
[FAILED] Failed to start Update UTMP about System Boot/Shutdown.
See `systemctl status systemd-update-utmp.service` for details.
[DEPEND] Dependency failed for Update UTMP about System Runlevel Changes.
Hier sind die Anweisungen, die ich für mich selbst geschrieben habe / Schritte, die ich unternommen habe:
cd ~
mkdir debootstrap
cd debootstrap/
# get newest
wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.80_all.deb
ar -x debootstrap_1.0.80_all.deb
zcat /root/debootstrap/data.tar.gz | tar xv
apt-get install parted
# 1.5Gbytes
dd if=/dev/zero of=1445.img bs=1024 count=1 seek=1536k
parted -s 1445.img -- mklabel msdos mkpart primary 1m 1.5g toggle 1 boot
losetup --show -f 1445.img
# prints out `/dev/loopX`, enter this on the next lin
partprobe /dev/loop0
# only have to make the filesytem once --> if you are troubleshooting steps, do not redo this line
mkfs -t ext2 /dev/loop0p1
mount /dev/loop0p1 /mnt
debootstrap --verbose --components=main,contrib,non-free \
--include=firmware-realtek,linux-image-amd64,grub-pc,ssh,vim \
--exclude=nano \
--arch amd64 jessie /mnt http://ftp.us.debian.org/debian
Quelle für Informationen zur Verwendung von --components
Stellen Sie sicher, dass der Kernel installiert ist und in
/boot
der Chroot mit den folgenden Dateien angezeigt wird/mnt/boot
:initrd.img-3.16.0-4-amd64
vmlinuz-3.16.0-4-amd64
config-3.16.0-4-amd64
System.map-3.16.0-4-amd64
installiere grub
grub-install --boot-directory=/mnt/boot --modules=part_msdos /dev/loop0
Richten Sie APT ein
Kopieren Sie die entsprechenden Quellen
cp /etc/apt/sources.list /mnt/etc/apt/sources.list
Stellen Sie sicher, dass die CD-ROM-Quelle auskommentiert ist
füge die Zeile hinzu:
deb http://ftp.debian.org/debian stable-backports main contrib non-free
Richten Sie eine Chroot ein
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev /mnt/dev
# if you want your pushprofilesettings
cp ~/.bashrc /mnt/root/
cp ~/.vimrc /mnt/root/
# chroot -- enter the system as if it were thy own
chroot /mnt /bin/bash
export HOME=/root
export LC_ALL=C
export LANG=C.UTF-8
export TERM=xterm-256color
mount
from man mount :
--bind
Hängen Sie einen Teilbaum an einer anderen Stelle wieder ein (sein Inhalt ist an beiden Stellen verfügbar).
-t <type>
Montieren von Dateisystem - Typ , mit dieser, mount
wird versuchen, automatisch festzustellen ,
Einrichten des seriellen / Konsolenzugriffs
bearbeiten /etc/default/grub
:
Setze
GRUB_CMDLINE_LINUX=""
auf:GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
Kommentar entfernen
GRUB_TERMINAL=console
Fügen Sie unten die Zeile hinzu:
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Make the grub config - Das MUSS in einer Non- systemd-nspawn
Shell gemacht werden (das heißt chroot
)
grub-mkconfig -o /boot/grub/grub.cfg
Chroot verlassen
exit
Aufräumen für chroot'ed
umount /mnt/sys
umount /mnt/dev
umount /mnt/dev/pts
umount /mnt/proc
Kann nach zusätzlichen Reitern suchen mit: mount | grep /mnt
und sie dann mit aushängen umount
Geben Sie systemd-nspawn ein
systemd-nspawn -D /mnt
# not you are in a special container
Stellen Sie das Passwort für root
mit einpasswd
In /etc/ssh/sshd_config
Kommentar PermitRootLogin without-password
auslesen #PermitRootLogin without-password
und PermitRootLogin yes
darunter einfügen
Aktivieren Sie nun ssh beim Start
systemctl enable ssh
Aufräumen
# this is needed to clean up both chroot and systemd-nspawn -D /mnt
# once this is run you can not do systemd-nspawn either so wait until you are entirely done
exit
umount /mnt
losetup -d /dev/loop0
Prüfen Sie, mount | grep /mnt
ob weitere Halterungen vorhanden sind, mit: Wenn ALLES zurückgegeben wird, heben Sie die Halterung mit auf umount
Wiederherstellen (nur in ERROR erforderlich)
Wenn Sie etwas kaputt gemacht haben oder es erneut versuchen müssen, führen Sie einen RE-MOUNT / SETUP CHROOT für Folgendes aus .img
:
losetup --show -f 1445.img
# prints out `/dev/loopX`, enter this on the next lin
partprobe /dev/loop0
mount /dev/loop0p1 /mnt
Testen img
qemu-system-x86_64 -hda 1445.img -m 1024 -vnc :0
quelle
sudo debootstrap --components=main,contrib,nonfree --variant=minbase --include=linux-generic,grub-pc --arch=i386 xenial /mnt
.Antworten:
Kann nicht kommentieren, aber Ihr "Guide" hat Wunder gewirkt, um ein Minimal Ubuntu 16-Laufwerk zu erstellen. Die einzigen Dinge, die ich geändert habe, waren das Debootstrap und ich musste das Netzwerk manuell zum Laufen bringen (
networkd
).Meine Debootstrap-Linie war:
quelle
Ich habe mich daran gehalten und es herausgefunden, relativ direkt von hier aus, aber nicht nur eine Frage des Aufbaus
/etc/fstab
, hier ist der Rest:Nicht nötig, aber eine gute Idee, um aufzuräumen
Einrichten
/etc/fstab
- Überprüfen Sie mitmount
, ob Sie den richtigen Dateisystemtyp habenDadurch wird das initramfs neu erstellt und es kann sauber gebootet werden
Tun Sie das und die Maschine bootet sauber, getestet in QEMU und dann starte ich es gerade auf Hardware.
quelle
Automatisiertes Debian 9-Setup ohne Systemfehler
Dieses Setup enthält keine Systemfehler oder Warnungen, und ich erhalte am Ende die Internetverbindung und eine Shell.
Dieses Setup ist einfach nicht perfekt, da ich nicht den Debian-Kernel verwende, Fehler, die ich in einem späteren Abschnitt erklärt habe. Ich habe dann einfach einen Kernel ausprobiert, der auf Buildroot basiert und funktioniert. Die Konfiguration wird in diesem Setup bereitgestellt. Daher ist es möglich, dass einige Pakete, die auf fehlenden Kernel-Konfigurationen basieren, fehlschlagen, obwohl ich bisher keine Fehler festgestellt habe.
Ein analoges Setup funktionierte jedoch perfekt mit dem Ubuntu-Kernel: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171 Der Ubuntu-Kernel muss die fehlenden Configs haben im Vergleich zu Debian. Die Fehler im Debian-Kernel können wahrscheinlich behoben werden, indem der Debian-Kernel mit zusätzlichen Optionen kompiliert wird, wie
CONFIG_VIRTIO_BLK=y
ich es für Ubuntu getan habe.GitHub Upstream .
Melden Sie sich jetzt am Terminal mit
root
/root
an und überprüfen Sie, ob das Internet mit den folgenden Befehlen funktioniert:Wir haben
nc
wie unter /programming/32341518/how-to-make-an-http-get-request-manual-with-netcat/52662497#52662497 erklärt verwendet , weil:wget
undcurl
werden nicht standardmäßig installiertping
funktioniert standardmäßig nicht über QEMU: Wie kann ich einen Ping-Befehl vom QEMU-Gast an eine externe URL senden?Getestet auf einem Ubuntu 18.04 Host.
Was passiert, wenn ich versuche, den Debian-Kernel zu verwenden?
TODO verstehen und beheben. Wenn ich die obige Linux-Kernel-Kompilierung durch den Debian-Linux-Kernel ersetze:
dann schlägt der Start fehl mit:
und eine leere Liste für:
Die Festplatte wird also überhaupt nicht erkannt. Ich habe auch versucht, genau den gleichen Kernel zu verwenden, den das Debian-ISO-Installationsprogramm installiert, wie hier, aber für Debian , und es schlägt auf die gleiche Weise fehl, obwohl die Debian-ISO-Installation mit den gleichen QEMU-Optionen einwandfrei funktionierte (es generiert eine GRUB-Installation) auf einer Festplatte mit mehreren Partitionen (die Root-Partition ist
ext4
).quelle