He intentado crear una imagen de arranque de Debian (jessie / 8.4) durante los últimos 2 días, y por lo que puedo decir, tengo el procedimiento correcto, pero no puedo obtener el sistema de archivos correcto. Estoy relativamente seguro de que estoy haciendo algo mal aquí, perdiendo algo con el montaje o /etc/fstab
( no hay ninguno en mi imagen ). Esperaba que alguien con algo de experiencia pudiera ayudarme / mostrarme lo que me faltaba.
Aquí están los errores que veo cuando inicio en qemu-system-x86:
Como texto y luego como las capturas de pantalla reales:
Errores:
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.
Aquí están las instrucciones que he escrito para mí / los pasos que he tomado:
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
fuente de información sobre el uso de --componentes
Asegúrese de que el kernel esté instalado, debe aparecer
/boot
dentro del chroot, es decir,/mnt/boot
con los siguientes archivos: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
instalar grub
grub-install --boot-directory=/mnt/boot --modules=part_msdos /dev/loop0
Configurar APT
copiar sobre las fuentes aptas
cp /etc/apt/sources.list /mnt/etc/apt/sources.list
asegúrese de que la fuente de cdrom esté comentada
agrega la línea:
deb http://ftp.debian.org/debian stable-backports main contrib non-free
Configurar 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
desde man mount :
--bind
Vuelva a montar un subárbol en otro lugar (su contenido está disponible en ambos lugares).
-t <type>
El montaje del tipo de sistema de archivos , con esto, mount
intentará determinar automáticamente
configurar el acceso en serie / consola
editar /etc/default/grub
:
Establecer
GRUB_CMDLINE_LINUX=""
en:GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
Descomentar
GRUB_TERMINAL=console
Debajo, agregue la línea:
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Hacer la configuración de grub: esto DEBE hacerse en un sistema que no sea systemd-nspawn
shell (eso significa chroot
)
grub-mkconfig -o /boot/grub/grub.cfg
Salir chroot
exit
Limpiar para chroot'ed
umount /mnt/sys
umount /mnt/dev
umount /mnt/dev/pts
umount /mnt/proc
Puede buscar montajes adicionales con: mount | grep /mnt
y luego desmontarlos con umount
Ingrese systemd-nspawn
systemd-nspawn -D /mnt
# not you are in a special container
Establezca la contraseña para root
conpasswd
En /etc/ssh/sshd_config
comentario PermitRootLogin without-password
para leer #PermitRootLogin without-password
e insertar PermitRootLogin yes
debajo de él
Ahora habilite ssh al inicio
systemctl enable ssh
limpiar
# 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
Compruebe si hay montajes adicionales con: mount | grep /mnt
Si se devuelve CUALQUIER COSA , desmóntelos con umount
Recuperar (solo necesario en ERROR)
Si rompió algo, o necesita volver a intentarlo, VUELVA A MONTAR / CONFIGURAR CHROOT en los existentes .img
:
losetup --show -f 1445.img
# prints out `/dev/loopX`, enter this on the next lin
partprobe /dev/loop0
mount /dev/loop0p1 /mnt
prueba de img
qemu-system-x86_64 -hda 1445.img -m 1024 -vnc :0
sudo debootstrap --components=main,contrib,nonfree --variant=minbase --include=linux-generic,grub-pc --arch=i386 xenial /mnt
.