「デュアルブート」の版間の差分
(Notion-MW) タグ: 手動差し戻し |
(Notion-MW) |
||
(同じ利用者による、間の4版が非表示) | |||
17行目: | 17行目: | ||
* Bitlockerを有効にしたあとにwinを起動すると再起動ループにハマることがある。解決法(Manage-bdeを使う)→[https://community.spiceworks.com/how_to/124388-stop-a-bitlocker-boot-loop Stop a BitLocker boot loop - Windows Forum - Spiceworks] | * Bitlockerを有効にしたあとにwinを起動すると再起動ループにハマることがある。解決法(Manage-bdeを使う)→[https://community.spiceworks.com/how_to/124388-stop-a-bitlocker-boot-loop Stop a BitLocker boot loop - Windows Forum - Spiceworks] | ||
<span id=" | <span id="windowsパーティションntfsのマウント"></span> | ||
== | == Windowsパーティション(NTFS)のマウント == | ||
{{Outdated}} | {{Outdated}} | ||
56行目: | 56行目: | ||
<p>と、二行に分けて記載する。</p> | <p>と、二行に分けて記載する。</p> | ||
<ul> | <ul> | ||
<li>permissions | <li>permissions については後述</li></ul> | ||
</li></ul> | </li></ul> | ||
==== セキュリティ問題 ==== | ==== セキュリティ問題 ==== | ||
recovery- | recovery-passwordを暗号化されていないパーティションに書いてしまうと結局Bitlockerの意味が全くなくなってしまうので、Linux側でもBitlockerのような暗号化パーティション(LUKSとか?)やユーザーログイン時に復号される暗号化フォルダ(ecryptfsとか)といったディスク上で暗号化される領域に書いておく必要がある(もちろん毎回パスワードの類を打ち込むのでよければそれでもいい)。 | ||
=== permissionsについて === | |||
[https://github.com/tuxera/ntfs-3g/wiki/File-Ownership-and-Permissions https://github.com/tuxera/ntfs-3g/wiki/File-Ownership-and-Permissions] ここに書いてある。 | |||
NTFSでのパーミッションの扱いとPOSIXでのパーミッションの扱いがかなり異なるため、WindowsとLinuxでパーティションをうまく共用するのは(特に各ユーザーフォルダ内に関しては)難しい。 | |||
まず、ntfs-3gでUserMappingを指定しない限りは、Linux上で新規作成したファイルは全てAdministratorsの所有物になる。また、特に指定がない限りはそれらのアクセス権はEveryoneがフルコントロールできる状態になる。もちろん親フォルダのアクセス権がなければ見えてしまうことはないが、エクスプローラー上でも周りのファイルとは明確にアクセス権がズレてしまう。なお、inheritオプションを使って上位フォルダの権限を継承することはできるが、所有者が違えばまともに継承もされないのであまり意味がない。 | |||
また、Windowsではファイルの新規作成時には必ず実行権限が付加されるので、Linux側でそれを見た場合も実行可能になる。(実行権限を外すと.exeなどが実行できなくなる) | |||
したがって、少なくともntfs-3gにちゃんとしたUserMappingを与えない限りは、各ユーザーフォルダに作成したファイルを自動的にそのユーザーの所有物にするようなことは不可能である。 | |||
=== 特定ユーザーとしてmount === | |||
[https://ikb.hatenablog.com/entry/20110203/1296725898 https://ikb.hatenablog.com/entry/20110203/1296725898]のように | |||
<code>-o uid=$(id -u),gid=$(id -g)</code>とする。ただしこれだと複数ユーザーで使えない。複数ユーザーで使うときは、UserMappingを使用する(WindowsでのユーザーとLinuxでのユーザーを対応づけたい場合はこちら)か、bindfsを使うとよい。(一旦rootでマウントしてから、各ユーザー向けにそのユーザーの権限でマウント) | |||
==== bindfs ==== | |||
既存のディレクトリを、所有ユーザーやパーミッションを変更してマウントしてくれる。Gitとかで所有権エラーが出るのを防げて快適になる。 | |||
<syntaxhighlight lang="python">sudo bindfs --mirror=myname --force-group=myname /media/win ~/.mnt_win/</syntaxhighlight> | |||
または | |||
<syntaxhighlight lang="python">sudo bindfs --force-user=myname --force-group=myname /media/win ~/.mnt_win/</syntaxhighlight> | |||
この2つの違いは不明 | |||
sudoがないと<code>fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf</code>とか言われたりする | |||
fstabの例 | |||
<syntaxhighlight lang="python">/media/win /home/myname/.mnt_win fuse.bindfs nofail,map=root/myname:@root/@myname,create-with-perms=g-w 0 0</syntaxhighlight> | |||
Linuxだとrootのデフォルトのumaskが022で一般ユーザーが002なせいで一般ユーザーが作ったファイルが775とか664になってしまったりするがg-wをつけることによって755とか644になる(もちろんchmodすれば変えられる | |||
<span id="minecraft"></span> | <span id="minecraft"></span> | ||
73行目: | 106行目: | ||
まずLinuxのランチャーは相対パスどころかシンボリックリンクすら変換して普通の絶対パスにしてしまう(設定を書き換えてしまう)っぽいので、linuxでは絶対パス指定で/media/win/Users/pathのようにする。で、この書き方をするとWindowsでは相対パスと解釈されるのだが、基準となるフォルダが謎で、「PLAY」を押した時のチェック時は.minecraftが基準なのだが、実際に見られるのはランチャーがあるフォルダが基準(=こっちになかった場合ゲームディレクトリが新たに作られる) | まずLinuxのランチャーは相対パスどころかシンボリックリンクすら変換して普通の絶対パスにしてしまう(設定を書き換えてしまう)っぽいので、linuxでは絶対パス指定で/media/win/Users/pathのようにする。で、この書き方をするとWindowsでは相対パスと解釈されるのだが、基準となるフォルダが謎で、「PLAY」を押した時のチェック時は.minecraftが基準なのだが、実際に見られるのはランチャーがあるフォルダが基準(=こっちになかった場合ゲームディレクトリが新たに作られる) | ||
* ストアアプリ版の(新しい方の?)Minecraftランチャーでは、この「ランチャーがあるフォルダ」は<code>AppData\Local\Packages\Microsoft.4297127D64EC6_8wekyb3d8bbwe\LocalCache\Local</code> あたりである。 | |||
従って、ランチャーのフォルダと.minecraft内の両方にmediaというフォルダを作って中にwinという名前でC:\へのジャンクション置くとうまくいく。 | 従って、ランチャーのフォルダと.minecraft内の両方にmediaというフォルダを作って中にwinという名前でC:\へのジャンクション置くとうまくいく。 |
2024年11月23日 (土) 01:19時点における最新版
WindowsとLinuxのデュアルブートにおいて役に立つ情報を記述する。古いメモを多く含む。Linuxのインストールも参照。
Windowsのプロダクトキー関連
Bitlocker
とにかく前もって回復キーを保存しておくこと!!逆に回復キーさえあればBitlockerで大きなトラブルになることは多くない。
- BitLockerとは【BitLockerの要件と自動有効化の問題点】|パソコン修理パソコンドック24 によるとローカルアカウントでBitlockerの有効/無効を確認するときはdiskmgmtから行かなきゃいけないらしい。
- Bitlockerを有効にしたあとにwinを起動すると再起動ループにハマることがある。解決法(Manage-bdeを使う)→Stop a BitLocker boot loop - Windows Forum - Spiceworks
Windowsパーティション(NTFS)のマウント
remove_hiberfileについて
マウントが成功するにはWindowsが完全シャットダウンされている必要がある(またはそれが望ましい)。ただ、https://unix.stackexchange.com/questions/107978/cant-access-windows-drive-windows-is-hibernated-refused-to-mountにある通り、windowsを正しくシャットダウンしてもなぜか「ハイバーネートされててマウントできません」的なのが出ることがあるので、マウントオプションにremove_hiberfileを追加するとよい。
- 高速スタートアップを無効にしているにもかかわらず完全シャットダウンされていないことがある気がしたので、Windowsでシャットダウン時に実行するスクリプトとして完全シャットダウンコマンドを追加したりした
- デスクトップPCではだいたい不要?
Bitlocker無し
普通にntfs-3gを使う。数字など適宜読み替えること。主にWindowsのDドライブ想定。
コマンド例
ntfs-3g -o remove_hiberfile /dev/nvme0n1p5 /media/win
fstabの例
/dev/sda2 /media/ddrive ntfs-3g noauto,rw,nofail 0 0
Bislocker有り
ntfs-3gの前にDislockerで暗号化を解除する。参考→http://www7390uo.sakura.ne.jp/wordpress/archives/2
dislocker-fileの方式だと一旦復号したのをファイルに書き出して静的にマウントするので、(事実上)readonlyとなる。よってdislocker-fuseを使う→https://www.systutorials.com/docs/linux/man/1-dislocker-fuse/
コマンド例
$ sudo dislocker-fuse -V /dev/nvme0n1p3 --recovery-password=xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx -- /media/dl-fuse $ sudo mount -o loop,rw /media/dl-fuse/dislocker-file /media/win/
fstab例
/dev/nvme0n1p3 /media/bitlocker fuse.dislocker recovery-password=xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx 0 0 /media/bitlocker/dislocker-file /media/win10 ntfs-3g rw,nofail,remove_hiberfile,permissions 0 2
と、二行に分けて記載する。
- permissions については後述
セキュリティ問題
recovery-passwordを暗号化されていないパーティションに書いてしまうと結局Bitlockerの意味が全くなくなってしまうので、Linux側でもBitlockerのような暗号化パーティション(LUKSとか?)やユーザーログイン時に復号される暗号化フォルダ(ecryptfsとか)といったディスク上で暗号化される領域に書いておく必要がある(もちろん毎回パスワードの類を打ち込むのでよければそれでもいい)。
permissionsについて
https://github.com/tuxera/ntfs-3g/wiki/File-Ownership-and-Permissions ここに書いてある。
NTFSでのパーミッションの扱いとPOSIXでのパーミッションの扱いがかなり異なるため、WindowsとLinuxでパーティションをうまく共用するのは(特に各ユーザーフォルダ内に関しては)難しい。
まず、ntfs-3gでUserMappingを指定しない限りは、Linux上で新規作成したファイルは全てAdministratorsの所有物になる。また、特に指定がない限りはそれらのアクセス権はEveryoneがフルコントロールできる状態になる。もちろん親フォルダのアクセス権がなければ見えてしまうことはないが、エクスプローラー上でも周りのファイルとは明確にアクセス権がズレてしまう。なお、inheritオプションを使って上位フォルダの権限を継承することはできるが、所有者が違えばまともに継承もされないのであまり意味がない。
また、Windowsではファイルの新規作成時には必ず実行権限が付加されるので、Linux側でそれを見た場合も実行可能になる。(実行権限を外すと.exeなどが実行できなくなる)
したがって、少なくともntfs-3gにちゃんとしたUserMappingを与えない限りは、各ユーザーフォルダに作成したファイルを自動的にそのユーザーの所有物にするようなことは不可能である。
特定ユーザーとしてmount
https://ikb.hatenablog.com/entry/20110203/1296725898のように
-o uid=$(id -u),gid=$(id -g)
とする。ただしこれだと複数ユーザーで使えない。複数ユーザーで使うときは、UserMappingを使用する(WindowsでのユーザーとLinuxでのユーザーを対応づけたい場合はこちら)か、bindfsを使うとよい。(一旦rootでマウントしてから、各ユーザー向けにそのユーザーの権限でマウント)
bindfs
既存のディレクトリを、所有ユーザーやパーミッションを変更してマウントしてくれる。Gitとかで所有権エラーが出るのを防げて快適になる。
sudo bindfs --mirror=myname --force-group=myname /media/win ~/.mnt_win/
または
sudo bindfs --force-user=myname --force-group=myname /media/win ~/.mnt_win/
この2つの違いは不明
sudoがないとfusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf
とか言われたりする
fstabの例
/media/win /home/myname/.mnt_win fuse.bindfs nofail,map=root/myname:@root/@myname,create-with-perms=g-w 0 0
Linuxだとrootのデフォルトのumaskが022で一般ユーザーが002なせいで一般ユーザーが作ったファイルが775とか664になってしまったりするがg-wをつけることによって755とか644になる(もちろんchmodすれば変えられる
Minecraft
.minecraftフォルダをWindowsとLinuxで共有したはいいが、(それ自体.minecraftの中にある)ゲームディレクトリの指定も共有することを考えると、両OSでパスの仕様がやや異なるのが問題になる。
例えば以下ではWindowsのルートが/media/winにマウントされているとする。
まずLinuxのランチャーは相対パスどころかシンボリックリンクすら変換して普通の絶対パスにしてしまう(設定を書き換えてしまう)っぽいので、linuxでは絶対パス指定で/media/win/Users/pathのようにする。で、この書き方をするとWindowsでは相対パスと解釈されるのだが、基準となるフォルダが謎で、「PLAY」を押した時のチェック時は.minecraftが基準なのだが、実際に見られるのはランチャーがあるフォルダが基準(=こっちになかった場合ゲームディレクトリが新たに作られる)
- ストアアプリ版の(新しい方の?)Minecraftランチャーでは、この「ランチャーがあるフォルダ」は
AppData\Local\Packages\Microsoft.4297127D64EC6_8wekyb3d8bbwe\LocalCache\Local
あたりである。
従って、ランチャーのフォルダと.minecraft内の両方にmediaというフォルダを作って中にwinという名前でC:\へのジャンクション置くとうまくいく。
.minecraftの中にはゲームディレクトリ専用のフォルダを作り、その中にmain, snapshotなど用途に応じたフォルダを作っておくとよい
google-drive-ocamlfuse
labelを使うと複数アカウントをマウントできる。デフォルトのラベル名はdefault
しばらく使っていないと起動時におそらく認証の失敗が原因でマウントポイントのあるフォルダに対するlsがしばらく一切反応しなくなる(~/.gdfuse内の該当ラベル名のフォルダを削除して最初からやり直せば治る)。よってマウントポイントをホームディレクトリ直下に作るのは避けたほうがよい(gdfというフォルダを作っている)。
MEGA
Winが完全にはシャットダウンされていない状態でLinuxを起動するとCドライブ上のMEGAのフォルダが読めずに同期が無効になってしまう。MEGA自身のかわりに、Cが読める状態でのみMEGAを起動するシェルスクリプト(mega-mounted.sh)をスタートアップに登録しておく。Cが読めなかった場合にはdialogコマンドで通知ダイアログを表示する。(このスクリプトではC自身のかわりにC:\Windowsをみている)(gdialogは一部のディストリにしか入っていないかもしれない。実際にコマンド打ってみてどんな表示になるかも含めて確かめておいたほうがよい)
#!/bin/sh
if [ -d /media/win-rw/Windows ]; then
megasync
else
gdialog --title "Warning" --infobox "MEGAsync is not started because Windows partition is not mounted" 0 0
fi
Bluetooth機器
同じBluetooth機器を同じPCのWindowsとLinux双方にペアリングするというもの。自分はマウスでしかやったことがない。意外と難しいが何とかなる。
参考
- https://orumin.blogspot.com/2019/02/bluetooth.html
- https://qiita.com/yoko-yan/items/9b0235678fd804b4fe0d
- Bluetooth Low Energyという仕様もあるらしく、自分のマウスはこっちだった。これに関してはhttp://aimingoff.way-nifty.com/blog/2018/09/windows-linux-b.htmlを参照。割と情報が少ないので感謝。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\xxxxxxxxxxxx
を見るためにpstoolsをダウンロードしてPsExec64 -s -i regedit
とする必要があることに注意。なお、セキュリティソフトによってPsexecが脅威と見なされ強制削除されてしまうときは代わりにフリーソフトのAdvancedRunを使うとよい。- まとめ
- CSRKをLocalSignatureKey
- LTKをLongTermKey
- EDIVをEdiv(16進→10進に変換)
- ERandをRandに(バイト(2文字のかたまり)をすべて逆順にしてから10進変換)。ちなみにこれを間違えた結果、マウスを動かすたびにbluetoothアイコンが白↔黒と高速で切り替わる謎のバグっぽい現象が起こったことがあった。
- 小文字を大文字に変える必要はない。また、IRKをIdentityResolvingKeyに書くのも不要。
マルチデバイス対応マウス(Logicool)
マルチデバイス対応(切り替えボタンがあるやつ)のマウス(LogicoolのM595)を使ったら、登録情報を一旦削除して再接続するごとにMacアドレスがひとつインクリメントされて困った。Linuxで接続→Winで接続→Linuxで上記の書き換え、とやったあと、フォルダ名を変更(1を足せばよいはずだが正確にはWinの情報を見るのがよい)するとうまくいった。自分のツイートにも記録あり