วิธีการสร้างระบบสดบนไดรฟ์ usb ที่มีการเปลี่ยนแปลงถาวรบนดิสก์ / hdd


10

ฉันพยายามติดตั้ง Ubuntu สดบนไดรฟ์ USB ที่มีการเปลี่ยนแปลงถาวร อย่างไรก็ตามฉันต้องการที่จะเขียนการเปลี่ยนแปลงเป็น HDD แทน USB ด้วยเหตุผลต่างๆ (ประสิทธิภาพพื้นที่)

ฉันพบว่าการเปลี่ยนแปลงได้รับการจัดการภายในไฟล์ที่มีระบบไฟล์ ext3 ที่ติดตั้งโดยระบบ (casper-rw) แต่ดูเหมือนว่าจะตรวจพบอัตโนมัติในแฟลชไดรฟ์เมื่อเริ่มต้น

ฉันจะสร้างไฟล์ casper-rw ใหม่บน HDD และเปลี่ยนเส้นทางระบบ Ubuntu live บนไดรฟ์ USB เป็น HDD ได้อย่างไร

แก้ไข 2015-07-14:

ขอบคุณสำหรับคำตอบ พวกเขาน่าสนใจมากและช่วยให้มากในการทำความเข้าใจกลไกของ "คุณสมบัติระบบบันทึกถาวร" ที่ดีขึ้นและแสดงวิธีการที่ดีในการแก้ปัญหา น่าเสียดายที่ฉันพยายามเอาชนะข้อ จำกัด บางอย่างที่ฉันจำได้เมื่อถามคำถามเกี่ยวกับการเข้าถึงระบบโฮสต์และ / หรือการเข้าถึงฮาร์ดแวร์ใหม่ที่ฉันไม่ได้ระบุอย่างชัดเจน (ขออภัยสำหรับสิ่งนั้น)

หากการแบ่งพาร์ติชันเป็นตัวเลือกฉันคิดว่าคำตอบที่ระบุไว้ที่นี่ดีมากเนื่องจากคุณเพียงแค่ต้องสร้างพาร์ติชันใหม่ติดป้ายชื่อ casper-rw และคุณทำเสร็จแล้ว (ยอดเยี่ยมมากฉันทดสอบแล้ว)

หากการซื้อฮาร์ดแวร์ใหม่เป็นตัวเลือกแฟลชไดรฟ์ usb3.0 (MLC หรือ SLC) HDD แบบพกพา eSATA และตัวเลือกอื่น ๆ อยู่ในใจที่มีประสิทธิภาพที่ดีกว่าแฟลชไดรฟ์ USB2.0 ทั่วไป

ดังนั้นฉันสงสัยว่ามีวิธีการเพียงแค่สร้างไฟล์ casper-rw แทนพาร์ติชันบนดิสก์ที่มีการ จำกัด การเข้าถึง (หรือคัดลอก / ลิงค์หนึ่งในแฟลชไดรฟ์)

วิธีนี้จะง่ายเพียงแค่คัดลอกไฟล์ casper-rw กลับไปยังแฟลชไดรฟ์และใช้จากที่นั่นอีกครั้งหรือย้ายไปยังคอมพิวเตอร์เครื่องอื่นให้ความยืดหยุ่นที่ดีเยี่ยมการเปลี่ยนแปลงที่น้อยที่สุดของ HDD และการถอดการเปลี่ยนแปลงที่ทำได้ง่าย ระบบ.


ไม่แน่ใจว่านี่เป็นตัวเลือก แต่ถ้าคุณต้องการบันทึกข้อมูลคุณสามารถเมาต์พาร์ติชั่น HDD ที่ใดที่หนึ่งในแผนผังระบบไฟล์สดของคุณ ... ด้วยวิธีนี้คุณจะมีเฉพาะโฟลเดอร์ที่อยู่บนดิสก์
ผู้บัญชาการไบต์

@ ByteCommander ขอบคุณสำหรับความคิดเห็นของคุณ น่าเสียดายที่การแบ่ง HDD ไม่ใช่ตัวเลือกสำหรับฉันและฉันต้องการให้ทุกอย่างกะทัดรัดที่สุดเท่าที่จะเป็นไปได้ดังนั้นฉันจึงสามารถลบข้อมูลได้อย่างรวดเร็วและง่ายดายดังนั้นไฟล์เดียวบน HDD ก็เหมาะอย่างยิ่ง
LS

มันควรจะเป็นไปได้ที่จะเมานต์ไฟล์ที่มีอิมเมจของระบบไฟล์ (เช่น. iso หรือ .img, อาจจะมากกว่า) น่าเสียดายที่ฉันไม่เคยทำเช่นนี้และไม่สามารถบอกคุณได้ว่าจะทำอย่างไร ...
ผู้บัญชาการ Byte

