Eu tenho tentado criar uma imagem inicializável do debian (jessie / 8.4) nos últimos 2 dias, e até onde eu sei, tenho o procedimento correto, mas não consigo acertar o sistema de arquivos. Tenho certeza de que estou fazendo algo errado aqui, faltando algo com a montagem ou /etc/fstab
( não há um na minha imagem ). Eu estava esperando que alguém com alguma experiência pudesse me ajudar / me mostrar o que estou perdendo.
Aqui estão os erros que vejo quando estou inicializando no qemu-system-x86:
Como texto e depois como as capturas de tela reais:
Erros:
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.
Aquiestãoasinstruçõesqueescreviparamim/asetapasquetomei:
cd~mkdirdebootstrapcddebootstrap/#getnewestwgethttp://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.80_all.debar-xdebootstrap_1.0.80_all.debzcat/root/debootstrap/data.tar.gz|tarxvapt-getinstallparted#1.5Gbytesddif=/dev/zeroof=1445.imgbs=1024count=1seek=1536kparted-s1445.img--mklabelmsdosmkpartprimary1m1.5gtoggle1bootlosetup--show-f1445.img#printsout'/dev/loopX',enterthisonthenextlinpartprobe/dev/loop0#onlyhavetomakethefilesytemonce-->ifyouaretroubleshootingsteps,donotredothislinemkfs-text2/dev/loop0p1mount/dev/loop0p1/mntdebootstrap--verbose--components=main,contrib,non-free\--include=firmware-realtek,linux-image-amd64,grub-pc,ssh,vim\--exclude=nano\--archamd64jessie/mnthttp://ftp.us.debian.org/debian
fonte de informações sobre o uso de --components
-
Assegure-se de que o kernel esteja instalado, ele deve aparecer em /boot
dentro do chroot, que é /mnt/boot
com os seguintes arquivos:
-
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 o grub
grub-install --boot-directory=/mnt/boot --modules=part_msdos /dev/loop0
-
Configurar o APT
-
copie sobre as fontes do apt
cp /etc/apt/sources.list /mnt/etc/apt/sources.list
-
certifique-se de que a fonte de cdrom esteja comentada
-
adicione a linha:
deb http://ftp.debian.org/debian stable-backports main contrib non-free
Configurar um 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
de man mount :
--bind
Remount uma subárvore em outro lugar (seu conteúdo está disponível em ambos os lugares).% -t <type>
Montagem do sistema de arquivos tipo , com isso, mount
tentará determinar automaticamente
configuração de acesso serial / console
edite /etc/default/grub
:
-
Defina GRUB_CMDLINE_LINUX=""
para:
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
-
Descomente GRUB_TERMINAL=console
-
Abaixo, adicione a linha:
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Faça a configuração do grub - Esta DEVE ser feita em um shell que não seja systemd-nspawn
(isso significa chroot
)
grub-mkconfig -o /boot/grub/grub.cfg
Sair do chroot
exit
Limpar para chroot'ed
umount /mnt/sys
umount /mnt/dev
umount /mnt/dev/pts
umount /mnt/proc
Pode verificar se há montagens adicionais com: mount | grep /mnt
e, em seguida, desmontá-las com umount
Digite systemd-nspawn
systemd-nspawn -D /mnt
# not you are in a special container
Defina a senha para root
com passwd
Em /etc/ssh/sshd_config
comente PermitRootLogin without-password
para ler #PermitRootLogin without-password
e insira PermitRootLogin yes
abaixo dela
Agora habilite o ssh na inicialização
systemctl enable ssh
limpar
# 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
Verifique se há montagens adicionais com: mount | grep /mnt
Se QUALQUER COISA for retornada, desmonte-as com umount
Recuperar (somente necessário em ERROR)
Se você quebrou alguma coisa ou precisa tentar novamente, RE-MOUNT / SETUP CHROOT em .img
:
losetup --show -f 1445.img
# prints out '/dev/loopX', enter this on the next lin
partprobe /dev/loop0
mount /dev/loop0p1 /mnt
testando img
qemu-system-x86_64 -hda 1445.img -m 1024 -vnc :0