วิธีการเพิ่มรายการเคอร์เนลใหม่ใน grub2? [ซ้ำ]


0

คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:

ได้โปรดใครก็ได้ช่วยฉันด้วย!

ฉันกำลังสร้างเคอร์เนลจากซอร์สโค้ดที่ดาวน์โหลดมา http://kernel.org . ฉันสร้างและติดตั้งโมดูลสำเร็จแล้ว ตอนนี้ฉันต้องการตัวเลือกเคอร์เนลของฉันควรมาในเวลาบูตและฉันต้องการเลือก หลังจากทำการค้นหาบน google

i copyed bzImage in /boot folder.
i copyed System.map file in /boot folder

ตอนนี้ฉันต้องการสร้างรายการเคอร์เนลตอนบูท ฉันรู้ว่าฉันต้องทำการเปลี่ยนแปลงใน "/etc/grub.d/" และ "/ etc / default / grub" หลังจากนั้นฉันจะต้องเรียกใช้ "update-grub" แต่ปัญหาคือว่าฉันจะตั้งค่าฟิลด์อย่างไร

  1. set root = '(hd0, msdos6)'
  2. ค้นหา - ไม่มีฟลอปปี้ --fs-uuid --set = root c291827c-6678-4067-ad09-01481681a9f9
  3. echo 'กำลังโหลด Linux 3.5.0-45-generic ... '
  4. linux /boot/vmlinuz-3.5.0-45-generic root = UUID = c291827c-6678-4067-ad09-01481681a9f9 ro nomodeset การกู้คืน
  5. echo 'กำลังโหลด ramdisk เริ่มต้น ... '
  6. initrd /boot/initrd.img-3.5.0-45-generic

เหล่านี้คือบางส่วนของเขตข้อมูล แต่ฉันไม่ทราบวิธีการรับค่าของ uuid สิ่งที่จะตั้งค่าในรูต (เช่น hd0, msdos6) ความหมายของมันคืออะไรวิธีการรับภาพ ramdisk เริ่มต้น?

โปรดอย่าพูดว่าคำถามนี้คล้ายกับคำถามนี้หรือคำถามนั้น ฉันค้นหามันแล้วที่ google และ stack overflow แต่ไม่มีอะไรแก้ไขปัญหาของฉันทั้งหมดที่ฉันได้รับคือ 100s ของ tab เปิดในเบราว์เซอร์ของฉัน

ความต้องการของฉัน: -

How to get uuid for new kernel image?
what is (hd0,msdos6)? how to get this value for new kernel image?

โปรดช่วยฉันด้วย!

คำตอบ:


2

ให้อธิบายด้วงหน่อย ... แล้วอธิบายว่าเกิดอะไรขึ้นกับสิ่งที่คุณกำลังทำ มี 4 ส่วนในการบูทระบบ Linux:

  1. บันทึก Master-Boot นี่เล็กมากและต้องอยู่ที่เซกเตอร์เฉพาะบนดิสก์ ไบออสนั้นยากที่จะค้นหาสิ่งนี้และเริ่มการทำงานที่นั่น
  2. Bootlaoder นั้นเอง สิ่งนี้อาจเป็นด้วง lilo, syslinux หรือสิ่งอื่น ๆ ที่หลากหลาย ในกรณีนี้มันด้วง บ่อยครั้งที่ MBR (มาสเตอร์บูตเรกคอร์ด) และ bootloader เป็นไฟล์เดียวกันที่ตั้งอย่างมีกลยุทธ์บนสื่อที่สามารถบู๊ตได้ (โดยทั่วไปจะเริ่มต้นที่สองสามไบต์แรกสุดของดิสก์) นี่ไม่ใช่กรณีเช่นนี้เพราะคุณสามารถมี bootloader หนึ่งตัวต่อหนึ่ง bootloader ตัวที่สอง
  3. เคอร์เนลนั่นเอง น่าเสียดายที่เคอร์เนลเองไม่ได้ทำอะไรมากมายหากไม่มีบิตเพิ่มเติม คิดว่ามันเป็นสมอง ด้วยตัวเองมันไม่สามารถทำอะไรได้มาก โยนสคริปต์ส่วนต่าง ๆ ของร่างกาย (ตา, ขา, ระบบไหลเวียนโลหิต, ฯลฯ ) โมดูลเคอร์เนลและคุณมีจุดเริ่มต้นของระบบ
  4. รูปภาพ Ramdisk เริ่มต้น นี่เป็นรูปภาพที่เล็กพอที่จะทำให้ระบบปฏิบัติการทั้งหมดเริ่มทำงาน มันถูกโหลดเข้าสู่ RAM และติดตั้งเป็นระบบไฟล์รูท โดยทั่วไปจะมีทุกสิ่งที่เคอร์เนลต้องบูตจริง (โมดูลเคอร์เนลสคริปต์เริ่มต้น ฯลฯ ... ) ในบางจุด ramdisk เริ่มต้นจะติดตั้งระบบไฟล์รูทจริงอีกครั้งและแทนที่การดำเนินการกับสคริปต์เริ่มต้นที่อยู่บนรูท คุณไม่จำเป็นต้องใช้ ramdisk เริ่มต้นเสมอ ... แต่คุณถูก จำกัด โดยสิ่งที่คุณสามารถยัดเข้าไปใน bzImage

