একটি ক্রুটে বুট?


13

আমার একটি হার্ড ড্রাইভে লিনাক্স (দেবিয়ান জেসি) ইনস্টল আছে। ড্রাইভ - sda1, ext4fs এবং sda2- অদলবদল করুন

আমার একটি /chrootফোল্ডার আছে /chrootফোল্ডারে অন্য একটি সিস্টেম ইনস্টল করা আছে ।

প্রশ্ন:

কীভাবে বুটম্যানেজারকে বলা যায়, প্রাথমিক সিস্টেমটি (প্রধান, ডেবিয়ান জেসি) নয়, তবে সিস্টেমটিতে / ক্রুটে বুট করা যায় ? সম্ভবত, পরিবর্তন /menu.lstএবং /chroot/etc/fstab? ( vmlinuz root=/dev/sda1/chroot?)

বা প্রশ্নের অন্য একটি রূপ: পার্টিশনের রুট ডিরেক্টরিতে নয়, ফোল্ডারে লিনাক্স ইনস্টল করা কি সম্ভব? ( /another_linux/bin, /another_linux/home, /another_linux/etc, ...)


1
vmlinuz root=/dev/sda1/chrootকাজ করবে না একটি সম্ভবত এটি ব্যবহৃত হয় অনুরূপ একটি পদ্ধতি সঙ্গে এটি অনুকরণ করতে পারে initrd। যেমন এখানে দেখুন । আপনি /new_rootসেখানে বর্ণিত হিসাবে মাউন্ট , তারপরে cd /new_rootনা করে cd /new_root/chrootচালিয়ে যান।
এন। 'সর্বনাম' মি।

উত্তর:


7

এটি বুটলোডার বা কার্নেল দ্বারা করা যাবে না। কার্নেল rootবিকল্পের প্যারামিটার যেমন root=/dev/sda1স্ট্যান্ডার্ড ইউনিক্স প্যাথনামের মতো দেখায় তবে এই জাতীয় নামগুলি বর্তমানে মাউন্ট করা ফাইলসিস্টেম অনুসারে ব্যাখ্যা করা যায়। rootবিকল্পটি ব্যাখ্যা করার সময় , কোনও মাউন্ট করা ফাইল সিস্টেম নেই। ঠিক আছে, প্রায় কিছুই না। কার্নেল ইনিশিয়ালাইজেশন সময়ে একটি ন্যূনতম ramfsফাইল সিস্টেমের উদাহরণ রয়েছে rootfsযা প্রাথমিক প্রক্রিয়া চলার জন্য রুট হিসাবে মাউন্ট করা হয় start_kernel()rootঅপশন প্যারামিটারের প্রকৃত ব্যাখ্যাটি একটি রুটিনে সম্পন্ন হয় name_to_dev_t()। সমর্থিত সিনট্যাক্সগুলির মধ্যে একটি হ'ল /dev/nameফর্ম্যাট, যেখানে ফাইলটি সিস্টেমের অস্থায়ী মাউন্ট করে নামটির ব্যাখ্যা করা sysfsহয়rootfsরুট, এবং নীচে একটি ব্লক ডিভাইস এন্ট্রি মিলছে নামের সন্ধান করা /sys/block। এই প্রক্রিয়াটি এখানে আরও বিশদে ব্যাখ্যা করা হয়েছে

বর্ণিত সেটআপটি প্রথমে একটি ন্যূনতম পরিবেশে বুট করার মাধ্যমে যেমন একটি দ্বারা সরবরাহ করা প্রয়োজন initrd, /dev/sda1অস্থায়ী মাউন্টপয়েন্ট থেকে প্রকৃত রুট ফাইল সিস্টেমটি মাউন্ট করুন, উদাহরণস্বরূপ /mnt/rootfs, তারপরে রুট ডিরেক্টরিটি /mnt/rootfs/chrootব্যবহার করে পরিবর্তন করুন pivot_root(8)

এই কিছুটা কিভাবে মূল ফাইল সিস্টেম অনুরূপ Linux পাত্রে ( LXC ) সেটআপ হয়। এলএক্সসি লিনাক্সের জন্য একটি অপারেটিং সিস্টেম-স্তরের ভার্চুয়ালাইজেশন বাস্তবায়ন। অপারেটিং সিস্টেম-স্তরের ভার্চুয়ালাইজেশন সাধারণত ভার্চুয়াল হোস্টিং পরিবেশে হাইপারভাইজার দ্বারা পরিচালিত পূর্ণ ভার্চুয়ালাইজেশনের লাইটওয়েটের বিকল্প হিসাবে ব্যবহৃত হয়। অপারেটিং সিস্টেম-স্তরের ভার্চুয়ালাইজেশনে, একক অপারেটিং সিস্টেমের কার্নেলটি একাধিক বিচ্ছিন্ন ব্যবহারকারী-স্থানের দৃষ্টান্তগুলির মধ্যে ভাগ করা হয়। প্রতিটি উদাহরণ, প্রায়শই বলা হয় কন্টেইনার, জেল, ভার্চুয়াল প্রাইভেট সার্ভার (ভিপিই) বা ভার্চুয়াল পরিবেশ (ভিই), মূলত হোস্ট সিস্টেমের নিজস্ব ডিরেক্টরিতে একটি পৃথক অপারেটিং সিস্টেম ইনস্টলেশন হয়।


6

আমি একই ইস্যুটি নিয়ে এসেছি এবং এটি বিভিন্ন সিস্টেমে (ডেবিয়ান, উবুন্টু বর্তমানে) ব্যথাহীনভাবে কাজ করতে এই লেখাটি শেষ করেছি:

make_chroot_initrdবিদ্যমান চিত্র থেকে একটি নতুন ক্রোট-সক্ষম সক্ষম আরআরডি চিত্র তৈরি করতে স্ক্রিপ্টটি চালান :

#  ./make_chroot_initrd /chroot/trusty/boot/initrd.img-3.13.0-32-generic
making new initrd: /chroot/trusty/boot/initrd.img-3.13.0-32-generic.chroot

নতুন চিত্রটি হুবহু একই রকম হবে, এখন বাদে এটি কোনও chroot=বুট প্যারামিটার পরিচালনা করতে পারে ।

বুটলোডার হিসাবে গ্রাব 2 দিয়ে আপনি এন্ট্রি যুক্ত করতে পারেন /boot/grub/grub.cfg:
(বা সম্ভবত আরও ভাল /etc/grub.d/40_custom)

menuentry "ubuntu trusty, (linux 3.13.0-32) (chroot)" {
    insmod ext2                       # or whatever you're using ...
    set root='(hd0,7)'                # partition containing the chroot
    set chroot='/chroot/trusty'       # chroot path
    linux   $chroot/boot/vmlinuz-3.13.0-32-generic root=/dev/sda7 chroot=$chroot rw
    initrd  $chroot/boot/initrd.img-3.13.0-32-generic.chroot
}

(আপনার সাথে মেলে ফাইল / পার্টিশন পরিবর্তন করুন)

সিস্টেম-ওয়াইড ইনস্টল

এটির সাথে আপনি খুশি হয়ে গেলে আপনি পরিবর্তনগুলি স্থায়ী করতে পারেন
(যতক্ষণ না ইনি্রামফেস-সরঞ্জাম প্যাকেজ আপগ্রেড হয়)।
ক্রোটেড সিস্টেমে:

# cd /usr/share/initramfs-tools
# cp -pdrv .  ../initramfs-tools.orig       # backup
# patch -p1 < path_to/boot_chroot/initrd.patch
# rm *.orig */*.orig
# update-initramfs -u

এখন থেকে নিয়মিত initrd চিত্র ক্রুট বুটিং সমর্থন করবে।
আলাদা আরআরআরডি.ক্রুট ব্যবহার করার দরকার নেই যা এর সাথে সিঙ্ক থেকে বেরিয়ে যেতে পারে।

বিস্তারিত জানার জন্য বুট_ক্রুট দেখুন ।


3

হ্যাঁ, আপনি বিটিআরএফএস সাবভলিউমগুলি ব্যবহার করে কৌশলটি করতে পারেন

প্রথমে আপনার এখানে বর্ণিত হিসাবে ext4 কে বিটিআরএফ তে রূপান্তর করতে হবে ।

আপনার ক্রুটটি সাব-ভিলিউমে রূপান্তর করুন যদি এটি এখনও না হয়:

 sudo mv /path/to/chroot /path/to/chroot-tmp
 sudo btrfs subvol create /path/to/chroot
 sudo mv /path/to/chroot-tmp/* /path/to/chroot
 sudo mv /path/to/chroot-tmp/* /path/to/chroot -r # for directories

এখন আপনার কাছে পাথ / টু / ক্রুট নামে সাবভোলিউম রয়েছে । আপনি এটি দিয়ে পরীক্ষা করতে পারেনsudo btrfs subvol list /

এখন আপনি বুড়োয় বুড় থেকে সাবভলিউম রেকর্ড তৈরি করতে পারেন। শুধু যোগ rootflags=subvol=path/to/chrootGRUB মেনু আইটেমে Linux kernel লোড স্ট্রিং বা ব্যবহার এই স্বয়ংক্রিয়ভাবে তদন্ত করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.