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


1

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

แต่วิธีนี้สามารถใช้งานได้จริง ๆ ถ้าพาร์ติชันสำหรับเริ่มระบบเปลี่ยนแปลงน้อยมากและไม่ทราบเกี่ยวกับรูติชันพาร์ติชันมากไปกว่าวิธีเริ่มระบบปฏิบัติการ

ใช้งานได้ไหม พาร์ติชั่นสำหรับการบู๊ตสนใจเพียงบางส่วนของรูทซึ่งสามารถเก็บได้เหมือนกันสำหรับทุกคนหรือทั้งสองวิวัฒนาการร่วมกันและเข้ากันได้หรือไม่?

ฉันใช้ Raspian และตั้งใจที่จะมีระบบรูทหลายเวอร์ชันเพื่อให้ระบบทั้งหมดใช้ (ทีละตัว) ในการบูตเดียวกัน


โดยทั่วไปแล้วคุณต้องการสร้างธัมบ์ไดรฟ์ USB ที่สามารถบู๊ตได้ หรืออย่างอื่น?
JakeGould

1
ใช่แล้วใช่ว่าจะดีกว่า แต่ไม่ใช่สิ่งที่สามารถทำได้บน Pi สิ่งที่ฉันสามารถทำได้คือทำให้ SD ที่สามารถบู๊ตได้ซึ่งเป็นรูทพาร์ติชันจาก USB
Seph Reed

จากนั้นฉันก็สามารถสร้างรูตรุ่นต่าง ๆ มากมายที่ทำสิ่งต่าง ๆ ในขณะที่ทุกคนอยู่บนพื้นฐานเดียวกัน (Raspian ในกรณีนี้)
Seph Reed

เข้าใจแล้ว. หวังว่าคนอื่นจะสามารถตอบคำถามได้ สำหรับนรกของมันมันอาจจะมีประโยชน์ในการแก้ไขคำถามของคุณเพื่อระบุสิ่งที่ Raspberry Pi เข้ากันได้กับ Linux distro ที่คุณกำลังคิดจะใช้ หรือถ้าคุณเปิดรับแนวคิดให้เพิ่มสิ่งนั้นด้วย
JakeGould

1
บางที. ฉันหวังว่าสิ่งนี้จะมากหรือน้อยกว่าอิสระจากความวุ่นวายใด ๆ ฉันหวังว่าระบบการบู๊ตนั้นเป็นไปตามคำจำกัดความที่เป็นอิสระของระบบปฏิบัติการยกเว้นในกรณีที่เป็นการเริ่มต้นซึ่งอินเทอร์เน็ตชนิดนั้นบอกว่าเป็น แต่ไม่ชัดเจน
Seph Reed

คำตอบ:


1

ใช่สำหรับความรู้ของฉันมันเป็นไปได้อย่างสมบูรณ์!

สิ่งที่คุณต้องการทำคือคัดลอกพาร์ติชั่นรูทไปยัง USB stick จากนั้นเปลี่ยน/etc/fstabและ/boot/cmdline.txtเพื่อให้บูตจากไดรฟ์ภายนอกแทนพาร์ติชั่นที่สองในการ์ด SD