ตอนนี้คำอธิบายของค่า "UUID" ส่วนตัวฉันเกลียด UUID ฉันเข้าใจว่าทำไมพวกเขาถึงถูกใช้ในวันนี้ ... แต่นั่นไม่ได้ทำให้ฉันเกลียดพวกเขาน้อยลง ในอดีตเราเพียงแค่กำหนดดิสก์เป็น "/ dev / hda1" หรือ "(hd0,1)" ซึ่งบอกเราว่ามันเป็นดิสก์ทางกายภาพแรก (hda หรือ hd0) และพาร์ติชันแรกบนดิสก์ หากคุณตัดสินใจที่จะเพิ่มไดรฟ์ที่สองไดรฟ์เก่าจะกลายเป็น hdb หรือ hd1 หรือไม่ หรือมันจะยังคงเหมือนเดิมหรือไม่? เพื่อต่อสู้กับความคลุมเครือนั้นมีบางคนคิดที่จะสร้าง "Universally Unique IDentifier" ซึ่งจะกำหนดค่าที่ไม่ซ้ำกันให้กับดิสก์แต่ละตัวซึ่งจะคงอยู่ตลอดการบู๊ตเครื่อง ถูกเขียนลงดิสก์ ... และโดยทั่วไปจะไม่มีการเปลี่ยนแปลง ข้อเสียคือถ้าคุณโคลนระบบไฟล์ไปยังดิสก์อื่น ... UUID จะไม่ตรงกันและระบบจะไม่บูต หากคุณต้องการติดกับ UUIDs ... เพียงแค่บูทระบบใน live-disk ทั่วไปและมองหาใน / dev / disk / by-uuid เพื่อหาตัวที่ชี้ไปที่ไดรฟ์ / พาร์ติชัน

ข่าวดีก็คือคุณไม่จำเป็นต้องใช้ UUID คุณสามารถลบคำสั่ง "ค้นหา" และปล่อยให้รูท = เป็นตัวกำหนดปัจจัยสำหรับรูตใด คุณยังสามารถใช้ --label แทน --fs-uuid และระบุป้ายดิสก์ (หากคุณตั้งค่าไว้)


ขอขอบคุณคุณ CompWiz.Can คุณกรุณาแนะนำทรัพยากรใด ๆ จากที่ฉันสามารถศึกษาเกี่ยวกับมันในรายละเอียดในทางทฤษฎีเช่นเดียวกับในทางปฏิบัติขอให้ดี!
nitin

เอกสาร grub2 ออกมาแล้ว ... แต่น่าเสียดายที่ ... ฉันยังไม่พบวิธีง่าย ๆ ในการปฏิบัติตาม "นี่คือวิธีการทำงาน" ส่วนมากคุณต้องเล่นซอและทำมันให้สำเร็จ หากคุณมีคำถามเฉพาะเจาะจง ... ฉันยินดีที่จะช่วยชี้คุณในทิศทางที่ถูกต้อง
TheCompWiz

ฉันใช้ Debian 6.0.4 (บีบ) เคอร์เนล linux 2.6.32-5-686 ฉันกำลังสร้างเคอร์เนล linux 2.6.32.61 ด้วยตนเอง ตอนนี้เพื่อสร้างภาพดิสก์เริ่มต้น ram ฉันได้ใช้ "initrd -o /boot/intrd.imag-version" และ "initramfs -o /bot/initrd.imag-version" แต่เมื่อฉันเรียกใช้คำสั่งเหล่านี้มันจะให้ข้อผิดพลาดที่คำสั่ง ไม่พบ. ฉันได้ติดตั้งแพคเกจที่ต้องการผ่านตัวจัดการแพคเกจ synaptic แต่ปัญหายังคงเหมือนเดิม ฉันใช้คำสั่ง whereis แต่คำสั่งเหล่านี้แสดงว่าไม่มี programm ดังกล่าว ตอนนี้ฉันจะทำอะไรได้บ้างจากนั้นตัวเลือกเหล่านี้?
nitin

1

คุณเปลี่ยนชื่อคุณเป็นอย่างไร bzImage ไปยัง kernel-${version} หรือ vmlinuz-${version} แล้วก็ grub2-mkconfig ควรหยิบมันขึ้นมาโดยอัตโนมัติ

สำหรับสิ่งอื่น ๆ หากคุณต้องการสร้างรายการที่กำหนดเองคุณอาจต้องดูไฟล์ต่างๆ /etc/grub.d/ โดยเฉพาะ XX_custom

คุณสามารถใช้ UUID ซ้ำได้ซึ่งเป็นของพาร์ติชันไม่ใช่เคอร์เนล เหมือนกับ root(hd0,msdos6) มันเป็นสัญกรณ์สำหรับกำหนดให้ด้วงที่จะโหลดเคอร์เนลจากและคุณเพียงแค่เพิ่มเคอร์เนลเพื่อให้สามารถนำมาใช้ใหม่

ramdisk เริ่มต้นถูกสร้างขึ้นโดยใช้เครื่องมือที่เหมาะสมที่สุดอาจเป็นวิธีเฉพาะ distro คุณจะต้องอ้างถึงเอกสาร Ubuntu ในเรื่องนี้


ยินดี. ฉันเอามันจาก คู่มือการย้าย Gentoo GRUB2 .
VL-80
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.