Cara membuat sistem live di usb-drive dengan perubahan terus-menerus pada disk / hdd

10

Saya mencoba untuk menginstal Ubuntu langsung pada USB-drive dengan perubahan terus-menerus. Namun saya ingin menulis perubahan ke HDD daripada USB karena berbagai alasan (Kinerja, Space).

Saya menemukan, bahwa perubahan ditangani dalam file dengan sistem file ext3 yang dipasang oleh sistem (casper-rw). Tetapi tampaknya terdeteksi secara otomatis pada flash-drive saat startup.

Bagaimana saya bisa membuat file casper-rw baru pada HDD dan mengubah rute sistem live Ubuntu pada USB-drive ke HDD?

sunting 2015-07-14:

Terima kasih atas jawabannya sejauh ini. Mereka sangat menarik dan banyak membantu untuk memahami mekanisme "live system persistent save feature" dengan lebih baik, dan menunjukkan pendekatan yang baik untuk menyelesaikan masalah. Sayangnya saya mencoba untuk mengatasi beberapa keterbatasan yang ada dalam pikiran saya ketika mengajukan pertanyaan mengenai akses ke sistem host dan / atau akses ke perangkat keras baru saya tidak menyatakan dengan jelas (maaf untuk itu).

Jika mempartisi adalah suatu pilihan, saya pikir jawaban yang dinyatakan di sini sangat bagus, karena hanya mengharuskan Anda membuat partisi baru, beri label casper-rw dan Anda selesai (kerja bagus, saya mengujinya).

Jika membeli perangkat keras baru adalah sebuah pilihan, usb3.0 Flash-Drive (MLC atau SLC), HDD portabel, eSATA, dan opsi lain muncul dalam pikiran yang memiliki kinerja yang jauh lebih baik daripada flash-drive USB2.0 rata-rata.

Jadi saya bertanya-tanya apakah ada cara untuk hanya membuat file casper-rw daripada partisi pada disk dengan akses terbatas (atau menyalin / menghubungkan yang ada di flash-drive).

Dengan cara ini akan mudah untuk hanya menyalin file casper-rw kembali ke flash-drive dan menggunakannya dari sana lagi atau memindahkannya ke komputer lain, memberikan fleksibilitas besar, perubahan minimal pada HDD dan penghapusan mudah dilakukan perubahan untuk sistem.

LS
sumber
Tidak yakin apakah ini pilihan, tetapi jika Anda hanya perlu menyimpan data, Anda juga bisa memasang partisi HDD di suatu tempat ke bagan sistem file langsung Anda ... Dengan begitu Anda hanya memiliki folder tertentu yang terletak di disk.
Byte Commander
@ByteCommander terima kasih atas komentar Anda. Sayangnya mempartisi HDD bukanlah pilihan bagi saya dan saya ingin semuanya menjadi sekompak mungkin sehingga saya dapat menghapus data dengan cepat dan sederhana, sehingga satu file pada HDD akan ideal.
LS
Seharusnya dimungkinkan untuk me-mount file yang berisi gambar sistem file (misalnya .iso atau .img, mungkin lebih) juga. Sayangnya saya tidak pernah melakukan ini dan tidak bisa memberi tahu Anda bagaimana cara melakukannya ...
Byte Commander
Bagaimana Anda tahu ini tidak berfungsi? Apakah file Anda bernama casper-rw ? Apakah itu di akar partisi Anda ? Saya telah melakukan itu (menggunakan ketekunan pada HDD dengan partisi berlabel casper-rw sebagai gantinya) dan saya tidak ingat langkah tambahan yang diperlukan.
solsTiCe
Suntingan terakhir Anda menjadikan pertanyaan Anda terlalu spesifik untuk digunakan secara luas (yang mana jawaban saya adalah ...) Itu bukan tidak mungkin, tetapi akan berarti membuat skrip dan aturan udev ke [unmount] - [sinkronkan ke HDD] - [pasang] pada penyisipan dan [sinkronkan ke HDD] di unmount, tapi itu pekerjaan yang berat dan tidak cocok untuk situs T&J seperti ini.
Fabby

Jawaban:

4

