ฉันจะบูตจากไฟล์ ISO ที่เก็บไว้ในฮาร์ดดิสก์ได้อย่างไร


12

ฉันรู้ว่าฉันสามารถสร้าง / เขียนซีดี / ดีวีดีที่สามารถบูตได้หรือ USB สดและสามารถบูต / ติดตั้งได้ แต่สมมติว่าฉันใช้ GNU / Linux อยู่ในขณะนี้และฉันเป็นไฟล์ ISO ของ GNU / Linux อื่นที่ฉันต้องการติดตั้งบนฮาร์ดดิสก์ของฉันจากนั้นฉันสามารถบูตจาก ISO จากฮาร์ดดิสก์โดยตรงและลอง / ติดตั้งระบบปฏิบัติการ GNU / Linux ?

คำตอบ:


15

ใช่คุณสามารถทำสิ่งนี้ได้โดยเพิ่มรายการเมนูลงในGRUBเมนูบูตโหลดเดอร์

คุณสามารถเพิ่มรายการเมนูด้วงที่กำหนดเองโดยการแก้ไข/etc/grub.d/40_custom,

ตัวอย่างเมนูที่กำหนดเอง :

 exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.  

menuentry "Trisquel ISO" {
        set isofile="/Operating_Systems/Trisquel_7.0_i686/trisquel_7.0_i686.iso"
        loopback loop (hd0,5)$isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash
        initrd (loop)/casper/initrd
}

คำแนะนำและคำอธิบาย:

  1. คำสั่งที่setถูกนำมาใช้สำหรับการจัดเก็บเส้นทางของไฟล์ ISO isofileลงในตัวแปรที่นี่

  2. loopbackถูกใช้เพื่อสร้างอุปกรณ์จากอิมเมจระบบไฟล์ ในการดำเนินการดังกล่าวจำเป็นต้องระบุอุปกรณ์และไฟล์รูปภาพ ที่นี่เราใช้(hd0,5)$isofileซึ่ง(hd0,5)หมายถึงห้าพาร์ติชันของดิสก์

    • จุดที่จะต้องทราบ: ใน(hd0,5),
      1 เซนต์หลักหมายถึงจำนวนอุปกรณ์ที่เริ่มจาก0(ที่นี่: 0 = 1 เซนต์อุปกรณ์) และ
      2 ครั้งหลักหมายถึงจำนวนพาร์ทิชันที่เริ่มต้นด้วย1(ที่นี่ 5 = 5 THพาร์ทิชัน)
      นั่นหมายความว่า/dev/sda5
    • และตัวแปร$isofileมีเส้นทางของไฟล์ ISO (hd0,5)/Operating_Systems/Trisquel_7.0_i686/trisquel_7.0_i686.isoดังนั้นในที่สุดก็จะกลายเป็น
    • สำหรับข้อมูลเพิ่มเติมโปรดเยี่ยมชม: วิธีการระบุอุปกรณ์และไฟล์

  3. linuxคำสั่งจะใช้ในการโหลดเคอร์เนล Linux ( vmlinuz ) จากไฟล์ ใส่พา ธ ของเคอร์เนล Linux ใน ISO

    • อ่าน / แตกเนื้อหาของ ISO เพื่อรับพา ธ ของตัวอย่างเคอร์เนล:

       $ 7z l trisquel_7.0_i686.iso | grep vmlinu
       2014-10-29 21:41:43 .....      5841680      5841680  casper/vmlinuz
       2014-11-03 00:45:09 .....      5844176      5844176  casper/vmlinuz.netinst
      

      ดังนั้น/casper/vmlinuzใช้ที่นี่

  4. initrd คำสั่งจะใช้ในการโหลด ramdisk เริ่มต้นสำหรับภาพเคอร์เนล Linux และตั้งค่าพารามิเตอร์ที่เหมาะสมในพื้นที่ติดตั้งลินุกซ์ในหน่วยความจำ

    • initrdเป็นรูปแบบสำหรับการโหลดระบบไฟล์รากชั่วคราวลงในหน่วยความจำ ใส่เส้นทางของinitrdใน ISO
    • อ่าน / แยกเนื้อหาของ ISO เพื่อรับเส้นทางinitrd:

      $ 7z l trisquel_7.0_i686.iso | grep initrd
      2014-11-03 00:45:19 .....     16851900     16851900  casper/initrd
      2014-11-03 00:45:09 .....      9398592      9398592  casper/initrd.netinst
      
  5. พารามิเตอร์เพิ่มเติมเช่นboot=casper iso-scan/filename=$isofile noprompt noejectอาจเฉพาะการกระจาย GNU / Linux และแตกต่างกันไปสำหรับตระกูลอื่นของ Linux คุณสามารถค้นหาการกำหนดค่าบางอย่างสำหรับครอบครัวที่แตกต่างกัน / การกระจายจากที่นี่

    หมายเหตุ: การแจกแจงบางอย่างใช้initrd.gzหรือinitrd.lzขึ้นอยู่กับอัลกอริทึม / การบีบอัดที่ใช้

หลังจากแก้ไข/etc/grub.d/40_customGRUB ต้องได้รับการปรับปรุงโดยupdate-grub2คำสั่ง เมื่อรีบูตเครื่องคุณจะพบเมนูที่กำหนดเองที่คุณเพิ่มบนหน้าจอ GRUB และคุณอาจใช้สภาพแวดล้อมสดของการกระจาย GNU / Linux

ในการติดตั้งจาก ISO ผู้ติดตั้งอาจจำเป็นต้องถอนการติดตั้งพาร์ติชั่นใด ๆ เช่นบอกว่าระบบอื่นที่ติดตั้งที่แล้วคุณสามารถ/isodeviceumount -l /isodevice


ว้าวฉันประทับใจ ... ฉันคิดว่าคงเป็นไปไม่ได้เนื่องจากการติดตั้งระบบปฏิบัติการใหม่มักเกี่ยวข้องกับการฟอร์แมตพาร์ติชันใหม่ซึ่งอาจรวมถึงพาร์ติชันไฟล์ ISO ที่คุณจัดเก็บไว้
Wildcard

ตัวอย่างของคุณใช้ GRUB2 Centos 6 ใช้ GRUB1 (มรดกด้วง) และตัวอย่างข้างต้นไม่สามารถใช้งานได้
Ikrom
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.