終わり! :-)

終わり! :-)

私は永続的な変更を加えた Ubuntu を USB ドライブにライブインストールしようとしていました。しかし、さまざまな理由 (パフォーマンス、スペース) から、変更を USB ではなく HDD に書き込みたいと考えていました。

変更は、システムによってマウントされた ext3 ファイルシステム (casper-rw) のファイル内で処理されることがわかりました。ただし、起動時にフラッシュドライブで自動検出されるようです。

HDD に新しい casper-rw ファイルを作成し、USB ドライブ上の Ubuntu ライブ システムを HDD に再ルーティングするにはどうすればよいですか?

編集 2015-07-14:

これまでの回答に感謝します。とても興味深く、「ライブ システムの永続的な保存機能」の仕組みをより深く理解するのに大いに役立ち、問題を解決するための優れたアプローチを示しています。残念ながら、ホスト システムへのアクセスや新しいハードウェアへのアクセスに関して質問したときに念頭に置いていたいくつかの制限を克服しようとしていましたが、明確に述べていませんでした (申し訳ありません)。

パーティショニングが選択肢である場合、答えはこここれは非常に優れています。新しいパーティションを作成し、casper-rw というラベルを付けるだけで完了します (動作は良好で、テストしました)。

新しいハードウェアを購入することが選択肢である場合、平均的な USB2.0 フラッシュドライブよりもはるかに優れたパフォーマンスを持つ、USB3.0 フラッシュドライブ (MLC または SLC)、ポータブル HDD、eSATA などのオプションが思い浮かびます。

そこで、アクセスが制限されたディスク上のパーティションの代わりに、casper-rw ファイルを作成する方法 (またはフラッシュ ドライブ上のものをコピー/リンクする方法) があるかどうか疑問に思いました。

この方法なら、casper-rw ファイルをフラッシュドライブにコピーして再度使用したり、別のコンピューターに移動したりするだけで簡単に、優れた柔軟性が得られ、HDD への変更が最小限に抑えられ、システムに加えられた変更を簡単に削除できます。

答え1

次の設定を使用すれば、非常に簡単です。

  1. UbuntuをインストールするSLC USBスティック(ハードウェアがサポートしている場合は USB 3.0 が推奨)、Casper 関連のものは使用せず (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追加すると太字のパラメータsdcブートUSBラインに追加します。(おそらくまたは になりますsdd。以下は例です。可能であればUIDを使用してください)

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

  3. 2人のユーザーを作成します。USBスティックにホームディレクトリがあるがファイルが少ない管理者ユーザーと、持つだろうHDD 上のホーム ディレクトリ。

  4. 今だけHDD を挿入し、必要な HDD 情報を追加してfstabHDD を自動マウントし、次のパラメータを追加します。

    nobootwait,nofail

    HDDが存在しない場合でも起動できるようにする(その場合、管理者ユーザーのみがアクセスでき、通常のユーザーはアクセスできません)

  5. 次に、管理者ユーザーとしてログインし、通常のユーザーのホーム ディレクトリを USB スティックから 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 スティックを持っています (私の用途には十分すぎるほどで、それほど高価でもなく、約 5 年前のものですが、まだ動作しています)。

答え2

ライブ メディアの書き込み可能なファイル システム (casper-rw ファイル内) をハード ディスクに簡単に配置できます。制限は、casper-rw ファイルを FAT パーティションに配置する必要があることです。新しいマシン (UEFI) にはすべて FAT EFI パーティションがありますが、通常は 1G ~ 4G の casper-rw ファイルを保持するには小さすぎます。十分な大きさの別の FAT パーティションにディレクトリを作成し、各ディレクトリに異なるライブ メディアの casper-rw ファイルを保持できます。sda11 が 10G で、10G FAT ファイル システムが /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
}

テキストファイル

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

以上です。USB メディア上の casper-rw ファイルの名前を変更したり削除したりする必要もありません。


USB メディアに空き容量がある場合は、ハード ディスクの casper-rw を USB にコピーして、変更内容を持ち帰ることもできます。


persistent-path では明示的なディスク参照は許可されないため、すべての FAT パーティションで一意である必要があります。1 つまたは 2 つの FAT パーティション (1 つは EFI パーティション) でテスト済みです。FAT ではなく ext2 または ntfs ファイルシステムでは動作しません。"persistent" と同じ行に "toram" という単語も追加すると、低速 USB 上の圧縮ファイルシステムが RAM にコピーされ、パフォーマンスが大幅に向上しますが、FAT パーティションがきれいにアンマウントされないためシャットダウンの問題があるようです (これは問題の原因にはならないようですが...)

関連情報