หากพบบทเรียน แต่น่าเสียดายที่มันไม่ใช่ภาษาอังกฤษดังนั้นฉันจะพยายามอธิบายขั้นตอนด้วยคำพูดของตัวเอง

  1. รีบูต Pi ด้วยไดรฟ์ภายนอกตัวเดียวเป็น USB stick (ด้วยวิธีนี้เราจะหลีกเลี่ยงการมีหมายเลขไดรฟ์ที่แตกต่างกันในการบู๊ตแต่ละครั้งเนื่องจาก ID ไดรฟ์ที่ไม่ซ้ำกันนั้นเป็นไปไม่ได้

  2. sudo blkidรับจำนวนไดรฟ์ผ่าน /dev/sda1ควรจะมีเพียงคนเดียวที่มีลักษณะเช่นนี้

  3. โดยใช้คำสั่งmountเราสามารถดูว่ามันได้รับการติดตั้งโดยอัตโนมัติ หากไม่มีอยู่ในรายการให้ดำเนินการในขั้นตอนถัดไป หากเป็นเช่นนั้นให้เรียกใช้sudo umount /dev/sda1(แก้ไขให้ถูกต้องสำหรับหมายเลขที่แตกต่างกันหากไม่เหมือนกัน) เพื่อเลิกเมานท์ USB

  4. ต่อไปเราต้องการรูปแบบแท่ง USB ext4ที่จะมีความถูกต้องของระบบไฟล์สำหรับพาร์ทิชันรากเดซึ่งเป็นอย่างยิ่ง sudo mkfs.ext4 /dev/sda1คุณสามารถทำได้โดยใช้คำสั่งนี้:

  5. หลังจากนี้เราต้อง (ติดตั้ง) ติด USB Stick บนตำแหน่งชั่วคราวเพื่อคัดลอกพาร์ติชั่นรูทจากการ์ด SD เราทำสิ่งนี้โดยการวิ่ง: sudo mount /dev/sda1 /mnt. (หากคำสั่งบ่นเกี่ยวกับ/mntไม่มีอยู่ให้สร้างโฟลเดอร์ที่มีชื่อนั้นโดยเรียกใช้: sudo mkdir /mntแล้วลองอีกครั้ง

  6. ตอนนี้มันถึงเวลาที่จะคัดลอกข้อมูลทั้งหมดจากพาร์ทิชันรากโดยสลับแรกที่จะไดเรกทอรีบนด้วย: cd /แล้วทำงานนี้ tar sudo tar cf - * --exclude /mnt/* | ( cd /mnt; sudo tar xfp -)คำสั่ง: มันอาจไม่ใช่โซลูชันที่กะทัดรัดที่สุด แต่ใช้ได้สำหรับฉัน โปรดทราบว่าอาจใช้เวลาสักครู่ขึ้นอยู่กับความเร็วของการ์ด SD และไดรฟ์ USB

  7. ต่อไปเราต้องเปลี่ยนที่มีไดรฟ์ที่จะติดตั้งอยู่บนการบูตเครื่องด้วยการวิ่ง/etc/fstab sudo nano /mnt/etc/fstab( ขอให้สังเกตว่านี้อยู่บน USB ติดตั้งแต่เราได้เพิ่ม/mnt. ) คุณต้องเปลี่ยนสายที่สอดคล้องกันจะทำให้พวกเขามีลักษณะเช่นนี้

/dev/mmcblk0p1 /boot vfat defaults 0 0 /dev/sda1 / ext4 defaults,noatime 0 0

  1. ในที่สุดเราจำเป็นต้องบอกพาร์ติชันสำหรับเริ่มระบบบนการ์ด SD เพื่อเริ่มระบบจากไดรฟ์ USB แทน sudo cp /boot/cmdline.txt /boot/cmdline.txt.saveแต่ก่อนมันอาจจะเป็นความคิดที่ดีที่จะทำให้การสำรองข้อมูลของไฟล์ที่เรากำลังจะเปลี่ยนตอนนี้ก่อนที่เรามุ่งมั่นในการทำสวิทช์โดยการทำงาน:

  2. วิ่งsudo nano /boot/cmdline.txtเพื่อเข้าสู่nanoการเปลี่ยนพารามิเตอร์การบู๊ตบนพาร์ติชั่นแรกของการ์ด SD โดยทั่วไปเราจำเป็นต้องเปลี่ยนรายการสำหรับพาร์ติชันรูทเป็นไดรฟ์ USB บทช่วยสอนนำเสนอสิ่งนี้เพื่อป้อน (1 บรรทัด):

    dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2

    คุณสามารถอ่านในสิ่งที่พารามิเตอร์เหล่านั้นหมายถึงที่นี่

    ตอนนี้บันทึกและออกnanoและในการรีบูตครั้งถัดไป Raspberry Pi ของคุณควรบูตจากแท่ง USB แต่แน่นอนว่าต้องใช้การ์ด SD ตามที่คุณได้กล่าวไปแล้ว

ตราบใดที่ไดรฟ์ USB เป็นไดรฟ์เพียงตัวเดียว (นอกเหนือจากการ์ด SD) ในการบูทเครื่องก็ควรใช้งานได้ คุณต้องมีมันค่อนข้างแบบไดนามิกและผมไม่เห็นทางอื่น ๆ /dev/diskXหมายถึงไดรฟ์อื่นกว่าการใช้

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

/bootพาร์ทิชันสวยขั้นพื้นฐานและสายที่ผมกล่าวใน 9 เป็นพื้นทั้งหมดมันไม่ มันแค่ต้องส่งมันออกไปยังพาร์ติชั่นที่ถูกต้องด้วยระบบไฟล์ที่ถูกต้องและมันควรจะทำงานได้

ฉันหวังว่านี่จะเป็นประโยชน์กับคุณ


สำหรับคนที่พูดภาษาเยอรมันผมจะออกจากการเชื่อมโยงแหล่งที่มาที่นี่: แหล่งที่มา


1
ใช่ทั้งหมดนี้มีประโยชน์ คุณสามารถเพิ่มลิงค์นี้raspberrypi.org/forums/viewtopic.php?f=29&t=44177ในคำตอบของคุณสำหรับผู้ค้นหาในอนาคต ฉันยังลังเลอยู่เล็กน้อยเกี่ยวกับว่าการบูทนั้นมีการพึ่งพาอื่น ๆ บนรูทหรือไม่ แต่ฉันสามารถทำการทดสอบได้และตรวจสอบโดยการยืนยันในตอนท้ายของวัน ขอขอบคุณ!
Seph Reed

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