Saya telah mencoba untuk membuat image bootable debian (jessie / 8.4) selama 2 hari terakhir, dan sejauh yang saya tahu saya memiliki prosedur yang benar, tetapi saya tidak bisa mendapatkan filesystem dengan benar. Saya relatif yakin bahwa saya melakukan sesuatu yang salah di sini, melewatkan sesuatu dengan pemasangan atau /etc/fstab
( tidak ada satu di gambar saya ). Saya berharap seseorang dengan pengalaman akan dapat membantu saya / menunjukkan kepada saya apa yang saya lewatkan.
Berikut adalah kesalahan yang saya lihat saat saya boot ke qemu-system-x86:
Sebagai teks dan kemudian sebagai tangkapan layar yang sebenarnya:
Kesalahan:
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.
Berikut adalah instruksi yang telah saya tulis untuk diri saya sendiri / langkah-langkah yang telah saya ambil:
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
sumber untuk informasi tentang cara menggunakan --komponen
Pastikan bahwa kernel terinstal, harus muncul di
/boot
dalam chroot, yaitu/mnt/boot
dengan file-file berikut: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
instal grub
grub-install --boot-directory=/mnt/boot --modules=part_msdos /dev/loop0
Siapkan APT
menyalin melalui sumber apt
cp /etc/apt/sources.list /mnt/etc/apt/sources.list
memastikan sumber cdrom dikomentari
tambahkan baris:
deb http://ftp.debian.org/debian stable-backports main contrib non-free
Siapkan 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
Remount subtree di tempat lain (isinya tersedia di kedua tempat).
-t <type>
Mount tipe filesystem , dengan ini, mount
akan berusaha untuk menentukan secara otomatis
pengaturan akses serial / konsol
edit /etc/default/grub
:
Setel
GRUB_CMDLINE_LINUX=""
ke:GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
Uncomment
GRUB_TERMINAL=console
Di bawah, tambahkan baris:
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Make the grub config - Ini HARUS dilakukan dalam bentuk non- systemd-nspawn
shell (artinya chroot
)
grub-mkconfig -o /boot/grub/grub.cfg
Keluar dari chroot
exit
Bersihkan untuk chroot'ed
umount /mnt/sys
umount /mnt/dev
umount /mnt/dev/pts
umount /mnt/proc
Dapat memeriksa tunggangan tambahan dengan: mount | grep /mnt
dan kemudian melepasnya dengan umount
Masukkan systemd-nspawn
systemd-nspawn -D /mnt
# not you are in a special container
Setel kata sandi untuk root
denganpasswd
Dalam /etc/ssh/sshd_config
komentar keluar PermitRootLogin without-password
untuk membaca #PermitRootLogin without-password
dan memasukkan di PermitRootLogin yes
bawahnya
Sekarang aktifkan ssh saat startup
systemctl enable ssh
membersihkan
# 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
Periksa tunggangan tambahan dengan: mount | grep /mnt
Jika APA SAJA dikembalikan, lepaskan dengan umount
Pulihkan (hanya perlu di ERROR)
Jika Anda memecahkan sesuatu, atau perlu mencoba lagi, RE-MOUNT / SETUP CHROOT pada yang sudah ada .img
:
losetup --show -f 1445.img
# prints out `/dev/loopX`, enter this on the next lin
partprobe /dev/loop0
mount /dev/loop0p1 /mnt
pengujian img
qemu-system-x86_64 -hda 1445.img -m 1024 -vnc :0
sumber
sudo debootstrap --components=main,contrib,nonfree --variant=minbase --include=linux-generic,grub-pc --arch=i386 xenial /mnt
.Jawaban:
Tidak dapat berkomentar, tetapi "panduan" Anda bekerja sangat baik untuk membuat thumbdrive Minimal 16 Ubuntu. Satu-satunya hal yang saya ubah adalah debootstrap dan saya harus mengaktifkan jaringan secara manual (
networkd
).Baris debootstrap saya adalah:
sumber
Teruskan dan sadari, relatif lurus ke depan dari sini, tetapi bukan hanya masalah pengaturan
/etc/fstab
, berikut adalah sisanya:tidak perlu tetapi ide yang baik untuk membereskan semuanya
pengaturan
/etc/fstab
- tanyakanmount
untuk memastikan Anda berada pada tipe sistem file yang tepatini akan membangun kembali initramfs dan memungkinkannya untuk boot bersih
Lakukan itu dan mesin boot bersih, diuji dalam QEMU dan kemudian saya menjalankannya sekarang pada perangkat keras.
sumber
Pengaturan Debian 9 otomatis tanpa kesalahan sistem
Pengaturan ini tidak memiliki kesalahan atau peringatan systemd, dan saya mendapatkan koneksi Internet dan sebuah shell di akhir.
Pengaturan ini tidak sempurna karena saya tidak menggunakan kernel Debian, kesalahan ketika saya mencoba menjelaskan di bagian selanjutnya. Saya kemudian baru saja mencoba kernel yang saya gunakan , dengan konfigurasi berbasis Buildroot dan berhasil. Konfigurasi disediakan dalam pengaturan ini. Oleh karena itu, ada kemungkinan bahwa beberapa paket yang bergantung pada konfigurasi kernel yang hilang akan gagal, meskipun sejauh ini saya tidak melihat kesalahan.
Pengaturan analog bekerja dengan sempurna dengan kernel Ubuntu: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171 Kernel Ubuntu harus memiliki konfigurasi yang hilang. dibandingkan dengan yang Debian. Kegagalan kernel Debian kemungkinan dapat diperbaiki dengan mengkompilasi kernel Debian dengan opsi tambahan seperti yang
CONFIG_VIRTIO_BLK=y
telah saya lakukan untuk Ubuntu.GitHub hulu .
Sekarang dari terminal, login dengan
root
/root
, dan kemudian periksa apakah Internet berfungsi dengan perintah berikut:Kami menggunakan
nc
sebagaimana dijelaskan di /programming/32341518/how-to-make-an-http-get-request-manually-with-netcat/52662497#52662497 karena:wget
dancurl
tidak diinstal secara defaultping
tidak bekerja dari QEMU secara default: Bagaimana cara melakukan ping dari tamu QEMU ke URL eksternal?Diuji pada host Ubuntu 18.04.
Apa yang terjadi jika saya mencoba menggunakan kernel Debian
TODO mengerti dan memperbaikinya. Jika saya mengganti kompilasi kernel Linux di atas dengan kernel Linux paket Debian:
lalu boot gagal dengan:
dan daftar kosong untuk:
jadi disk tidak dikenali sama sekali. Saya juga mencoba menggunakan kernel yang sama persis dengan instal installer ISO Debian seperti yang dilakukan di sini tetapi untuk Debian , dan gagal dengan cara yang sama, meskipun instalasi ISO Debian bekerja dengan baik dengan opsi QEMU yang sama (ini menghasilkan instalasi GRUB dalam disk dengan banyak partisi, yang root adalah
ext4
).sumber
build-essentials
sebelum menjalankan skrip. Anda akan hilanggit
,make
,bison
&flex
Juga sadar ada link di sini untuk OP github config, Anda mungkin ingin membaca melalui sebelum menjalankan itu membabi buta untuk memastikan itu tidak berubah.