คุณรู้ได้อย่างไรว่านี่ไม่ทำงาน ไฟล์ของคุณชื่อ casper-rw ? อยู่ที่รากของพาร์ติชันของคุณหรือไม่ ฉันทำเช่นนั้น (โดยใช้การคงอยู่บน HDD ด้วยพาร์ติชันที่มีป้ายกำกับว่า casper-rw แทน) และฉันไม่จำขั้นตอนที่จำเป็นเพิ่มเติมได้
solsTiCe

การแก้ไขล่าสุดของคุณทำให้คำถามของคุณเฉพาะเจาะจงมากเกินไปที่จะใช้งานอย่างกว้างขวาง (ซึ่งคำตอบของฉันคือ ... ) มันเป็นไปไม่ได้ แต่จะหมายถึงการสร้างสคริปต์และกฎของ udev ให้เป็น [unmount] - [ซิงโครไนซ์กับ HDD] - [mount] และ [ซิงโครไนซ์กับ HDD] โดยไม่ต้องต่อเชื่อม แต่นั่นเป็นงานตันและไม่เหมาะสำหรับไซต์ถามตอบเช่นนี้
Fabby

คำตอบ:


4

คุณสามารถวางระบบไฟล์ที่เขียนได้ (ในไฟล์ casper-rw) สำหรับสื่อสดลงบนฮาร์ดดิสก์ ข้อ จำกัด คือไฟล์ casper-rw ต้องไปที่พาร์ติชัน FAT เครื่องใหม่กว่า (UEFI) ทุกคนมีพาร์ติชัน FAT EFI แต่โดยทั่วไปแล้วมันเล็กเกินไปที่จะเก็บไฟล์ casper-rw 1G-4G ในพาร์ติชัน FAT ที่ใหญ่พออีกคุณสามารถสร้างไดเรคทอรีซึ่งแต่ละไฟล์จะมีไฟล์ casper-rw สำหรับสื่อสดที่แตกต่างกัน สมมติว่า sda11 คือ 10G และมีระบบไฟล์ 10G FAT ติดตั้งที่ / mnt / sda11 ซึ่งมีไดเรกทอรี / A, / B, / C, / D และ / E สมมติว่าเราจะใช้ / A สำหรับสื่อถาวรของเราวางแคสเปอร์ rw ไว้ที่นั่น

cd /mnt/sda11/A
dd if=/dev/zero of=casper-rw bs=1M  count=4096
mkfs.ext4 -F -O^has_journal -L casper-rw casper-rw

นำสื่อสดของคุณสร้างขึ้นด้วยความคงทนและแก้ไขไฟล์ /boot/grub/grub.cfg และไฟล์ /syslinux/txt.cfg เพิ่มหลังจากคำว่า "ถาวร"

"persistent-path=/A"

/boot/grub/grub.cfg ...

menuentry "Try Ubuntu without installing" {
    set gfxpayload=keep
    linux   /casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- cdrom-detect/try-usb=true noprompt persistent persistent-path=/A
    initrd  /casper/initrd.lz
}

/syslinux/txt.cfg

default live
label live
menu label ^Try Ubuntu without installing
kernel /casper/vmlinuz.efi
append noprompt cdrom-detect/try-usb=true persistent persistent-path=/A file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ---
label live-install
...

แค่นั้นแหละ. คุณไม่จำเป็นต้องเปลี่ยนชื่อ / ลบไฟล์ casper-rw บนสื่อ USB


หากมีที่ว่างในสื่อ USB คุณสามารถคัดลอก casper-rw ของฮาร์ดดิสก์กลับไปยัง USB และทำการเปลี่ยนแปลงกับคุณ


persistent-path ไม่อนุญาตให้มีการอ้างอิงดิสก์อย่างชัดเจนดังนั้นจึงควรไม่ซ้ำกับพาร์ติชัน FAT ทั้งหมด ทดสอบกับพาร์ติชั่น 1 หรือ 2 FAT (หนึ่งพาร์ติชั่นคือ EFI) จะไม่ทำงานกับระบบไฟล์ ext2 หรือ ntfs แทน FAT หากคุณเพิ่มคำว่า "toram" ในบรรทัดเดียวกับ "ถาวร" ระบบไฟล์ที่บีบอัดของคุณบน USB ช้าจะถูกคัดลอกไปที่ ram และให้ประสิทธิภาพที่ดีขึ้นมากอย่างไรก็ตามดูเหมือนว่าจะมีปัญหาการปิดระบบด้วยพาร์ติชัน FAT ไม่ได้ถูก unmount อย่างหมดจด (ซึ่งดูเหมือนจะไม่ทำให้เกิดปัญหาใด ๆ แต่ ... )


ขอบคุณ ทำให้สิ่งต่าง ๆ ชัดเจนขึ้น ฉันคิดว่าในสถานะการบูต ntfs ไม่สามารถรับรู้ได้ (ใช่ไหม) ทำให้มันเป็นไปไม่ได้ที่จะมี casper-rw บนพาร์ติชัน ntfs ดังนั้นฉันคิดว่าฉันจะไปกับพาร์ทิชัน ext4 ที่มีป้ายชื่อ casper-rw หรือลองบางอย่าง "toram" หรือ ramdrive
LS

