Как создать живую систему на usb-диске с постоянными изменениями на диске / жестком диске

10

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

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

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

изменить 2015-07-14:

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

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

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

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

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

LS
источник
Не уверен, что это вариант, но если вам нужно только сохранить данные, вы также можете просто смонтировать раздел жесткого диска где-нибудь в вашем дереве файловой системы реального времени ... Таким образом, у вас есть только определенные папки, расположенные на диске.
Byte Commander
@ByteCommander спасибо за ваш комментарий. К сожалению, разделение жесткого диска для меня не вариант, и я бы хотел, чтобы все было максимально компактным, чтобы я мог быстро и просто удалить данные, поэтому один файл на жестком диске был бы идеальным вариантом.
LS
Должна быть возможность смонтировать файл, содержащий образ файловой системы (например, .iso или .img, возможно, больше). К сожалению, я никогда не делал этого и не могу сказать вам, как это сделать ...
Byte Commander
Откуда ты знаешь, что это не работает? Ваш файл называется casper-rw ? Это в корне вашего раздела ? Я сделал это (используя постоянство на жестком диске с разделом, помеченным как casper-rw), и я не вспоминаю никаких дополнительных необходимых шагов.
SolsTiCe
Ваше последнее изменение делает ваш вопрос слишком конкретным, чтобы его можно было широко использовать (на что я отвечаю ...) Это не невозможно, но это будет означать создание сценариев и правил udev для [размонтирования] - [синхронизации с HDD] - [монтирования] при вставке и [синхронизировать с HDD] при размонтировании, но это тонна работы и не очень подходит для сайта вопросов и ответов, подобного этому.
Fabby

Ответы:

4

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

Возьмите живые медиафайлы, созданные с сохранением, и отредактируйте файл /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-накопитель и забрать свои изменения с собой.


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

ubfan1
источник
Спасибо. Это делает вещи намного понятнее. Я предполагаю, что в состоянии загрузки ntfs не может быть распознан (верно?), Что делает невозможным использование casper-rw на разделе ntfs. Так что я думаю, что я пойду с разделом ext4, помеченным как casper-rw, или попробую кое-что из «торама» или ramdrive.
LS
Как вы изменили grub.cfgили с syslinux.txtучетом того, что вы можете монтировать только живые медиаданные только для чтения, поскольку это iso ??
solsTiCe
Выше использовался ISO для создания USB-носителя с живыми носителями, на который можно записывать файлы. Прямая загрузка ISO (например, с жесткого диска) использует совершенно отдельный grub (тот, что на жестком диске), файлы которого можно редактировать - в этом случае вообще не используются механизмы загрузки из ISO.
ubfan1
7

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

  1. Установите Ubuntu на SLC USB-накопитель (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

Выполнено! :-)

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

Fabby
источник