ฉันพยายามสร้างภาพ 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
แหล่งข้อมูลสำหรับการใช้ - ส่วนประกอบ
ตรวจสอบให้แน่ใจว่ามีการติดตั้งเคอร์เนลและควรปรากฏใน
/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
จาก man mount :
--bind
remount ทรีย่อยที่อื่น (เนื้อหาของมันมีอยู่ในทั้งสองแห่ง)
-t <type>
การเมานต์ของประเภทระบบไฟล์ด้วยสิ่งนี้mount
จะพยายามกำหนดอัตโนมัติ
ตั้งค่าการเข้าถึงแบบอนุกรม / คอนโซล
แก้ไข/etc/default/grub
:
ตั้งค่า
GRUB_CMDLINE_LINUX=""
เป็น:GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
uncomment
GRUB_TERMINAL=console
ด้านล่างเพิ่มบรรทัด:
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
ทำให้การกำหนดค่าด้วง - นี้ ต้อง ทำได้ในที่ไม่ใช่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
ของฉันคือ: