web-dev-qa-db-ja.com

圧縮でbtrfsルートを使用するようにインストーラーをトリックする

MaverickをBTRFSルートパーティションにインストールしたい。楽しみやテスト用ではありませんが、小さいフラッシュディスク(4GB)が原因で圧縮が必要だからです。

10.10インストーラーがついにbtrfsをサポートするようになりましたが、compressフラグを有効にする方法はありません。インストーラーを何とかしてだますことができますか?古いバージョンでLUKSを取得する場合は、パーティションを事前にマウントできます。または、btrfs + compress pre installを有効にする簡単なmonkeypatchがありますか?

9
mario

Linux Mint Debian Editionをフラッシュドライブにインストールし、圧縮されたbtrfsにget-goからインストールしようとしたため、このスレッドに出会いました。これらの解決策は私の結果を達成するために直接適用できませんでしたが、この情報のいくつかを使用して目標を達成しました。

問題は、インストーラーがパーティションをフォーマットしてマウントし、ファイルのコピーを開始するポイントが互いに隣り合っているため、上記の「リマウント」オプションを実行できなかったことです。

インストーラースクリプトのLMDEバージョンはpython(usr/lib/live-installer/installer.py)にありました。 Ubuntuと同じかどうかはわかりませんが、同じ場合は直接適用できます。これにより、スクリプトを編集し、「/」のパーティションを元々マウントした行のすぐ下にこの行を追加できました

os.system("mount -o remount,compress /dev/sda3 /target -t btrfs")

もちろん、「/ dev/sda3」はデバイスによって異なります。

私はこれがUbuntuフォーラムであることを理解していますが、私が言ったように検索を思いついたので、インストーラーがpythonベースである場合、このソリューションは直接関連します。とにかく私たちは皆ここにDebianです!?

2
CenterOrbit

これを行う簡単な方法は、ライブ環境のmountコマンドを変更することです。

  1. ライブセッションを通常どおり起動します。
  2. mount実行可能ファイルを別の場所に移動します。

    Sudo mv /bin/mount /bin/mount.bin
    
  3. sudoedit /bin/mountを使用して新しいファイルを編集し、次のスクリプトをその中に保存します(必要に応じてオプションを変更します。ここではcompressを追加しました)。

    #!/bin/sh
    if echo "$@" | grep -q -- "-t btrfs"; then
        /bin/mount.bin "$@" -o compress
    else
        /bin/mount.bin "$@"
    fi
    

    また、/dev/sda1の代わりに-t btrfsElifsのようなブロックデバイスを一致させて、デバイスやファイルシステムごとに異なるマウントオプションを使用することもできます。

  4. 元のアクセス許可を新しいスクリプトにコピーします。

    Sudo chmod --reference=/bin/mount.bin /bin/mount
    
  5. 通常どおりインストールすると、指定したオプション(ここでは、compress)でbtrfsパーティションがマウントされます。

  6. インストールが終了したら、ライブ環境を終了する前に、新しくインストールされたシステムの/etc/fstabを指定されたオプションに一致するように変更し、新しいブートで同じオプションを使用します。

defaults,noatime,compress-force=lzo,space_cacheをマウントオプションとして使用しました。

これは、毎日quantal(30/6/12)で機能します。

/およびスワップパーティションとしてbtrfsパーティションを使用しました。

クレジットは this post (in this thread )に移動し、これは this blog post を引用しています。

10
Msktje

インストーラーがパーティションをマウントした直後に、シェルに切り替えてmount -o remount,compress /targetを実行しようとすることができますが、これは機能する可能性があります。

4
Michel

13.04(Raring Ringtail)の時点で、圧縮せずにbtrfsボリュームにインストールし、新しいインストールで起動したらボリューム全体のすべてのファイルを圧縮できるはずです。

Oracleのドキュメントによると、-clzoオプションを使用して最適化することにより、既存のファイルシステム上の既存のファイルを圧縮できます。

Sudo btrfs filesystem defragment -clzo /

単一のスラッシュを渡すと、ルートボリューム上のすべてのファイルとディレクトリを最適化するようにbtrfsに指示します。

参照: http://docs.Oracle.com/cd/E37670_01/E37355/html/ol_use_case1_btrfs.html

