บูตจากแท่ง USB / ไดรฟ์ภายนอกหรือไม่


44

ฉันรู้ว่ามันเป็นไปไม่ได้ที่จะทำการบูทโดยตรงจากแท่ง USB / ไดรฟ์ภายนอก แต่คุณต้องบูตจากการ์ด SD และจากนั้นอุปกรณ์ภายนอกจะสามารถใช้งานได้ วิธีที่ง่ายและเป็นที่ต้องการในการตั้งค่านี้คืออะไรบูตจากการ์ด SD แล้วปล่อยให้อุปกรณ์ภายนอกครอบครอง

คำตอบ:


37

หากคุณมีระบบปฏิบัติการที่ทำงานอยู่บน Pi ก่อนอื่นคุณควรทราบว่าอุปกรณ์ USB นั้นรองรับหรือไม่ คุณสามารถทำได้โดยติดตั้งเหมือนปกติ:

mount /dev/sda1 /mnt 

หากล้มเหลวคุณจะไม่สามารถใช้อุปกรณ์ USB เป็นพาร์ติชันรูทได้โดยไม่ต้องเปิดใช้งานโมดูลเคอร์เนล และสำหรับสิ่งที่คุณอาจต้องรวบรวมเคอร์เนลของคุณเอง

ถ้ามันประสบความสำเร็จก็ควรจะทำงานได้ดีกับการปรับแต่งพารามิเตอร์การบูตที่ Pi ใช้:

บนอิมเมจที่มีอยู่เปิดcmdline.txtซึ่งสามารถพบได้บนพาร์ติชันสำหรับเริ่มระบบและป้อนบรรทัดต่อไปนี้:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text

สิ่งที่คุณต้องทำคือแฟลชภาพนั้นไปยังการ์ด SD และบูต Pi หากเป็นอย่างดี/dev/sda1ควรเป็นตำแหน่งของไดรฟ์ USB เมื่อบู๊ต Pi และควรพยายามใช้ตำแหน่งนั้นเป็นรูท rootwaitพารามิเตอร์เป็นสิ่งสำคัญที่จะทำให้ขั้นตอนการบู๊ตแขวนจนกว่าไดรฟ์ USB ได้รับการยอมรับ หากไม่มีมัน Pi อาจบ่นว่าไม่มีตำแหน่ง

ฉันขอแนะนำให้คุณคัดลอกพาร์ติชั่นรูทจากอิมเมจ Raspberry Pi ที่มีอยู่ไปยังไดรฟ์ USB ของคุณและใช้มันเพื่อบู๊ตจาก

แจ้งให้เราทราบหากคุณต้องการข้อมูลเพิ่มเติม


+1 คำตอบที่ดี ไม่ควรที่console=...จะมีอยู่แล้ว?
อเล็กซ์แชมเบอร์เลน

2
นอกจากนี้คุณสามารถใช้ UUID บนบรรทัดคำสั่งได้หรือไม่
อเล็กซ์แชมเบอร์เลน

ใช่ฉันให้ทั้งไฟล์และคุณพูดคุยเกี่ยวกับการใช้ UUID ที่ไหน?
Jivings

3
ขอบคุณ Jivings มากฉัน "ประกาย" รูปภาพอย่างเป็นทางการไปยัง USB Stick ของฉันแล้วคัดลอกเนื้อหาจาก FAT partiiton ไปยังการ์ด SD และปรับ cmdline.txt ในกรณีของฉันพาร์ติชันรูทนั้นเป็น / dev / sda2 เนื่องจาก / dev / sda1 เป็นพาร์ติชันสำหรับเริ่มระบบ (ไม่ได้ใช้) บน usb stick ฉันไม่ต้องการรูทรอทในกรณีของฉัน แต่รู้ดีว่าพารามิเตอร์นี้!
stefan.at.wpf

