আর আর ডিআরআরডি ব্যবহার না করে এলভিএম-এ রুট করা কি সম্ভব?


12

আমি সবেমাত্র একটি জেন্টু বেস সিস্টেম স্থাপন করেছি (যার অর্থ আমি বুট করতে এবং লগ ইন করতে এবং এটি দিয়ে এখনই জিনিসগুলি করতে পারি)। আমার মূল বিভাজনটি একটি এলভিএম 2 ভার্চুয়াল গ্রুপে রয়েছে (পৃথক /bootপার্টিশন সহ)। বুট করার জন্য আমি কার্নেল করার জন্য নিচের প্যারামিটার পাস করা প্রয়োজন:

root=/dev/ram0 real_root=/dev/vg/rootlv init=/linuxrc dolvm

দৃশ্যত এটি একটি initial ramdisk ব্যবহার করছে কিছু (আমি LVM- র জিনিষ লোড অনুমান) রুট মাউন্ট আগে না। একটি উপায় আছে যে, আমি কার্নেল নিজেই যাতে কোন initrd- র প্রয়োজন হয় এই কোডটি লাগাতে পারেন কি? যদি তা না হয় তবে আমি কীভাবে নিজেকে ডিআরআরড করব?

এটি যোগ করতে যে আমি অ LVM- র রুট জন্য কার্নেল কম্পাইল চেষ্টা করেছে হলে initrd ছাড়া সহায়ক হতে পারে এবং এটি পুরোপুরি কাজ করেন। তারপরে আমি পুরো জিনিসটি এলভিএমের নীচে রাখার চেষ্টা করেছি এবং মেশিনটি বুট করতে পারিনি (আমার ধারণা এটি এলভিএম স্টাফগুলির সাথে ডিল করতে পারে না)। তারপর আমি ব্যবহার genkernelসঙ্গে টুল --lvmবিকল্প এবং এটা কাজ কার্নেল তৈরি করে এবং initrd- র আমি বর্তমানে ব্যবহার করছি যে।

এখন আমি genkernelনিজেরাই এড়িয়ে চলা এবং নিজেই করতে চাই, অগ্রিমভাবে আর আরআরড ছাড়াই যাতে মেশিনটি কিছুটা দ্রুত বুট হয়ে যায় (যাইহোক আমার নমনীয়তার প্রয়োজন হবে না)।


একটি initrd- র বুট সময়ে একটি ছোট প্রভাব থাকতে পারে, কিন্তু একবার এটাকে সচল এর এটি আপনার সিস্টেমে কর্মক্ষমতা প্রভাবিত করবে না।
ক্রিস্টফ প্রোভস্ট

ওহ হ্যাঁ, আমি আসলে বুটের সময়
বোঝাচ্ছি

উত্তর:


6

সহজ উত্তর: না, যদি আপনি এলভিএম চান তবে আপনার একটি ডিআরআরডি দরকার।

কিন্তু অন্যদের বলেছি আগে: LVMs নিচে আপনার সিস্টেম মন্থর বা অন্য উপায়ে কিছু খারাপ করো না, তারা শুধু আপনি এমন একটি পরিবেশের লোড করার জন্য আপনার কার্নেল পারবেন তৈরি এবং তার কাজ করার অনুমতি দেয়।

initrd- র পারবেন আপনার কার্নেল লোড করা: আপনার কার্নেল একটি LVM ড্রাইভ পুরো LVM- র পরিবেশ বাইনারি রয়েছে সেটা কার্নেল লোড করা যাবে সামনে স্থির করা হয়েছে উপর হয়।

আরআরআরডি তে উইকিপিডিয়া এন্ট্রি পরীক্ষা করে দেখুন যা সূচনা দেয় এবং আপনার এটির কেন প্রয়োজন তা ব্যাখ্যা করে।