คุณจะแก้ไขgrub.cfgหรือsyslinux.txtกำหนดว่าคุณจะสามารถเมานต์สื่อสดอ่านได้อย่างเดียวเนื่องจากเป็น iso
solsTiCe

ข้างต้นใช้ ISO เพื่อสร้าง USB สื่อสดซึ่งไฟล์สามารถเขียนได้ การบูต ISO โดยตรง (เช่นฮาร์ดดิสก์) ใช้ด้วงแยกทั้งหมด (อันหนึ่งในฮาร์ดดิสก์) ซึ่งไฟล์สามารถแก้ไขได้ - กรณีนี้ไม่ได้ใช้กลไกการบูตจาก ISO เลย
ubfan1

7

ง่ายมากถ้าคุณใช้การตั้งค่าต่อไปนี้:

  1. ติดตั้ง Ubuntu บนแท่ง USB SLC (ควรใช้ USB 3.0 หากฮาร์ดแวร์ของคุณรองรับ) โดยไม่ต้องใช้แคสเปอร์ (เพียงแค่ติดตั้งตามปกติให้ใช้ก้าน USB เป็น SSD)

    ทำไม? SLCs มีราคาแพงกว่าMLCสองเท่าแต่เร็วกว่าถึง 4 เท่าและนานกว่า 8 *! ดังนั้นพวกเขาจึงเป็น SSD ขนาดเล็กที่ติดจริง!

  2. ปรับระบบให้เหมาะสมและปฏิบัติต่อแท่ง USB เป็น SSD ขนาดเล็กดังนั้น:

    ในการ/etc/sysctl.confเพิ่มของคุณ:

    # Fabby: change the "swappiness" to 10 to prevent swapping as much as possible
    # to not wear out the USB stick as the Ubuntu default is optimized for a server.
    # 10 to balance with vfs_cache_pressure
    vm.swappiness = 10
    
    # Fabby: Lower vfs_cache_pressure to 75% 
    # (once cached, probably not immediately needed any more)
    #
    # This percentage value controls the tendency of the kernel to reclaim
    # the memory which is used for caching of directory and inode objects.
    #
    # At the default value of vfs_cache_pressure=100 the kernel will attempt to
    # reclaim dentries and inodes at a "fair" rate with respect to pagecache and
    # swapcache reclaim.  Decreasing vfs_cache_pressure causes the kernel to prefer
    # to retain dentry and inode caches.
    vm.vfs_cache_pressure = 75
    
    # Fabby: Good to improve sequential reads (stop stuttering in movie play)
    # Can also be implemented per disk using udev rules
    vm.max-readahead=2048
    vm.min-readahead=1024
    

    ในการ/etc/fstabเพิ่มพารามิเตอร์ตัวหนาให้กับสาย USB สำหรับบูตของคุณ (อาจเป็นsdcหรือsddด้านล่างเป็นตัวอย่างใช้ UID ถ้าเป็นไปได้)

    /dev/sdc / ext4 defaults,noatime,discard,errors=remount-ro 0 1

  3. สร้างผู้ใช้ 2 คน: ผู้ใช้ผู้ดูแลระบบซึ่งมีโฮมไดเร็กตอรี่ของ USB stick แต่มีไฟล์น้อยมากและผู้ใช้ปกติที่จะมีโฮมไดเร็กตอรี่บน HDD

  4. ตอนนี้ใส่ HDD และเพิ่มข้อมูล HDD ที่จำเป็นในfstabการติดตั้ง HDD อัตโนมัติและเพิ่มพารามิเตอร์ต่อไปนี้:

    nobootwait,nofail

    เพื่อให้สามารถบูทได้แม้ในกรณีที่ไม่มี HDD (ในกรณีนี้จะมีเพียงผู้ใช้ที่เป็นผู้ดูแลระบบเท่านั้นที่สามารถเข้าถึงได้ไม่ใช่ผู้ใช้ปกติ)

  5. ตอนนี้เข้าสู่ระบบในฐานะผู้ใช้ผู้ดูแลระบบและย้ายโฮมไดเรกทอรีสำหรับผู้ใช้ปกติจาก USB stick ไปที่ HDD:

cp --preserve=all /home/NormalUser/* /media/ExternalHDD/NormalUser

หากทั้งหมดเป็นปกติ:

rm --recursive --force /home/NormalUser/*
cd /home
ln --symbolic /media/ExternalHDD/NormalUser

ทำ! :-)

สำหรับบันทึก: ฉันมี 16GB USB 2.0 MLC stick แบบนี้ (มากกว่านั้นเพียงพอสำหรับกรณีการใช้งานของฉันและไม่แพงเกินไปและมีอายุประมาณ 5 ปีแล้วและยังใช้งานได้!)

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