@ stefan.at.wpf (และ Jivings) คุณสามารถใช้ UUID แทน/dev/sdx- อย่างน้อยก็ใน/etc/fstab/- แล้วมันไม่สำคัญว่าจะมีxการเปลี่ยนแปลงหรือไม่
อเล็กซ์แชมเบอร์เลน

4

วิธีที่ง่ายที่สุดในการตั้งค่านี้จะใช้BerryBoot รองรับการติดตั้งไปหรือจากหนึ่งภาพขึ้นไปบนแท่ง USB (หรือบนการ์ด SD ของตัวเอง) ออกจากกล่องผ่านอินเตอร์เฟส GUI ที่ดี

หากต้องการตั้งค่าทั้งหมดที่คุณต้องทำก็คือคัดลอกไฟล์ติดตั้ง ~ 70MB ไปยังการ์ด SD ในรูปแบบ FAT32 ให้เสียบเข้าไปในอุปกรณ์และบูต มันยังมีรายการรูปภาพที่กำหนดรูปไว้ล่วงหน้าซึ่งสามารถดาวน์โหลดและติดตั้งให้คุณผ่านการเชื่อมต่ออีเธอร์เน็ตหรือ wi-fi โดยอัตโนมัติ

จากนั้นคุณเลือกระบบปฏิบัติการที่คุณต้องการบู๊ตโดยค่าเริ่มต้นจากอิมเมจที่มีอยู่ของคุณและหากคุณต้องการเพิ่มอิมเมจใหม่หรือเปลี่ยนค่าเริ่มต้นในภายหลังคุณเพียงกด Enter ในระหว่างขั้นตอนการบู๊ตเพื่อกำหนดค่าใหม่!


ย้ายภาพไปยังการ์ด SD หรือไม่ ฉันคิดว่าเราต้องการติดตั้งบนแท่ง USB หรือไม่?
Suhaib

เนื่องจาก OP ระบุว่าเป็นไปไม่ได้ที่จะบูตโดยตรงจาก USB stick บน Raspberry Pi - คุณต้องมีการ์ด SD ที่ติดตั้ง bootloader ซึ่งสามารถส่งกระบวนการไปยังอุปกรณ์อื่นเมื่อเปิดเครื่อง
นาธานดันน์

2

ตกลงเพื่อชี้แจง -

เพิ่มเติมจาก @Jivings คำตอบ -

มีหลายวิธีที่คุณสามารถอ้างถึงดิสก์ใน fstab การใช้ / dev / sdXX อาจไม่ปลอดภัยเสมอไปเนื่องจากคำสั่งที่ดิสก์ scsi อาจไม่รับประกัน

สิ่งที่ฉันไม่ทราบคือถ้าการกำหนดค่าการบูตเข้าใจอะไรนอกจากป้ายชื่ออุปกรณ์พื้นฐาน "root = / dev / sda1" เป็นนามธรรมอย่างไรก็ตามในทางทฤษฎี root = LABEL = TEST อาจทำงานได้ ฉันต้องการตรวจสอบ

ฉันขอโทษถ้าฉันไม่ชัดเจน ฉันได้รับทักษะในการอธิบายลินุกซ์ให้กับผู้คนใหม่ ๆ อย่างเห็นได้ชัด


1
Jivings: คุณช่วยอธิบายพารามิเตอร์บางอย่างในตัวอย่างบรรทัด comand ของคุณสำหรับพวกเราได้ไหม? ขอบคุณ
Michael Moriarty

เขาไม่เคยพูดถึง fstab ชื่ออุปกรณ์ / พาร์ติชันเป้าหมายคือพารามิเตอร์เคอร์เนล ฉันเชื่อว่าอนุสัญญาการตั้งชื่ออื่น ๆ เช่น UUID เป็นไปได้กับเมล็ดที่ทันสมัยโดยเฉพาะอย่างยิ่งหากพวกเขามีโมดูล initrd / initramfs
jiggunjer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.