আরেকটি নোট: আমি কিছু নিজেকে অনুপস্থিত আপনার বিন্দু দেখতে কিন্তু আপনি এমনকি genkernel সঙ্গে আপনার হাত নোংরা পেতে পারেন। জেনারেল --menuconfig সমস্ত ব্যবহার করুন এবং আপনি মূলত সবকিছু সেট করতে পারেন যেন আপনি কোনও সরঞ্জাম সমর্থন ছাড়াই আপনার কার্নেলটিকে পুরোপুরি তৈরি করতে পারেন, জেনারেল কেবল মেক বিজেআইমেজ যুক্ত করে, মডিউলগুলি তৈরি করে এবং মডিউল_ইনস্টল লাইনগুলি আপনার জন্য তৈরি করে এবং সেই অভ্যাসযুক্ত আরআরআরডি স্টাফ করে।

আপনি স্পষ্টতই নিজেকে নিজেকে আরআরডি তৈরি করতে পারেন কারণ এটি এখানে ইআর্রামফের জন্য বা এখানে ডিআরআরডিটির জন্য বর্ণিত রয়েছে ।


নিশ্চিতকরণের জন্য ধন্যবাদ, তবে আপনি এই অংশটি মিস করেছেন "যদি তা না হয় তবে আমি কীভাবে নিজেকে ডিআরডি করতে পারি?"
ফুনেহে

কিছু তথ্য যোগ করা হয়েছে এবং এই এক মধ্যে আমার অন্যান্য জবাব মার্জ হয়েছে।
tante

8
একটি ছোট সংশোধন: কার্নেল লোড করার জন্য initrd ব্যবহার করা হয় না : কার্নেলটি বুটলোডার দ্বারা লোড করা হয় (GRUB, LILO, যাই হোক না কেন); initrd হল এক ধরণের র্যাম-ডিস্ক যা প্রাথমিক রুট ফাইল সিস্টেম সরবরাহ করে। এটিতে সিস্টেমটি কার্যকরভাবে চালিত করার জন্য প্রয়োজনীয় সমস্ত বাইনারি (যেমন, কার্নেল মডিউল, ব্যবহারকারী স্থান সমর্থন প্রোগ্রাম) থাকা উচিত। এই জন্যই এটা একটি LVM রুট জন্য প্রয়োজন হয়: LVM- র সাব-সিস্টেম সক্রিয়া করা প্রয়োজন এবং তার আরম্ভের খুব সুবিধামত একা কার্নেল বুট পরামিতি সঙ্গে কাজ করতে হবে জটিল হয়; এভাবে linuxrcহলে initrd সঞ্চালিত মধ্যে স্ক্রিপ্ট এই কাজের।
রিকার্ডো মুরি

আপনি অবশ্যই ঠিক বলেছেন, আমি আমার ফ্রেসিংটি কিছুটা পিছলে ছিলাম।
tante

2
উত্তরে বেশ বড় ভুলের কারণে উত্সাহ দেওয়া যাবে না (initrd কার্নেলটি বোঝা দেয় না)।
wzzrd

5

সম্পাদনা: ঠিক বুঝতে পেরেছি আপনি এলভিএম বুট করার চেষ্টা করছেন, আমি কখনই কোনও এলভিএম সেটআপ করিনি, তাদের কখনই প্রয়োজন হয়নি, সম্ভবত এখানকার পদ্ধতির কাজ নাও হতে পারে

ইনিআরআরডি-কম কার্নেল তৈরি করার জন্য আপনার যে প্রাথমিক নিয়মগুলি করা দরকার তা এখানে রয়েছে (স্মৃতি থেকে, আমি ঠিক মনে করি নি):

  1. আপনার কার্নেল কম্পাইল, নিশ্চিত কার্নেল পাতাটা করতে (গুরুত্বপূর্ণ: না মডিউল রূপে):

    1. মাদারবোর্ড ড্রাইভার এবং হার্ডড্রাইভ ড্রাইভার (উভয়ের অধীনে Device Drivers)
    2. ফাইলসিস্টেম ড্রাইভারের জন্য /, /etc/*এবং /lib/modules/*(অধীনে File systems)

    মূলত, কার্নেল চাহিদা রুট ফাইল সিস্টেম মাউন্ট করতে, / etc / fstab ফাইলের পড়া, অন্যান্য ড্রাইভার মডিউলগুলি লোড (প্রয়োজন হলে), এবং বুট করার প্রক্রিয়া বাকি সম্পন্ন করতে অন্যান্য অ-রুট ফাইল সিস্টেম মাউন্ট পাবে। আপনার যদি আরও জড়িত বুটিং প্রক্রিয়া থাকে, যেমন নেটওয়ার্ক বুট করা তবে আপনার সেই ড্রাইভারগুলিতেও তৈরি করা দরকার।

  2. "জেনারেল সেটআপ> প্রাথমিক র‌্যাম ফাইল সিস্টেমস এবং র‌্যাম ডিস্ক (initramfs / initrd) সমর্থন" ওরফে CONFIG_BLK_DEV_INITRD = n থেকে আরআরআরআডি অক্ষম করুন।

  3. পরিবর্তন গ্রাব কনফিগ, আপনি আর চাহিদা init = এবং realroot =, এবং সেটআপ রুট = তাই এটি রুট ফাইল সিস্টেম ডিভাইসে স্থানটিকে চিহ্নিত করে।

আমার মনে হয় এটাই সব। কিছু ঘটলে ব্যাকআপ কার্নেল এবং একটি বুটেবল লাইভ সিডির একটি ভাল অনুলিপি রাখতে ভুলবেন না।

যে জিনিসগুলি ভুল হতে পারে: আপনি যদি ভুল ড্রাইভারগুলিতে সংকলন করেন বা মডিউল হিসাবে আপনি যদি বেসিক ড্রাইভারগুলি সংকলন করেন তবে কার্নেল ফাইল সিস্টেমটি পড়তে পারে না। রিবুট একটি তাজা কার্নেলের সাথে, অথবা একটি লাইভ সিডি দিয়ে এবং সঠিক ড্রাইভার সঙ্গে একটি কার্নেল কম্পাইল।

শুধুমাত্র কঠিন অংশ figuring আউট যা চালক আপনার হার্ডওয়্যারে প্রাসঙ্গিক। আপনি আপনার হার্ডওয়্যার সনাক্ত করতে lspciএবং ব্যবহার করতে পারেন lshw। আপনার যদি ইতিমধ্যে এই সরঞ্জামগুলি না থাকে তবে emerge lshw pciutils


কার্নেল সংকলনে অন্তর্নির্মিত বনাম মডিউল উল্লেখ করার জন্য +1।
অ্যাম্ফটামাচাইন

lsmodএকটি চলমান কার্নেল থেকেও দরকারী।
লরেন্স

2

হ্যাঁ, আপনি একটি initrd- র প্রয়োজন। কারণটা এখানে:

সাধারণ বুট প্রক্রিয়াটি বুটলোডার দিয়ে শুরু হয়, যা কার্নেলটি খুঁজে পেতে এবং চালানোর জন্য আপনার সিস্টেম সম্পর্কে যথেষ্ট জানেন। (GRUB2 স্মার্ট যথেষ্ট একটি কার্নেল যে একটি LVM2 বা RAID পার্টিশন অবস্থিত খুঁজে দেওয়ার জন্য, কিন্তু GRUB1 তাই এটি সাধারণত সুপারিশ করা হচ্ছে যে আপনি একটি সরলীকৃত বিন্যাস সাথে পৃথক পার্টিশন। যেমন / বুট তৈরি করেন, নয়) একবার এটি লোড এর কার্নেল চাহিদা রুট ফাইল সিস্টেমটি সন্ধানে সক্ষম হতে, যাতে এটি বুট প্রক্রিয়া শুরু করতে পারে। যাইহোক, LVM- র কিছু ইউজার-স্পেস সরঞ্জাম, যা রুট ফাইল সিস্টেম, যা LVM- র সরঞ্জাম, যা রুট ফাইল সিস্টেম উপস্থিত ... ছাড়া লোড করা যাবে না উপস্থিত দ্বারা আলোড়ন সৃষ্টি হচ্ছে না শুরু করতে পারে না;)

এই চক্রটি ভাঙ্গার জন্য, একটি আরআরআরডিআর বা ইন্রামমেফগুলি একটি সংকোচিত ফাইল সিস্টেম যা কার্নেলের সাথে সংরক্ষণ করা হয় (হয় / বুটে, অথবা কার্নেলের ভিতরেই), যেখানে কেবলমাত্র লিনাক্স সিস্টেম যেমন LVM বা MD বা অন্যান্য যে কোনও কিছু শুরু করতে পারে তুমি চাও. এটি একটি অস্থায়ী ফাইল সিস্টেম এবং আসল রুটটি লোড হওয়ার জন্য আপনার রুট ফাইল সিস্টেম হিসাবে যথেষ্ট দীর্ঘ সময় কাজ করে।

যতদূর আসলে এক তৈরীর হিসাবে, বিষয়ে সবচেয়ে ডকুমেন্টেশন অবিশ্বাস্যরূপে অপ্রচলিত - lvm2create_initrd, উদাহরণস্বরূপ, এমনকি জেন্টু কাজ আর নেই। (আমি কয়েক মাস আগে একই জিনিস স্থাপন, এবং আমি সব করতে হয়েছে কিন্তু স্ক্রিপ্ট পুনর্লিখন আগে আমি একটি তা থেকে initrd- র কাজ করতে দেখে।) আপনার নিজের initramfs -র তৈরি করা হচ্ছে মজা হতে পারে, এবং এটি একটি একেবারে সংক্ষিপ্ত বুট পেতে একমাত্র উপায় প্রক্রিয়া (এবং কীভাবে প্রক্রিয়াটিতে লিনাক্স বুট হয় সে সম্পর্কে ইনগুলি এবং আউটস শিখুন), তবে এটি অনেক কাজ work

সংক্ষিপ্ত উত্তর: আইনজীবীরা Dracut ব্যবহার করুন। এটি একটি নতুন কাঠামোর যে একটি বেশিরভাগ স্বয়ংক্রিয় ভাবে একটি initramfs -র জেনারেট করার জন্য নির্মিত হচ্ছে, এবং এটি এর মধ্যে Portage আছে। ডকুমেন্টেশনটি কিছুটা বিচ্ছিন্ন, তবে জিনিসগুলি বের করার জন্য এটির যথেষ্ট পরিমাণে রয়েছে এবং এটি একটি দৃ init় ইনিগ্রাফ এবং এলভিএম রুট পাওয়ার সহজতম উপায়।


2

যদিও কিছু ধরণের আরআরআরডি ব্যবহার করা সম্ভব নয় পৃথক আরআরআরডিডি ফাইলগুলি ব্যবহার না করা সম্ভব। (আমি কখনও জেনারেল ব্যবহার করি নি তাই এর জন্য আমি নির্দেশনা দিতে পারি না)।

উদাহরণস্বরূপ আমি বিকল্প সেট আছে:

CONFIG_INITRAMFS_SOURCE="/usr/src/initrd.contents"

কোথায় /usr/src/initrd.contentsমত আমার ক্ষেত্রে সৌন্দর্য (আমি আছে LVM- র + + tuxonice + + fbsplash) এ:

dir /bin                                    0755 0 0
file    /bin/busybox                        /bin/busybox                        0755 0 0
file    /bin/lvm                        /sbin/lvm.static                    0755 0 0
dir /dev                                    0755 0 0
dir /dev/fb                                 0755 0 0
dir /dev/misc                               0755 0 0
dir /dev/vc                                 0755 0 0
nod /dev/console                                0600 0 0    c  5   1
nod /dev/null                               0600 0 0    c  1   3
nod /dev/snapshot                               0600 0 0    c 10 231
nod /dev/tty1                               0600 0 0    c  4   0
dir /etc                                    0755 0 0
dir /etc/splash                             0755 0 0
dir /etc/splash/natural_gentoo                      0755 0 0
dir /etc/splash/natural_gentoo/images                   0755 0 0
file    /etc/splash/natural_gentoo/images/silent-1680x1050.jpg  /etc/splash/natural_gentoo/images/silent-1680x1050.jpg  0644 0 0
file    /etc/splash/natural_gentoo/images/verbose-1680x1050.jpg /etc/splash/natural_gentoo/images/verbose-1680x1050.jpg 0644 0 0
file    /etc/splash/natural_gentoo/1680x1050.cfg        /etc/splash/natural_gentoo/1680x1050.cfg        0644 0 0
slink   /etc/splash/tuxonice                    /etc/splash/natural_gentoo              0755 0 0
file    /etc/splash/luxisri.ttf                 /etc/splash/luxisri.ttf                 0644 0 0
dir /lib64                                  0755 0 0
dir /lib64/splash                               0755 0 0
dir /lib64/splash/proc                          0755 0 0
dir /lib64/splash/sys                           0755 0 0
dir /proc                                   0755 0 0
dir /mnt                                    0755 0 0
dir /root                                   0770 0 0
dir /sbin                                   0755 0 0
file    /sbin/fbcondecor_helper                 /sbin/fbcondecor_helper                 0755 0 0
slink   /sbin/splash_helper                 /sbin/fbcondecor_helper                 0755 0 0
file    /sbin/tuxoniceui_fbsplash               /sbin/tuxoniceui_fbsplash               0755 0 0
file    /sbin/tuxoniceui_text                   /sbin/tuxoniceui_text                   0755 0 0
dir /sys                                    0755 0 0
file    /init                           /usr/src/init

এবং /usr/src/initহ'ল:

#!/bin/busybox ash
local X ROOT RUNLEVEL INIT PARAM
# Preliminary stuff
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mdev -s
/bin/lvm vgchange -ay picard-main

# Try to resume. This never returns if it succeeds
test -e /sys/power/tuxonice/do_resume && echo 1 > /sys/power/tuxonice/do_resume
#/bin/resume

# Parse the command line for relevant options.
INIT=/sbin/init
RESCUE=""
PARAM=" "
for X in `cat /proc/cmdline`
do
        case "$X" in
                root=*) ROOT=${X#root=} ;;
                [0-6Ss]) RUNLEVEL=${X} ;;
                init=*) INIT=${X#init=} ;;
                rescue) RESCUE="rescue" ;;
        splash=*) PARAM="${PARAM} ${X}" ;;
        consol=*) PARAM="${PARAM} ${X}" ;;
        esac
done

if [ x${RESCUE} = xrescue ]
then
        busybox ash
fi

# Mount and switch root.
mount -o ro ${ROOT} /mnt
umount -f /sys || umount -l /sys
umount -f /proc || umount -l /proc

exec switch_root /mnt ${INIT} ${RUNLEVEL} ${PARAM}

1

হ্যাঁ, তাই

আরআরআরডি তৈরি ও পরিচালনা করা থেকে উদ্ভূত জটিলতাগুলি যদি আপনি গ্রাব 2 ইনস্টল করেন এবং ব্যবহার করেন তবে মূটকে রেন্ডার করা হবে। Grub2 wiki http://grub.enbug.org/LVMandRAID বর্ণনা করে যে আপনি কীভাবে grv.cfg, গ্রাব কনফিগারেশন ফাইলের ইনসোড lvm ছাড়া আর কিছু না রেখে lvm এ আপনার / বুট রাখতে পারবেন, সুতরাং আর একটি আরআরডিআরডের প্রয়োজন নেই।

grub2 এখন 1.98 সংস্করণে রয়েছে তবে এখনও ভেন্টুতে পরীক্ষামূলক শাখায় রয়েছে। তবে এটি অন্য স্লটে ইনস্টল করা যাবে এবং পুরোপুরি ব্যবহারযোগ্য নয়।

উপভোগ করুন!


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