ডেবিটস্ট্র্যাপের সাহায্যে বুটেবল ডেবিয়ান চিত্র তৈরি করা


13

আমি গত 2 দিন ধরে একটি বুটেবল ডিবিয়ান (জেসি / 8.4) চিত্র তৈরি করার চেষ্টা করছি এবং যতদূর আমি বলতে পারি যে আমার পদ্ধতিটি সঠিক, তবে আমি ফাইল সিস্টেমটি সঠিকভাবে পেতে পারি না। আমি তুলনামূলকভাবে নিশ্চিত যে আমি এখানে কিছু ভুল করছি, মাউন্টিংয়ের সাথে কিছু মিস করছি বা /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 ক্রোটের মধ্যে উপস্থিত হওয়া উচিত, এটি /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
    
  • এপিটি সেট আপ করুন

    • উপযুক্ত উত্স উপর অনুলিপি

      cp /etc/apt/sources.list /mnt/etc/apt/sources.list
      
    • সিডিরাম উত্স মন্তব্য করা হয়েছে তা নিশ্চিত করুন

    • লাইন যুক্ত করুন:

      deb http://ftp.debian.org/debian stable-backports main contrib non-free
      

একটি ক্রুট সেটআপ করুন

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 ম্যান মাউন্ট থেকে :
--bind অন্য কোথাও একটি সাবট্রি পুনরায় গণনা করুন (এর বিষয়বস্তু উভয় জায়গায় উপলব্ধ)।
-t <type>ফাইলসিস্টেম মাউন্ট টাইপ সঙ্গে, এই, mountস্বয়ংক্রিয় করার প্রচেষ্টা করা হবে তা নির্ধারণ

সেট আপ সিরিয়াল / কনসোল অ্যাক্সেস

সম্পাদনা করুন /etc/default/grub:

  1. এতে সেট GRUB_CMDLINE_LINUX=""করুন:

    GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
    
  2. Uncomment GRUB_TERMINAL=console

  3. নীচে, লাইনটি যুক্ত করুন:

    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    

গ্রাব কনফিগার করুন - এটি অবশ্যই একটি নন- systemd-nspawnশেল (যা এর অর্থ হিসাবে chroot ) করা উচিত

grub-mkconfig -o /boot/grub/grub.cfg

প্রস্থান করুন

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

পুনরুদ্ধার (শুধুমাত্র ERROR এ প্রয়োজনীয়)

যদি আপনি কিছু ভেঙে ফেলে থাকেন বা আবার চেষ্টা করতে চান তবে বিদ্যমান অবস্থায় পুনঃ-মাউন্ট / সেটআপ ক্রুট .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

এখন সম্ভবত @ 505e06b2 এর উত্তর-মন্তব্য মুছে ফেলা হয়েছে: আপনার "গাইড" ন্যূনতম উবুন্টু 16 টি থাম্বড্রাইভ তৈরির জন্য আশ্চর্য কাজ করেছে। আমি কেবল পরিবর্তিত জিনিসগুলি হ'ল ডিবুস্ট্র্যাপ এবং আমাকে ম্যানুয়ালি নেটওয়ার্কিং কাজ করতে হয়েছিল (নেটওয়ার্কড)। আমার debootstrap লাইন ছিল: sudo debootstrap --components=main,contrib,nonfree --variant=minbase --include=linux-generic,grub-pc --arch=i386 xenial /mnt
পিটারহ - মনিকা পুনরায় ইনস্টল করুন

উত্তর:


4

মন্তব্য করতে পারবেন না, তবে আপনার "গাইড" ন্যূনতম উবুন্টু 16 টি থাম্বড্রাইভ তৈরির জন্য আশ্চর্য কাজ করেছে। আমি কেবল পরিবর্তিত জিনিসগুলি হ'ল ডিবুস্ট্র্যাপ এবং আমাকে ম্যানুয়ালি নেটওয়ার্কিং কাজ করতে হয়েছিল ( networkd)।

আমার ডেবিউটস্ট্র্যাপ লাইনটি ছিল:

#> sudo debootstrap --components=main,contrib,nonfree  --variant=minbase \
                    --include=linux-generic,grub-pc --arch=i386 xenial /mnt

1
যদি আপনি এই গাইডটি যাচাই করতে পারেন , তবে 4-5 টি উত্তর ASAP লিখুন, আপনার প্রায় 50 টি রেপ পেতে পারেন এবং তারপরে আপনি এটিতে মন্তব্য করতে সক্ষম হবেন। আমি আপনার পোস্টটি মুছে ফেলার জন্য পতাকাঙ্কিত করি না, কারণ এটি খুব উপযুক্ত, তবে আমার উচিত, কারণ এটি সত্যই কোনও উত্তর নয়। সুতরাং, অন্যরা সম্ভবত করবে। তবে আপনি খুব শীঘ্রই এই 50 টি প্রতিনিধি পেতে পারেন। ৩-৪ টি তুচ্ছ প্রশ্নের উত্তর দিন এবং আগামীকাল আপনার কাছে ...
পিটারহ - মনিকা পুনরায় স্থাপন করুন

আমাদের এখানে প্রচুর শুরুর লিনাক্স রয়েছে, তাদেরকে সহায়তা করা রকেটের মতো প্রতিনিধি বৃদ্ধির সহজ উপায়। অন্যান্য এসই সাইটগুলি এত সহজ নয়।
পিটারহ - মনিকা পুনরায় ইনস্টল করুন

4

এটি রাখা এবং এটি বের করে আনা, তুলনামূলকভাবে সরাসরি এখান থেকে এগিয়ে, কিন্তু সেট আপ করার বিষয়টি কেবল /etc/fstabএখানে নয়, বাকিটি এখানে:

জিনিস পরিষ্কার করার জন্য প্রয়োজনীয় নয় তবে একটি ভাল ধারণা

apt-get autoclean

সেট আপ করুন /etc/fstab- mountআপনি সঠিক ফাইল সিস্টেমের ধরণে আছেন কিনা তা পরীক্ষা করে দেখুন

echo "/dev/sda1 / ext4 defaults,errors=remount-ro 0 1" > /etc/fstab

এটি initramfs পুনর্নির্মাণ এবং এটি পরিষ্কার বুট করার অনুমতি দেবে

update-initramfs -u -k all

এটি করুন এবং মেশিন বুটগুলি পরিষ্কার করুন, কিউইএমইউতে পরীক্ষা করা হয়েছে এবং তারপরে আমি এখনই এটি হার্ডওয়ারে চালাচ্ছি।


4

কোনও সিস্টেমড ত্রুটি ছাড়াই অটোমেটেড ডেবিয়ান 9 সেটআপ

এই সেটআপটিতে কোনও সিস্টেমড ত্রুটি বা সতর্কতা নেই, এবং আমি ইন্টারনেট সংযোগ এবং শেষে একটি শেল পেয়েছি।

এই সেটআপটি ঠিক নিখুঁত নয় কারণ আমি দেবিয়ান কার্নেলটি ব্যবহার করছি না, ত্রুটিগুলি যখন পরে বিভাগে ব্যাখ্যা করার চেষ্টা করেছি। আমি তখন কেবল বিল্ড্রুটের উপর ভিত্তি করে কনফিগার করে আমার আশেপাশে শুয়ে থাকা কার্নেলটি চেষ্টা করেছি এবং এটি কাজ করে। কনফিগারেশনটি এই সেটআপে সরবরাহ করা হয়। সুতরাং, সম্ভবত প্যাকেজগুলি যে অনুপস্থিত কার্নেল কনফিগারেশনের উপর নির্ভর করে তা ব্যর্থ হবে, যদিও আমি এখনও কোনও ত্রুটি লক্ষ্য করি নি।

উনুন্টু কার্নেলের সাথে একটি অ্যানালগাস সেটআপ নিখুঁতভাবে কাজ করেছে: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171 উবুন্টু কার্নেলের অবশ্যই অনুপস্থিত কনফিগারেশন থাকতে হবে ডেবিয়ান এক তুলনায়। CONFIG_VIRTIO_BLK=yআমি যেমন উবুন্টুর জন্য কাজ করেছি ঠিক তেমন অতিরিক্ত বিকল্প দিয়ে দেবিয়ান কার্নেল সংকলন করে দেবিয়ান কার্নেল ব্যর্থতা সম্ভবত সংশোধন করা যেতে পারে ।

#!/usr/bin/env bash

set -eux

debootstrap_dir=debootstrap
root_filesystem=img.ext2.qcow2

sudo apt-get install \
  debootstrap \
  libguestfs-tools \
  git \
  qemu-system-x86 \
;

if [ ! -d "$debootstrap_dir" ]; then
  # Create debootstrap directory.
  # - linux-image-amd64: downloads the kernel image
  sudo debootstrap \
    --include linux-image-amd64 \
    stretch \
    "$debootstrap_dir" \
    http://deb.debian.org/debian/ \
  ;
  sudo rm -f "$root_filesystem"
fi

if [ ! -f "$root_filesystem" ]; then
  # Set root password.
  echo 'root:root' | sudo chroot "$debootstrap_dir" chpasswd

  # Remount root filesystem as rw.
  # Otherwise, systemd shows:
  #     [FAILED] Failed to start Create Volatile Files and Directories.
  # and then this leads to further failures in the network setup.
  cat << EOF | sudo tee "${debootstrap_dir}/etc/fstab"
/dev/sda / ext4 errors=remount-ro,acl 0 1
EOF

  # Network.
  # We use enp0s3 because the kernel boot prints:
  #     8139cp 0000:00:03.0 enp0s3: renamed from eth0
  # This can also be observed with:
  #     ip link show
  # Without this, systemd shows many network errors, the first of which is:
  #     [FAILED] Failed to start Network Time Synchronization.
  cat << EOF | sudo tee "${debootstrap_dir}/etc/network/interfaces.d/00mytest"
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet dhcp
EOF

  # Generate image file from debootstrap directory.
  # Leave 1Gb extra empty space in the image.
  sudo virt-make-fs \
    --format qcow2 \
    --size +1G \
    --type ext2 \
    "$debootstrap_dir" \
    "$root_filesystem" \
  ;
  sudo chmod 666 "$root_filesystem"
fi

# linux_image="$(printf "${debootstrap_dir}/boot/vmlinuz-"*)"

linux_img=linux/arch/x86_64/boot/bzImage
if [ ! -f "$linux_img" ]; then
  # Build the Linux kernel.
  git clone --depth 1 --branch v4.18 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
  cd linux
  wget https://gist.githubusercontent.com/cirosantilli/6e2f4975c1929162a86be09f839874ca/raw/6d151d231a233408a6e1b541bf4a92fd55bf5338/.config
  make olddefconfig
  make -j`nproc`
  cd -
fi

qemu-system-x86_64 \
  -append 'console=ttyS0 root=/dev/sda' \
  -drive "file=${root_filesystem},format=qcow2" \
  -enable-kvm \
  -serial mon:stdio \
  -m 2G \
  -kernel "$linux_img" \
  -device rtl8139,netdev=net0 \
  -netdev user,id=net0 \
;

গিটহাব উজানের দিকে

এখন টার্মিনাল থেকে root/ দিয়ে লগইন করুন rootএবং তারপরে নীচের কমান্ডগুলির সাথে ইন্টারনেট কাজ করে তা পরীক্ষা করুন:

printf 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | nc example.com 80
apt-get update
apt-get install hello
hello

আমরা /programming/32341518/how-to-make-an-http-get-request-manally-with-netcat/52662497#52662497nc তে বর্ণিত হিসাবে ব্যবহার করেছি কারণ:

একটি উবুন্টু 18.04 হোস্টে পরীক্ষিত।

আমি যদি ডেবিয়ান কার্নেলটি ব্যবহার করার চেষ্টা করি তবে কী হয়

টুডো বুঝতে এবং সংশোধন করুন। যদি আমি উপরে লিনাক্স কার্নেল সংকলনটি দেবিয়ান প্যাকেজযুক্ত লিনাক্স কার্নেলের সাথে প্রতিস্থাপন করি:

linux_img="${debootstrap_dir}/boot/vmlinuz-"*

তারপরে বুটটি ব্যর্থ হয়:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

এবং এর জন্য একটি খালি তালিকা:

List of all partitions:

সুতরাং ডিস্কটি মোটেই স্বীকৃত হচ্ছে না। আমি এখানে যেমন ডেবিয়ান আইএসও ইনস্টলার ইনস্টল করে ঠিক তেমন একই কার্নেলটি ব্যবহার করার চেষ্টা করেছি তবে ডেবিয়ানের জন্য , এবং এটি একইভাবে ব্যর্থ হয়, যদিও ডিবিয়ান আইএসও ইনস্টল একই কিউইএমইউ বিকল্পগুলির সাথে সূক্ষ্মভাবে কাজ করেছে (এটি GRUB ইনস্টল উত্পন্ন করে একাধিক পার্টিশনযুক্ত একটি ডিস্কে, মূলটি হ'ল ext4)।


কেউ যদি তাজা উবুন্টু ইনস্টলটিতে এটি করছেন, build-essentialsস্ক্রিপ্ট চালানোর আগে আপনাকেও ইনস্টল করতে হবে । তোমাকে মিস করা হবে না git, make, bison& flex এছাড়াও সচেতন ওপি GitHub কনফিগ করার জন্য এখানে একটি লিঙ্ক আছে হতে, আপনি এটি অন্ধভাবে নিশ্চিত করুন যে এটি পরিবর্তিত হয়নি করতে চালানোর আগে মাধ্যমে এটি পড়তে চাইবেন।
জিপিপিকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.