J'ai essayé de créer une image debian amorçable (jessie / 8.4) au cours des 2 derniers jours, et pour autant que je sache, j'ai la bonne procédure, mais je ne peux pas obtenir le bon système de fichiers. Je suis relativement sûr de faire quelque chose de mal ici, de manquer quelque chose avec le montage ou /etc/fstab
( il n'y en a pas à mon image ). J'espérais que quelqu'un avec une certaine expérience pourrait m'aider / me montrer ce qui me manque.
Voici les erreurs que je vois lorsque je démarre dans qemu-system-x86:
En tant que texte, puis en tant que captures d'écran réelles:
Les erreurs:
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.
Voici les instructions que j'ai rédigées pour moi-même / les étapes que j'ai suivies:
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
source d'informations sur l'utilisation de --components
Assurez-vous que le noyau est installé, il devrait apparaître
/boot
dans le chroot, c'est-à-dire/mnt/boot
avec les fichiers suivants: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
installer grub
grub-install --boot-directory=/mnt/boot --modules=part_msdos /dev/loop0
Configurer APT
copier sur les sources apt
cp /etc/apt/sources.list /mnt/etc/apt/sources.list
assurez-vous que la source du cdrom est mise en commentaire
ajoutez la ligne:
deb http://ftp.debian.org/debian stable-backports main contrib non-free
Configurer un chroot
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
remontez un sous-arbre ailleurs (son contenu est disponible aux deux endroits).
-t <type>
Le montage du type de système de fichiers , avec cela, mount
tentera de déterminer automatiquement
configurer l'accès série / console
modifier /etc/default/grub
:
Réglez
GRUB_CMDLINE_LINUX=""
sur:GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
Décommenter
GRUB_TERMINAL=console
Ci-dessous, ajoutez la ligne:
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Faire la config grub - Cela DOIT être fait dans un non- systemd-nspawn
shell (cela signifie chroot
)
grub-mkconfig -o /boot/grub/grub.cfg
Quitter chroot
exit
Nettoyer pour chroot'ed
umount /mnt/sys
umount /mnt/dev
umount /mnt/dev/pts
umount /mnt/proc
Peut rechercher des supports supplémentaires avec: mount | grep /mnt
puis les démonter avec umount
Entrez systemd-nspawn
systemd-nspawn -D /mnt
# not you are in a special container
Définissez le mot de passe pour root
avecpasswd
En /etc/ssh/sshd_config
commentaire PermitRootLogin without-password
pour lire #PermitRootLogin without-password
et insérer en PermitRootLogin yes
dessous
Activez maintenant ssh au démarrage
systemctl enable ssh
nettoyer
# 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
Vérifiez les montages supplémentaires avec: mount | grep /mnt
Si TOUT est retourné, démontez-les avec umount
Récupérer (uniquement nécessaire dans ERREUR)
Si vous avez cassé quelque chose ou si vous devez réessayer, RE-MOUNT / SETUP CHROOT sur l'existant .img
:
losetup --show -f 1445.img
# prints out `/dev/loopX`, enter this on the next lin
partprobe /dev/loop0
mount /dev/loop0p1 /mnt
test img
qemu-system-x86_64 -hda 1445.img -m 1024 -vnc :0
la source
sudo debootstrap --components=main,contrib,nonfree --variant=minbase --include=linux-generic,grub-pc --arch=i386 xenial /mnt
.Réponses:
Je ne peux pas commenter, mais votre "guide" a fait des merveilles pour faire une clé USB Minimal Ubuntu 16. Les seules choses que j'ai modifiées étaient le debootstrap et j'ai dû faire fonctionner le réseau manuellement (
networkd
).Ma ligne debootstrap était:
la source
Je l'ai gardé et compris, relativement simple à partir d'ici, mais pas seulement une question d'installation
/etc/fstab
, voici le reste:pas nécessaire mais une bonne idée pour nettoyer les choses
configurer
/etc/fstab
- vérifiez avecmount
pour vous assurer que vous êtes sur le bon type de système de fichierscela reconstruira les initramfs et lui permettra de démarrer propre
Faites cela et la machine démarre correctement, testée dans QEMU, puis je l'exécute en ce moment sur le matériel.
la source
Configuration automatisée de Debian 9 sans aucune erreur systemd
Cette configuration n'a pas d'erreurs ou d'avertissements systemd, et je reçois la connexion Internet et un shell à la fin.
Cette configuration n'est tout simplement pas parfaite car je n'utilise pas le noyau Debian, erreurs lorsque j'ai essayé d'expliquer dans une section ultérieure. J'ai alors juste essayé un noyau que je traînais , avec une configuration basée sur Buildroot et cela a fonctionné. La configuration est fournie dans cette configuration. Par conséquent, il est possible que certains packages qui reposent sur des configurations de noyau manquantes échouent, même si je n'ai jusqu'à présent observé aucune erreur.
Une configuration analogue fonctionnait parfaitement avec le noyau Ubuntu cependant: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171 Le noyau Ubuntu doit avoir les configurations manquantes par rapport à Debian. Les échecs du noyau Debian peuvent probablement être corrigés en compilant le noyau Debian avec des options supplémentaires comme
CONFIG_VIRTIO_BLK=y
je l'ai fait pour Ubuntu.GitHub en amont .
À partir du terminal, connectez-vous avec
root
/root
, puis vérifiez que Internet fonctionne avec les commandes suivantes:Nous l'avons utilisé
nc
comme expliqué sur /programming/32341518/how-to-make-an-http-get-request-manually-with-netcat/52662497#52662497 car:wget
etcurl
ne sont pas installés par défautping
ne fonctionne pas à partir de QEMU par défaut: comment faire un ping depuis l'invité QEMU vers une URL externe?Testé sur un hôte Ubuntu 18.04.
Que se passe-t-il si j'essaie d'utiliser le noyau Debian
TODO comprendre et réparer. Si je remplace la compilation du noyau Linux ci-dessus par le noyau Linux empaqueté Debian:
puis le démarrage échoue avec:
et une liste vide pour:
donc le disque n'est pas du tout reconnu. J'ai également essayé d'utiliser exactement le même noyau que le programme d'installation Debian ISO installe comme fait ici mais pour Debian , et il échoue de la même manière, même si l'installation Debian ISO a bien fonctionné avec les mêmes options QEMU (il génère l'installation GRUB sur un disque à plusieurs partitions, la racine étant
ext4
).la source
build-essentials
avant d'exécuter le script. Vous manquergit
,make
,bison
etflex
être également conscient qu'il ya un lien ici pour config OP github, vous pouvez le lire à travers avant de l' exécuter aveuglément pour vous assurer qu'il n'a pas changé.