圧縮でbtrfsルートを使用するためのトリックインストーラー


9

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

10.10インストーラーが最終的にbtrfsをサポートするようになりましたが、compressフラグを有効にする方法はありません。どういうわけかインストーラーをだますことができますか?古いバージョンでLUKSを取得する場合は、パーティションを事前にマウントできました。または、btrfs + compressプレインストールを有効にする簡単なモンキーパッチはありますか?


代替(テキストモードのインストーラー)ディスクを試しましたか?
オリ

@オリ:ちょうど今それを試してみました。-alternate Debianインストーラはより複雑です。ただし、標準のファイルシステムフラグ(noatime、nodev、noexec)のみがリストされます。compressまたはのようなbtrfs固有のオプションの設定を防ぎますssd。運が悪い。
mario

回答:


2

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

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

インストーラースクリプトの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ですよね!?


10

これを行う簡単な方法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 btrfsやチェーンelifのようにブロックデバイスを一致させて、さまざまなデバイスやファイルシステムにさまざまなマウントオプションを使用することもできます。

  4. 元の権限を新しいスクリプトにコピーします。

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

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

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

これはクアンタルデイリーで機能します(30/6/12)

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

クレジットはこの投稿このスレッド内)に送られ、次にこのブログ投稿が引用されます。


これを3回賛成できればいいのにと思っています。これは、これを適切に行う方法を忘れた3番目の機会です。もちろん、ほとんどの点でsudoを使用する必要がありますが、経験の浅いユーザーにはわかりにくいかもしれません。とてもクール!
DanielSmedegaardBuus 2014年

4

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


それはうまくいったようです!(私は何か他のものを台無しにしましたが..)しかし、それmount -o remount,compress,ssd /dev/mapper/target /target -t btrfsはソースデバイスで完全なコマンドを必要としました。
マリオ

最も優れています。いくつかのテストの後、再マウントのトリックは完璧に機能しました。2.6Gの代わりに1.2Gを使用した、顕著なスピードゲイン。
マリオ

2

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)を追加し、再起動して、ディスクに書き込まれるファイルがさらに圧縮されるようにします。


2

最近のディストリビューションではbusybox、を含むほとんどのコマンドで使用されていますmount。これらのリリースで/bin/mountは、はシンボリックリンクで/bin/busyboxあり、正しく機能するためにはシンボリックリンクの名前を「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

手動で選択:/ dev / sda1を/一部のextのbtrfsとして?/ bootいくつかのスワップ

ターミナル:sudo bash

プレスインストール

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


1

mkfs.btrfsコマンドを手動で実行すると、 Btrfs の優れた新機能の一部またはすべてを入手できます。代替インストーラは、お好みの前のステップに戻ります任意の時点でオプションがあります。これを使用して、インストーラーがbtrfsを作成した後、独自のbtrfsを作成し、前の手順でインストーラーを起動してfsが使用されるようにすることができます。

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

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

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

  6. 楽しい。


1

スティックの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必要に応じて設定できます。


0

後で圧縮を追加できます。/etc/fstabルートファイルシステムの行を開いて編集します。compress次のようにマウントオプションに追加します。

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

ここで、再マウントまたは再起動します。GRUB2はbtrfsをサポートしていないため、/ bootはbtrfs上で実行できないことを忘れないでください。


2
私の知る限り、fstabに圧縮を追加しても、既存のファイルには影響がありません(インストール後に追加するだけで、すでに4 GB SSDの大部分を占めます)。ライブCDを使用する場合は、プレインストールパーティションを作成してマウントすることが最良のオプションだと思います。
JanC

はい、後でオプションを追加してもファイルは圧縮されません。前回、完全なファイルバックアップを行った後、ファイルシステムフラグを変更し、その後すべてを上書きしました。とても面倒です。またtar、いくつかのファイル属性を忘れてしまうこともあります。代わりにpaxとrsyncのどちらを使用したかはわかりません。
マリオ

ubuntu-minimalをインストールし、残りを後でインストールするとどうなりますか?
22:42のニーニー

0

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

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


私は古い中国のことわざに誰を質問しますか?しかし、新しい10.10インストーラーはマウントされた/ targetを尊重しますか?再マウントを主張する場合、私の貴重な手動パーティション分割はすべて無駄になります。
マリオ

パス。ISOがまだある場合は、VirtualBoxでテストしますが、もう一度、代替インストーラを使用すると幸運になると思います(ユーザーの干渉に対してよりよく反応する傾向があります)
Oli

もう一度試してみました。どちらのインストーラーも、マウントを外すのにかなり満足しています。手動によるパーティション分割はLUKSの解決策ですが、手動マウントオプションはbtrfsに対しては持続しません。代替インストールウィザードは一般に、非標準オプションに不満があるようですが、少なくとも何が起こっているかを確認できます。デスクトップインストーラーは、ターゲットを2〜3回アンマウントします。
マリオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.