Anda dapat dengan mudah menempatkan sistem file yang dapat ditulisi (dalam file casper-rw) untuk media langsung ke hard disk. Batasannya adalah file casper-rw harus masuk pada partisi FAT. Mesin yang lebih baru (UEFI) semuanya memiliki partisi FAT EFI, tetapi biasanya terlalu kecil untuk menyimpan file casper-rw 1G-4G. Pada partisi FAT lain yang cukup besar, Anda dapat membuat direktori, masing-masing memegang file casper-rw untuk media live yang mungkin berbeda. Misalkan sda11 adalah 10G dan memiliki sistem file FAT 10G, dipasang di / mnt / sda11, di mana terdapat direktori / A, / B, / C, / D, dan / E. Anggaplah kita akan menggunakan / A untuk media kita yang persisten, menempatkan casper-rw di sana.

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

Ambil media langsung Anda yang dibuat dengan kegigihan, dan edit file /boot/grub/grub.cfg dan file /syslinux/txt.cfg, tambahkan setelah kata "persistent"

"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
...

Itu dia. Anda bahkan tidak perlu mengganti nama / menghapus file casper-rw pada media USB.


Jika ada ruang pada media USB, Anda bahkan dapat menyalin casper-rw hard disk kembali ke USB, dan membawa perubahan Anda.


Persistent-path tidak mengizinkan referensi disk eksplisit, jadi harus unik di semua partisi FAT. Diuji dengan 1 atau 2 partisi FAT (satu menjadi partisi EFI). Tidak akan bekerja pada sistem file ext2 atau ntfs sebagai ganti FAT. Jika Anda juga menambahkan kata "toram" pada baris yang sama dengan "persistent", sistem file yang dikompresi pada USB lambat akan disalin ke ram dan memberikan kinerja yang jauh lebih baik, namun, tampaknya ada masalah penutupan, dengan partisi FAT tidak dilepas secara bersih (yang tampaknya tidak menyebabkan masalah tetapi ...)

ubfan1
sumber
Terima kasih. Itu membuat segalanya lebih jelas. Saya berasumsi bahwa dalam keadaan boot ntfs tidak dapat dikenali (kan?) Sehingga tidak memungkinkan untuk memiliki casper-rw pada partisi ntfs. Jadi saya pikir saya akan memilih partisi ext4 berlabel casper-rw atau mencoba "toram" atau ramdrive.
LS
Bagaimana Anda mengubah grub.cfgatau syslinux.txtmengingat bahwa Anda hanya bisa memasang media langsung baca hanya karena iso ??
solsTiCe
Di atas digunakan ISO untuk membuat live-media USB, di mana file dapat ditulisi. Mem-boot ISO secara langsung (misalnya dari hard disk) menggunakan grub yang sepenuhnya terpisah (yang ada di hard disk) yang file-filenya dapat diedit - hal ini sama sekali tidak menggunakan mekanisme boot dari ISO.
ubfan1
7

Itu sangat mudah jika Anda menggunakan pengaturan berikut:

  1. Instal Ubuntu pada stik USB SLC (USB 3.0 lebih disukai jika perangkat keras Anda mendukungnya) tanpa benda kasper (hanya instalasi normal, memperlakukan stik USB sebagai SSD.)

    Mengapa? SLC dua kali lebih mahal dari MLC tetapi mereka 4 kali lebih cepat dan bertahan 8 * lebih lama! Jadi mereka benar-benar SSD kecil pada tongkat!

  2. Optimalkan sistem dan perlakukan stik USB sebagai SSD kecil, jadi:

    Di /etc/sysctl.confadd Anda :

    # 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
    

    Dalam Anda /etc/fstabmenambahkan paramaters tebal ke garis USB boot Anda. (Mungkin sdcatau sdd. Di bawah ini adalah contoh, gunakan UID jika mungkin)

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

  3. buat 2 pengguna: pengguna admin yang memiliki direktori home pada stik USB tetapi memiliki file yang sangat sedikit dan pengguna normal yang akan memiliki direktori home pada HDD.

  4. Baru sekarang masukkan HDD dan tambahkan info HDD yang diperlukan ke Anda fstabuntuk memasang HDD secara otomatis dan menambahkan parameter berikut:

    nobootwait,nofail

    untuk memungkinkan boot bahkan ketika HDD tidak ada (Jika itu masalahnya, hanya pengguna admin yang akan memiliki akses, bukan pengguna normal)

  5. Sekarang masuk sebagai pengguna admin dan pindahkan direktori home untuk pengguna normal dari stik USB ke HDD:

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

Jika semuanya baik-baik saja:

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

Selesai! :-)

Sebagai catatan: Saya memiliki 16GB USB 2.0 MLC stick seperti ini (lebih dari cukup untuk kasus penggunaan saya dan tidak terlalu mahal dan sudah sekitar 5 tahun sekarang dan masih berjalan!)

Fabby
sumber