パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Windows 10 Insider Preview ビルド14316、Bashが利用可能に」記事へのコメント

  • by Anonymous Coward on 2016年04月09日 12時11分 (#2994616)
    • ハードリンク、"."や空白で終わるファイル名、予約デバイス名(CONなど)と同名のファイル名については、POSIXサブシステムのために従来から用意されていたNTFSの機能をそのまま流用。
    • case sensitiveなファイル名もNTFSの機能を使用するが、Linuxマウント上でしか作成できない。Windowsマウントではファイル名はcase insensitiveになる。たとえば /root は /mnt/c/.../lxss/root でもアクセスできるが、前者でAとaを作成して後者でaを開いても、Aにアクセスしてしまう。
    • Windowsでファイル名に使用できない文字はLinuxマウント上では"#00hh"のような形式に変換される。"#"自身も"#0023"に変換される。(Linuxのファイル名はオクテット列だから"00"が無駄な気がするが)。Windowsマウントでは変換は行われず、使用できない文字を含んだファイルを作ろうとするとエラーになる。
    • 制御文字を含むファイル名はLinuxマウントでも作成できない。作ろうとするとエラーになる。
    • ファイル名の非ASCII文字はUTF-8として解釈してUTF-16に変換されるので、日本語ファイル名はWindows側からも日本語に見える。UTF-8として不正なバイト列はU+FFFDに変換される。
    • パーミッションはNTFS ACLにもリードオンリー属性にもマップされない。Linuxマウント上ではパーミッションを操作できるが、パーミッションをどう変更してもNTFS ACLはフルアクセスのままだし、Windowsマウントではパーミッションは777固定(chmodは無視される)。
    • symlinkはNTFSリパースポイントにマップされない。Linuxマウント上で作ったsymlinkはWindowsマウントではリンク先が書かれた普通のファイルに見えるし、Windowsマウント上でsymlinkは作成できない。Windows側で作ったNTFSリパースポイントにはLinux側からアクセスできない。
    • パーミッションやsymlinkの情報は何らかの手段でファイル自身に付随させているらしく、Linuxマウント上で作ったsymlinkやパーミッションを変更したファイルをエクスプローラーでコピーしてbashを再起動すると、symlinkやパーミッションはコピー先に引き継がれている(ただしLinuxマウントのファイルをWindowsから操作するのはサポートされていないそうだ)。
    • by Anonymous Coward

      > パーミッションやsymlinkの情報は何らかの手段でファイル自身に付随させているらしく

      代替データストリームだろうか?>何らかの手段

      • by Anonymous Coward on 2016年04月09日 15時52分 (#2994707)

        代替データストリームでもリパースポイントでもないことを確認している。

        親コメント
        • by Anonymous Coward on 2016年04月09日 16時47分 (#2994723)

          BackupReadしてみたところ、なんとBACKUP_EA_DATAが確認できた。OS/2サブシステムのために用意されていた機能がまさかの大復活。だからリパースポイントを読めないのか(EAとリパースポイントは共存できない)。

          親コメント
          • by Anonymous Coward

            リパースポイントと拡張属性が共存できないこととWSLからリパースポイント使えないことって何の関係もないでしょ

            • by Anonymous Coward

              基本的にWSLで作成したファイルはすべてEAを持つ(パーミッションの情報を保存する必要があるから)=リパースポイントを持てない=WSLでは実質リパースポイントを使えない

              まあWindowsマウントに限って使えてもいい気はするけど。

    • by Anonymous Coward

      パーミッションやsymlinkを共有できないのであれば、結局Windows用のファイルとLinux用のファイルを別々に管理することになるね。

      ローカルファイルを互いにマウントした状態の、2つのOSが同居しているだけに過ぎないように見える。
      coLinuxと何が違うのかわからなくなってきた。

      • by Anonymous Coward on 2016年04月09日 22時32分 (#2994890)
        > ローカルファイルを互いにマウントした状態の、2つのOSが同居しているだけに過ぎないように見える。

        そもそも、そういうものなんだけど。
        NT は、複数のOS を並列に動かすための OS だし。
        Windows 単体で使ってたって、32bit と 64bit の別のOSを並列に動かしてる状態だから、そこに Linux が増えただけ。
        coLinux との違いは Win32 の上では動くのではなく、直接 NT カーネルの上で動く(Win32と対等)あたりが違う。
        親コメント
        • by Anonymous Coward

          coLinuxのコード見たことあるけど、何してんのかよく分かんなかった
          ドライバからLinuxカーネルに処理が渡されてたけども、アセンブラだったから昔の技術レベルだと、ちゃんと追えなかった

          どの辺が違うんだろう…

      • by Anonymous Coward

        ユーザーランドから見た時のcoLinuxとの違いはほぼないだろうね。
        coLinuxは死んで久しいのでこれには期待してる

      • by Anonymous Coward

        coLinuxはLinuxカーネルそのものが(ユーザーモードで)動いているところが違いかな。WSLはMicrosoftがLinuxカーネル互換のAPIを再実装していて、Linuxカーネルをそのまま使っているわけではない。

アレゲは一日にしてならず -- アレゲ研究家

処理中...