Сделанный! :-)

Сделанный! :-)

Я пытался установить Ubuntu live на USB-накопитель с сохранением изменений. Однако по разным причинам (производительность, место) мне хотелось записать изменения на HDD вместо USB.

Я обнаружил, что изменения обрабатываются в файле с файловой системой ext3, которая монтируется системой (casper-rw). Но, похоже, она автоматически определяется на флэш-накопителе при запуске.

Как создать новый файл casper-rw на жестком диске и перенаправить систему Ubuntu Live с USB-накопителя на жесткий диск?

редактировать 2015-07-14:

Спасибо за ответы. Они очень интересны и помогают лучше понять механику "функции постоянного сохранения в живой системе" и показывают хорошие подходы к решению проблемы. К сожалению, я пытался преодолеть некоторые ограничения, которые имел в виду, когда задавал вопрос относительно доступа к хост-системе и/или доступа к новому оборудованию, о которых я не указал четко (извините за это).

Если разделение является вариантом, я думаю, ответ был указанздесьочень хорош, так как для этого требуется только создать новый раздел, назвать его casper-rw и все готово (работает отлично, я проверял).

Если покупка нового оборудования является вариантом, на ум приходят флэш-накопители USB3.0 (MLC или SLC), портативные жесткие диски, eSATA и другие варианты, которые имеют гораздо лучшую производительность, чем средний флэш-накопитель USB2.0.

Поэтому мне стало интересно, есть ли способ просто создать файл casper-rw вместо раздела на диске с ограниченным доступом (или скопировать/связать его с флэш-накопителем).

Таким образом, можно будет легко скопировать файл casper-rw обратно на флэш-накопитель и использовать его оттуда снова или перенести на другой компьютер, что обеспечивает большую гибкость, минимальные изменения на жестком диске и простое удаление изменений, внесенных в систему.

решение1

Это очень просто, если использовать следующую настройку:

  1. Установите Ubuntu наUSB-накопитель SLC(Предпочтительно USB 3.0, если ваше оборудование его поддерживает) без всяких касперовских штук (просто обычная установка, рассматривающая USB-накопитель как SSD).

    Почему?SLC в два раза дороже, чем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-накопителе, но очень мало файлов, и обычного пользователя, которыйбудетего домашний каталог на жестком диске.

  4. Только сейчасвставьте жесткий диск и добавьте необходимую информацию о жестком диске fstabдля автоматического монтирования жесткого диска, а также добавьте следующие параметры:

    nobootwait,nofail

    разрешить загрузку даже при отсутствии жесткого диска (в этом случае доступ будет только у администратора, а не у обычного пользователя)

  5. Теперь войдите в систему как администратор и переместите домашний каталог обычного пользователя с USB-накопителя на жесткий диск:

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

Если все в порядке:

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

Сделанный! :-)

Для справки: у меня есть 16 ГБ USB 2.0 MLC-флешка, как эта (более чем достаточно для моего случая, и не слишком дорогая, и ей уже около 5 лет, и она все еще работает!)

решение2

Вы можете легко поместить записываемую файловую систему (в файле casper-rw) для живого носителя на жесткий диск. Ограничением является то, что файл casper-rw должен находиться на разделе FAT. Все более новые машины (UEFI) имеют раздел FAT EFI, но он обычно слишком мал для хранения файла casper-rw размером 1–4 ГБ. На другом достаточно большом разделе FAT вы можете создать каталоги, каждый из которых будет содержать файл casper-rw для различных живых носителей. Предположим, что sda11 имеет размер 10 ГБ и имеет файловую систему FAT размером 10 ГБ, смонтированную в /mnt/sda11, на которой есть каталоги /A , /B , /C , /D и /E. Предположим, что мы будем использовать /A для нашего постоянного носителя, поместив туда casper-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

Возьмите ваш живой носитель, созданный с помощью persistence, и отредактируйте файл /boot/grub/grub.cfg и файл /syslinux/txt.cfg, добавив после слова «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
...

Вот и все. Вам даже не нужно переименовывать/удалять файл casper-rw на USB-носителе.


Если на USB-носителе есть место, вы даже можете скопировать файл casper-rw с жесткого диска обратно на USB-накопитель и забрать изменения с собой.


Permanent-path не допускает никаких явных ссылок на диски, поэтому должен быть уникальным для всех разделов FAT. Протестировано с 1 или 2 разделами FAT (один из которых является разделом EFI). Не будет работать на файловых системах ext2 или ntfs вместо FAT. Если вы также добавите слово "toram" в ту же строку, что и "persistent", ваша сжатая файловая система на медленном USB будет скопирована в оперативную память и обеспечит гораздо лучшую производительность, однако, похоже, есть проблема с выключением, так как раздел FAT не будет чисто размонтирован (что, похоже, не вызывает никаких проблем, но...)

Связанный контент