Я пытался создать загрузочный образ Debian (jessie / 8.4) в течение последних 2 дней, и, насколько я могу судить, у меня есть правильная процедура, но я не могу получить правильную файловую систему. Я относительно уверен, что я делаю что-то здесь не так, что-то упустил при монтировании или /etc/fstab
( в моем образе такого нет ). Я надеялся, что кто-то с некоторым опытом сможет помочь мне / показать, что мне не хватает.
Вот ошибки, которые я вижу при загрузке qemu-system-x86:
Как текст, а затем как фактические скриншоты:
Ошибки:
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.
Вот инструкции, которые я написал для себя / шаги, которые я предпринял:
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
источник информации об использовании --components
Убедитесь, что ядро установлено, оно должно появиться
/boot
внутри chroot, то есть/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
установить личинку
grub-install --boot-directory=/mnt/boot --modules=part_msdos /dev/loop0
Настройте APT
скопировать подходящие источники
cp /etc/apt/sources.list /mnt/etc/apt/sources.list
убедитесь, что источник cdrom закомментирован
добавьте строку:
deb http://ftp.debian.org/debian stable-backports main contrib non-free
Настройте 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
перемонтировать поддерево в другое место (его содержимое доступно в обоих местах).
-t <type>
Монтирование типа файловой системы , с этим, mount
попытается автоматически определить
настроить последовательный / консольный доступ
редактировать /etc/default/grub
:
Установите
GRUB_CMDLINE_LINUX=""
на:GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
Раскоментируйте
GRUB_TERMINAL=console
Ниже добавьте строку:
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Make grub config - это ДОЛЖНО быть сделано не в systemd-nspawn
оболочке (это означает chroot
)
grub-mkconfig -o /boot/grub/grub.cfg
Выход из chroot
exit
Очистка для chroot'ed
umount /mnt/sys
umount /mnt/dev
umount /mnt/dev/pts
umount /mnt/proc
Можно проверить дополнительные крепления с помощью:, mount | grep /mnt
а затем размонтировать их с помощью umount
Введите systemd-nspawn
systemd-nspawn -D /mnt
# not you are in a special container
Установите пароль для root
с помощьюpasswd
В /etc/ssh/sshd_config
комментариях, PermitRootLogin without-password
чтобы прочитать #PermitRootLogin without-password
и вставить PermitRootLogin yes
под ним
Теперь включите SSH при запуске
systemctl enable ssh
убирать
# 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
Проверьте наличие дополнительных креплений с помощью: mount | grep /mnt
Если НИЧЕГО не возвращается, размонтируйте их с помощью umount
Восстановить (необходимо только в ОШИБКЕ)
Если вы что-то сломали или хотите повторить попытку, повторно установите / установите CHROOT на существующий .img
:
losetup --show -f 1445.img
# prints out `/dev/loopX`, enter this on the next lin
partprobe /dev/loop0
mount /dev/loop0p1 /mnt
тестирование 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
.Ответы:
Не могу комментировать, но ваш «гид» творил чудеса, создавая минималистичный Ubuntu 16. Единственное, что я изменил, это debootstrap, и мне пришлось вручную настроить сеть (
networkd
).Моя строка debootstrap была:
источник
Сохранялось и выяснял это, относительно прямо отсюда, но не просто вопрос настройки
/etc/fstab
, вот и все остальное:не обязательно но хорошая идея убирать вещи
установить
/etc/fstab
- проверьте,mount
чтобы убедиться, что вы используете правильный тип файловой системыэто восстановит initramfs и позволит ему загрузиться
Сделайте это, и машина загрузится без ошибок, протестирована в QEMU, а затем я запускаю ее прямо сейчас на оборудовании.
источник
Автоматическая установка Debian 9 без каких-либо системных ошибок
Эта настройка не имеет никаких системных ошибок или предупреждений, и я получаю подключение к Интернету и оболочку в конце.
Эта настройка просто не идеальна, так как я не использую ядро Debian, ошибки, когда я пытался объяснить, объясняются в следующем разделе. Затем я просто попробовал ядро, которое у меня лежало, с конфигурацией, основанной на Buildroot, и это сработало. Конфиг предоставляется в этой настройке. Поэтому, возможно, что некоторые пакеты, которые полагаются на отсутствующие конфигурации ядра, потерпят неудачу, хотя я до сих пор не обнаружил никаких ошибок.
Аналогичная установка отлично работала с ядром Ubuntu, однако: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171 Ядро Ubuntu должно иметь отсутствующие конфигурации по сравнению с Debian. Сбои в ядре Debian, вероятно, можно исправить, скомпилировав ядро Debian с дополнительными опциями,
CONFIG_VIRTIO_BLK=y
как я делал для Ubuntu.GitHub вверх по течению .
Теперь из терминала войдите с помощью
root
/root
и убедитесь, что Интернет работает с помощью следующих команд:Мы использовали,
nc
как описано в /programming/32341518/how-to-make-an-http-get-request-manually-with-netcat/52662497#52662497, потому что:wget
иcurl
не установлены по умолчаниюping
по умолчанию не работает из QEMU: Как пропинговать гостя QEMU на внешний URL?Протестировано на хосте Ubuntu 18.04.
Что произойдет, если я попытаюсь использовать ядро Debian
ТОДО понимаю и исправляю. Если я заменим вышеупомянутую компиляцию ядра Linux на упакованное ядро Linux Debian:
тогда загрузка завершается неудачно с:
и пустой список для:
таким образом, диск не распознается вообще. Я также попытался использовать то же самое ядро, которое устанавливает установщик Debian ISO, как это сделано здесь, но для Debian , и оно завершается сбоем таким же образом, даже если установка Debian ISO работала нормально с теми же параметрами QEMU (он генерирует установку GRUB). на диске с несколькими разделами, корневым из которых является
ext4
).источник
build-essentials
перед запуском скрипта. Вы будете пропускатьgit
,make
,bison
иflex
также быть в курсе есть ссылка здесь , чтобы OP GitHub конфигурации, вы можете прочитать его перед запуском его вслепую , чтобы убедиться , что она не изменилась.