Jak stworzyć system na żywo na dysku USB z ciągłymi zmianami na dysku / dysku twardym

10

Próbowałem zainstalować Ubuntu na żywo na dysku USB z ciągłymi zmianami. Jednak z różnych powodów chciałem zapisać zmiany na dysku twardym zamiast dysku USB (wydajność, przestrzeń).

Dowiedziałem się, że zmiany są obsługiwane w pliku z systemem plików ext3, który jest montowany przez system (casper-rw). Ale wydaje się, że jest automatycznie wykrywany na dysku flash podczas uruchamiania.

Jak mogę utworzyć nowy plik Casper-RW na HDD i przekierować system Live Ubuntu z napędu USB na HDD?

edycja 2015-07-14:

Dziękuję za dotychczasowe odpowiedzi. Są bardzo interesujące i pomagają lepiej zrozumieć mechanikę „funkcji trwałego zapisywania w systemie na żywo” i wykazują dobre podejście do rozwiązania problemu. Niestety starałem się przezwyciężyć pewne ograniczenia, które miałem na myśli, zadając pytanie dotyczące dostępu do systemu hosta i / lub dostępu do nowego sprzętu, którego nie podałem wyraźnie (przepraszam za to).

Jeśli partycjonowanie jest opcją, myślę, że podana tutaj odpowiedź jest bardzo dobra, ponieważ wymaga tylko utworzenia nowej partycji, oznaczenia jej jako casper-rw i gotowe - praca jest świetna, przetestowałem ją.

Jeśli opcją jest zakup nowego sprzętu, przychodzi na myśl dysk flash USB (MLC lub SLC), przenośne dyski twarde, eSATA i inne opcje, które mają znacznie lepszą wydajność niż przeciętny dysk flash USB2.0.

Zastanawiałem się więc, czy istnieje sposób, aby po prostu utworzyć plik casper-rw zamiast partycji na dysku z ograniczonym dostępem (lub skopiować / połączyć ten z dysku flash).

W ten sposób łatwo byłoby po prostu skopiować plik casper-rw z powrotem na dysk flash i użyć go stamtąd lub przenieść na inny komputer, zapewniając dużą elastyczność, minimalne zmiany na dysku twardym i łatwe usuwanie zmian wprowadzonych w system.

LS
źródło
Nie jestem pewien, czy jest to opcja, ale jeśli potrzebujesz tylko zapisać dane, możesz również po prostu zamontować partycję dysku twardego gdzieś w drzewie systemu plików na żywo ... W ten sposób masz tylko określone foldery na dysku.
Bajt Dowódca
@ByteCommander dziękuję za komentarz. Niestety partycjonowanie dysku twardego nie jest dla mnie opcją i chciałbym, aby wszystko było tak kompaktowe, jak to możliwe, dzięki czemu mogę szybko i łatwo usunąć dane, więc idealny byłby pojedynczy plik na dysku twardym.
LS
Powinno być także możliwe zamontowanie pliku zawierającego obraz systemu plików (np. .Iso lub .img, prawdopodobnie więcej). Niestety nigdy tego nie zrobiłem i nie mogę powiedzieć, jak to zrobić ...
Bajt Dowódca
Skąd wiesz, że to nie działa? Czy twój plik ma nazwę casper-rw ? Czy jest to katalog główny twojej partycji ? Zrobiłem to (zamiast tego użyłem trwałości na dysku twardym z partycją oznaczoną jako casper-rw) i nie przypominam sobie żadnych dodatkowych niezbędnych kroków.
solsTiCe
Twoja ostatnia edycja sprawia, że ​​twoje pytanie jest zbyt szczegółowe, aby mogło być szeroko stosowane (co moja odpowiedź brzmi ...) Nie jest to niemożliwe, ale oznaczałoby tworzenie skryptów i reguł udev w celu [odmontowania] - [synchronizacji z dyskiem twardym] - [zamontowania] po wstawieniu i [zsynchronizuj z dyskiem twardym] po odmontowaniu, ale to mnóstwo pracy i tak naprawdę nie nadaje się do takiej strony z pytaniami i odpowiedziami jak ta.
Fabby

Odpowiedzi:

4

Możesz łatwo umieścić zapisywalny system plików (w pliku casper-rw) nośnika na żywo na dysku twardym. Ograniczeniem jest to, że plik casper-rw musi przejść na partycję FAT. Wszystkie nowsze maszyny (UEFI) mają partycję FAT EFI, ale zwykle jest ona zbyt mała, aby pomieścić plik casper-rw 1G-4G. Na innej wystarczająco dużej partycji FAT możesz tworzyć katalogi, z których każdy zawiera plik casper-rw dla możliwie różnych mediów na żywo. Załóżmy, że sda11 to 10G i ma system plików FAT 10G, zamontowany w / mnt / sda11, w którym znajdują się katalogi / A, / B, / C, / D i / E. Załóżmy, że użyjemy / A dla naszych trwałych mediów, umieszczając tam 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

Weź swoje media na żywo utworzone z uporem i edytuj plik /boot/grub/grub.cfg i plik /syslinux/txt.cfg, dodając po słowie „trwałe”

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

Otóż ​​to. Nie musisz nawet zmieniać nazwy / usuwać pliku casper-rw z nośnika USB.


Jeśli na nośniku USB jest miejsce, możesz nawet skopiować casper-rw dysku twardego z powrotem na USB i zabrać ze sobą zmiany.


Trwała ścieżka nie zezwala na żadne jawne odwołania do dysku, dlatego powinna być unikalna dla wszystkich partycji FAT. Testowany z 1 lub 2 partycjami FAT (jedna to partycja EFI). Nie będzie działać na systemie plików ext2 lub NTFS zamiast FAT. Jeśli dodasz również słowo „toram” w tym samym wierszu, co „trwałe”, skompresowany system plików na wolnym USB zostanie skopiowany do pamięci RAM i zapewni znacznie lepszą wydajność, jednak wydaje się, że występuje problem z zamykaniem partycji FAT nie jest całkowicie odmontowany (co nie wydaje się powodować żadnych problemów, ale ...)

ubfan1
źródło
Dzięki. To sprawia, że ​​wszystko jest o wiele wyraźniejsze. Zakładam, że w stanie rozruchowym ntfs nie może być rozpoznany (prawda?), Przez co niemożliwe jest posiadanie casper-rw na partycji ntfs. Więc myślę, że pójdę albo z partycją ext4 oznaczoną casper-rw, albo wypróbuję trochę „toram” lub ramdrive.
LS
Jak zmodyfikować grub.cfglub syslinux.txtbiorąc pod uwagę, że można montować tylko media na żywo tylko do odczytu, ponieważ jest to ISO?
solsTiCe
Powyższe wykorzystało ISO do stworzenia nośnika USB na żywo, na którym można zapisywać pliki. Uruchamianie ISO bezpośrednio (na przykład z dysku twardego) używa całkowicie oddzielnego gruba (tego na dysku twardym), którego pliki można edytować - w tym przypadku w ogóle nie używa się mechanizmów rozruchowych z ISO.
ubfan1
7

To niezwykle łatwe, jeśli używasz następującej konfiguracji:

  1. Zainstaluj Ubuntu na pendrivie SLC USB (preferowany USB 3.0, jeśli twój sprzęt go obsługuje) bez żadnych programów typu casper (zwykła instalacja, traktując pendrive jako dysk SSD).

    Dlaczego? SLC są dwa razy droższe niż MLC, ale są 4 razy szybsze i trwają 8 * dłużej! Więc to naprawdę małe dyski SSD na patyku!

  2. Zoptymalizuj system i traktuj pamięć USB jako mały dysk SSD, więc:

    W swoim /etc/sysctl.confdodaniu:

    # 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/fstabDodaj swoje śmiałe parametry do linii rozruchowej USB. (To będzie prawdopodobnie sdcalbo sdd. Poniżej jest przykład, użycie UID jeśli to możliwe)

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

  3. utwórz 2 użytkowników: administrator, który ma swój katalog domowy na pamięci USB, ale ma bardzo mało plików, oraz zwykły użytkownik, który będzie miał swój katalog domowy na dysku twardym.

  4. Dopiero teraz włóż dysk twardy i dodaj niezbędne informacje o dysku twardym, fstababy automatycznie zamontować dysk twardy i dodać następujące parametry:

    nobootwait,nofail

    aby umożliwić rozruch, nawet gdy dysk twardy nie jest obecny (w takim przypadku dostęp będzie miał tylko użytkownik admin, a nie zwykły użytkownik)

  5. Zaloguj się teraz jako administrator i przenieś katalog domowy zwykłego użytkownika z pamięci USB na dysk twardy:

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

Jeśli wszystko jest w porządku:

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

Gotowy! :-)

Dla przypomnienia: mam 16 GB pamięci USB 2.0 MLC właśnie takiej (więcej niż wystarcza na mój przypadek użycia i nie jest zbyt drogi, a teraz ma około 5 lat i wciąż działa!)

Fabby
źródło