本文を読み飛ばす

Chromebook Linux terminal(4): loopbackを使う

Linuxが固まることがありますが、
Terminalを入れ直すという解決策もあるそうです。

簡単にデータファイルを入れ替えられるように
別のドライブをマウントしたくなりました。

持ち運びもしたいので loopbackを検討してみました。

fuse2fsを使う

losetup は使えないようです。
fuseを使うのを想定しているということで、
fuse2fs を使います。

$ sudo apt install -y fuse2fs

loopbackファイルを作る

FAT32で最大の4GBのファイルを作りました。

exFATにすると、ディスクアクセスの時間が伸びたので、
FAT32でやっています。

(FAT32だと40MB/sec、exFATだと1MB/secでした)

$ dd if=/dev/zero of=/mnt/chromeos/removable/c101pa/loopback.fs \
    bs=$((1024 * 1024)) count=4
$ mkfs.ext4 -O ^has_journal /mnt/chromeos/removable/c101pa/loopback.fs

fuse2fsではjournalを使うとエラーになったので
journalをオフにしています。

fuse2fsでマウント

  • fakeroot オプションを指定しないとrootが求められるので
    指定しました。

    • 一つフォルダ掘って適切に権限設定してもいいと思います。
    • ただ、運用側のフォルダがソフトリンクになるのが嫌だったので
      私はマウント先を直接使うようにこの設定を行っています。
$ fuse2fs -o uid=1000,gid=1000,fakeroot \
    /mnt/chromeos/removable/c101pa/loopback.fs ~/work

ちなみに uid gid だけを指定すると
所有者はそうなって、lsなど見た目はその人がなんでもできそうに見えますが、
最上階層のファイル・フォルダ作成には
root権限が必要になります。

起動時に自動的にマウントする

下のようなスクリプトを .bashrc に記載して
毎回mountする手間をなくします。

function mountsd() {
    if df | grep -qe "$1"; then
        return 0
    fi
    /usr/sbin/e2fsck $1
    uid=$(id -u)
    gid=$(id -g)
    fuse2fs -o uid=$uid,gid=$gid,fakeroot $1 $2
    if [ x$? != x0 ]; then
        echo "$1" was not able to mount.
    fi
}
mountsd /mnt/chromeos/removable/c101pa/home-src.fs ~/src

ここまでやると、環境としては整うのですが
運用してわかったのがアクセスがあまりにも遅い...

結局、標準の「Linuxに共有」を使ってChromeOS側の
フォルダに直接読み書きすることにしました。

コメント

Comments powered by Disqus
宣伝: