ChromebookでRcloneを使ってOneDriveをマウントする

# はじめに

ChromebookでOneDriveを使う方法は色々あります。

+ Webサービス「OneDrive」
    + https://onedrive.live.com/
    + 今年中にPWA化されるらしい
    + ここにあるファイルを使いやすくしたい
+ Androidアプリ「OneDrive」
    + https://play.google.com/store/apps/details?id=com.microsoft.skydrive/
    + インストールするとChromeOSのファイルアプリの左ペインからOneDriveにアクセスできるようになる
    + 読み込み専用のため、直接ファイルを編集できない
+ Chrome拡張機能「OneDrive」
    + https://chrome.google.com/webstore/detail/nffchahhjecejoiigmnhhicpoabngedk/
    + ただのリンク
+ Chrome拡張機能「File System for OneDrive」
    + https://chrome.google.com/webstore/detail/jbfdfcehgafdbfpniaimfbfomafoadgo/
    + ChromeOSのファイルアプリにOneDriveをマウントする拡張機能
    + 色々と不具合がある模様
+ Windows/Mac/Linuxアプリ「Rclone」
    + [https://rclone.org/](https://rclone.org/)、[https://rclone.org/onedrive/](https://rclone.org/onedrive/)
    + 様々なクラウドストレージに対応したファイル操作用コマンドラインアプリ
    + ファイルの移動やコピー、削除や同期等を行うことができ、ストレージのマウントも出来る
    + ChromeOSのLinux環境にOneDriveをマウントすると、ファイルアプリからもファイル操作できる
+ その他Linux用OneDriveクライアントアプリ
    + 色々

今回はChromebookのLinux機能を有効化し、
Rcloneを使ってLinux環境内にOneDriveをマウントし、
ファイルアプリからファイル操作できるようにしてみます。



# 準備

### Linux機能を有効化
設定から「Linux 開発環境」をオンにします。
![Screenshot 2021-07-18 16.52.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/0d9ade3c-b51e-5aaa-ef35-73c60e543051.png)


### Rcloneをインストール
ターミナルを開き、下記コマンドを実行します。

```
curl https://rclone.org/install.sh | sudo bash
```
![Screenshot 2021-07-18 16.57.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/44396911-5295-75ce-fbfe-34a5e14fc145.png)
`/usr/bin/rclone`にRcloneがインストールされました。


### Rcloneをセットアップ
下記コマンドでRcloneのセットアップを行います。

```
rclone config
```
設定の新規追加なので`n`を入力します。
![Screenshot 2021-07-18 16.58.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/024eeb5d-747e-fe99-de7c-78c8322b6b90.png)
OneDriveの設定なので名前は`onedrive`にします（何でもいいです）。
![Screenshot 2021-07-18 16.58.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/1de8394b-80f5-2439-3555-554ff7315543.png)
設定するストレージの一覧が出力されますので、`onedrive`と入力します。
![Screenshot 2021-07-18 16.58.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/37e45969-525e-5fdb-9c84-27de5c4906dc.png)
`OAuth Cliend Id`や`OAuth Client Secret`は何も入力せずにEnterを押します。
![Screenshot 2021-07-18 16.59.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/c0879a8c-68b8-7f5b-1152-a616e81cf3ed.png)
`region>`は`global`を入力しました。
![Screenshot 2021-07-18 16.59.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/09db72fa-9f45-6a91-bbee-f98a3360ed98.png)
`Edit advanced config`と`Use auto config`は何も入力せずにEnterを押します。
![Screenshot 2021-07-18 17.00.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/a6279eac-7f6c-0d30-d71d-91abb7488962.png)
ブラウザが開くのでMicrosoftアカウントでログインします。
Success!の画面が表示されたらターミナルに戻ります。
使用するサービスの一覧から`onedrive`を選択します。
![Screenshot 2021-07-18 17.01.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/3fcfbfb0-6c09-8e69-2474-4f33efdd2892.png)
`Is that okay?`にはYesなので何も入力せずにEnterを押します。
![Screenshot 2021-07-18 17.01.39 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/306a47cb-6628-86ab-b0ea-0c1df2bee177.png)
`Yes this is OK`なので何も入力せずにEnterを押します。
![Screenshot 2021-07-18 17.01.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/769558f3-3188-2eb4-0fd5-b69dc13c4a59.png)
`onedrive`という名前を付けたOneDriveのRclone設定が完了したので、`q`を入力して設定モードを抜けます。
![Screenshot 2021-07-18 17.02.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/1dd33f2b-58db-4be3-9747-c768b3831f6c.png)
以上でRcloneの設定は完了です。


### OneDriveをマウント
Rcloneを使ってOneDriveをマウントします。
今回はホームディレクトリ直下にOneDriveディレクトリを作成して使用します。

```
mkdir ~/OneDrive
rclone --vfs-cache-mode writes mount onedrive: ~/OneDrive
```
「`onedrive`」は自分で設定したストレージの名前、「`~/OneDrive`」はマウント先のディレクトリです。
`onedrive:`の`:`の後ろにマウントするOneDrive側のディレクトリを指定できます。
`--vfs-cache-mode writes`は付けないと下記の通り出力されたので付けています。

```
<5>NOTICE: One drive root '': --vfs-cache-mode writes or full is recommended for this remote as it can't stream
```



# 確認
Chrome拡張機能、Androidアプリ、Linuxアプリと色々なアプリでファイルを閲覧/編集できます。
![Screenshot 2021-07-18 18.07.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/09e6312d-d5e8-9aff-d8bc-b465c806d8bb.png)
![Screenshot 2021-07-18 18.11.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/d39ce9e0-9c90-04af-0dbe-00e3ea6a2737.png)
▼Webから見たOneDrive
![Screenshot 2021-07-18 19.55.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/169404/829f20ef-efd0-9838-112a-7f2823f51ef0.png)
ただ、ファイルアプリからの操作は快適ではありませんでした。
ファイルのコピー/移動で「コピーできませんでした」と言われることが多いです。
xlsxファイルをLibreOfficeで開こうとしてもエラーでした。
ターミナルでコマンドを使ったり、Linuxアプリからのファイル操作は問題なさそうですが...。

結局、ファイルアプリからの操作はあまり使い物にならなそうでした。



# 自動起動
`~/.sommelierrc`に下記を追記すればLinux環境起動時にOneDriveがマウントされます。

```
rclone --vfs-cache-mode writes mount onedrive: ~/OneDrive &
```
Systemdを使って自動起動する場合は下記サイトが参考になりそうです。
・[ChromeBookとLinuxとのファイル共有方法は rcloneが使いやすい - CHROMEBOOKでVIMMERになる](https://leaves2min.blogspot.com/2019/02/chromebooklinux-rclone.html)



# 結論
いまいち。



# おまけ
RcloneはOneDriveの他にDropboxやGoogleドライブ等、[こちらのページ]
(https://github.com/rclone/rclone#storage-providers)にあるストレージを操作できます。
ChromebookでログインしているGoogleアカウントとは別のアカウントのGoogleドライブもファイル操作できるはずです。



# 参考サイト
+ [Rclone](https://rclone.org/)
    + [Microsoft OneDrive](https://rclone.org/onedrive/)
    + [rclone mount](https://rclone.org/commands/rclone_mount/)
+ [rclone/rclone Wiki](https://github.com/rclone/rclone/wiki)
+ [How To Mount OneDrive In Linux Using Rclone (Supports Business And Personal Accounts) - Linux Uprising Blog](https://www.linuxuprising.com/2018/07/how-to-mount-onedrive-in-linux-using.html)


（バージョン: 91.0.4472.147（Official Build） （64 ビット）にて確認）