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
fuente
sudo debootstrap --components=main,contrib,nonfree --variant=minbase --include=linux-generic,grub-pc --arch=i386 xenial /mnt
.Respuestas:
No puedo comentar, pero su "guía" funcionó de maravilla para hacer una memoria USB mínima de Ubuntu 16. Las únicas cosas que cambié fueron el debootstrap y tuve que hacer que la red funcionara manualmente (
networkd
).Mi línea debootstrap fue:
fuente
Lo mantuve y lo descubrí, relativamente sencillo desde aquí, pero no solo una cuestión de configuración
/etc/fstab
, aquí está el resto:no es necesario pero es una buena idea limpiar las cosas
configurar
/etc/fstab
- verifiquemount
para asegurarse de que está en el tipo de sistema de archivos correctoesto reconstruirá initramfs y le permitirá arrancar limpiamente
Haga eso y la máquina arranca limpiamente, probada en QEMU y luego la estoy ejecutando ahora en hardware.
fuente
Configuración automática de Debian 9 sin errores de systemd
Esta configuración no tiene ningún error o advertencia del sistema, y obtengo la conexión a Internet y un shell al final.
Esta configuración simplemente no es perfecta ya que no estoy usando el núcleo de Debian, los errores cuando lo intenté se explicaron en una sección posterior. Luego probé un kernel que tenía por ahí, con una configuración basada en Buildroot y funcionó. La configuración se proporciona en esta configuración. Por lo tanto, es posible que algunos paquetes que dependen de la falta de configuraciones del kernel fallen, aunque hasta ahora no he observado ningún error.
Sin embargo, una configuración análoga funcionó perfectamente con el kernel de Ubuntu: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171 El kernel de Ubuntu debe tener las configuraciones faltantes comparado con el de Debian. Es probable que las fallas del núcleo de Debian se puedan solucionar compilando el núcleo de Debian con opciones adicionales
CONFIG_VIRTIO_BLK=y
como lo hice para Ubuntu.GitHub aguas arriba .
Ahora desde la terminal, inicie sesión con
root
/root
y luego verifique que Internet funcione con los siguientes comandos:Usamos
nc
como se explica en /programming/32341518/how-to-make-an-http-get-request-manually-with-netcat/52662497#52662497 porque:wget
ycurl
no están instalados por defectoping
no funciona desde QEMU por defecto: ¿Cómo hacer ping desde el invitado QEMU a una URL externa?Probado en un host Ubuntu 18.04.
¿Qué sucede si intento usar el núcleo de Debian?
TODO entender y arreglar. Si reemplazo la compilación del núcleo de Linux anterior con el núcleo de Linux empaquetado de Debian:
entonces el arranque falla con:
y una lista vacía para:
entonces el disco no se reconoce en absoluto. También he tratado de usar exactamente el mismo núcleo que el instalador ISO de Debian que instala aquí, pero para Debian , y falla de la misma manera, a pesar de que la instalación ISO de Debian funcionó bien con las mismas opciones QEMU (genera la instalación de GRUB en un disco con múltiples particiones, siendo la raíz
ext4
).fuente
build-essentials
antes de ejecutar el script. Se le echa en faltagit
,make
,bison
yflex
también ser conscientes de que hay un enlace en la configuración aquí para OP github, es posible que desee leerlo a través antes de ejecutar a ciegas para asegurarse de que no ha cambiado.