完了したら、/ etc/fstabのボリュームの行にcompress = lzo(または必要に応じてcompress = zlibですが、速度の点でlzoをお勧めします)を追加し、再起動してディスクに書き込まれたファイルを圧縮します。

2
Geoff

最近のディストリビューションでは、busyboxを含むほとんどのコマンドにmountを使用しています。これらのリリースでは、/bin/mount/bin/busyboxへのシンボリックリンクであり、シンボリックリンクmustは、正しく機能するために「mount.bin」ではなく「mount」という名前になります。そのため、Mskjeによる上記の回答は、次のように変更できます。

  1. ライブセッションに通常どおり起動します。
  2. Sudo rm /bin/mount
  3. Sudo mkdir /bin/orig
  4. Sudo ln -s /bin/busybox /bin/orig/mount
  5. Sudo nano /bin/mount-これにより、新しいスクリプトが作成されます。
  6. これをスクリプトにコピーして保存します(必要に応じてオプションを変更し、ここで圧縮します)。

    #!/bin/sh  
    if echo $@ | grep "btrfs" >/dev/null; then  
        /bin/orig/mount $@ -o compress  
    else  
        /bin/orig/mount $@  
    fi
    
  7. Sudo chmod 755 /bin/mountで実行可能にします。

  8. 通常どおりにインストールすると、指定したオプションでbtrfsパーティションがマウントされます(ここでは圧縮)。
  9. インストールが完了したら、ライブ環境を終了する前に、新しくインストールされたシステムのfstabを指定されたオプションに一致するように変更し、新しいブートで同じオプションを使用します。
1
danBhentschel

手動で選択する:/ dev/sda1をbtrfsとして/ some ext?/bootスワップ

ターミナル内:Sudo bash

プレスインストール

端末行でEnterキーを押します。(Sudo done)mount -t btrfs -o remount、compress/dev/sda1/target

1
user3911

スティック上のext4パーティションを圧縮されたbtrfsパーティションに置き換えることで機能しました。これは別のコンピューターを使用して実行できます。

  1. 経由ですべてをコピーする

    Sudo cp -ar/ext4Partition/*/backupspace /
  2. Gpartedを使用してパーティションをbtrfs oneに置き換えます

  3. Sudo mount mount -o compress/dev/yourdevice/btrfsPartitionを使用して新しいパーティションをマウントします
  4. すべてをコピーバック

    Sudo cp -ar/backupspace/*/btrfsPartition /
  5. / btrfsPartition/etc/fstabを新しいデバイスuuidと新しいパーティションタイプに更新します。 btrfsにはないため、再マウントオプションを削除します。
  6. ブートローダーを再インストールします(例: BootRepair

注:/btrfsParition/ext4Partition、および/backupspaceディレクトリは、必要に応じて設定できます。

1
nob

クールな新しいBtrfs機能の一部またはすべてを取得するには mkfs.btrfsコマンドを手動で実行する。の 代替インストーラー いつでも選択した前のステップに戻るオプションがあります。これを使用して、インストーラーがbtrfsを作成した後、独自のbtrfsを作成し、fsが使用されるように前のステップでインストーラーを起動できます。

  1. パーティションフェーズが完了するまでインストーラーを実行します。
  2. 基本システムをインストールします。

  3. alt-F2はターミナルに移動し、mkfs.btrfs-/ dev/sdXYを実行します

  4. インストーラーalt-F1に戻ります
  5. 「戻る」ボタンを押してから、もう一度パーティションオプションを選択します。デフォルトでは再フォーマットしないので、続行をクリックするだけです。基本システムが再インストールされます。再フォーマットしないことに関する警告に「はい」と答えます。

  6. 楽しい。

1
Arthur Ulfeldt

あとで圧縮を追加できます。 /etc/fstabを開き、ルートファイルシステムの行を編集します。次のようにcompressをmount-optionsに追加します。

UUID=0c8e6d48-e6b3-425a-ab33-24205a9cb586 / btrfs defaults,compress 0 1

GRUB2ではサポートされていないため、/ bootがbtrfsで動作しないことを忘れないでください。

0
mniess

あなたは常に古代中国のことわざに従うことができます:

インストーラパーティショナの機能が気に入らない場合は、自分でパーティションを作成し、それらのパーティションにインストールするようインストーラに指示してください。

0
Oli