【Bash】Windows Subsystem for Linux【WSL】11
■ このスレッドは過去ログ倉庫に格納されています
ついにWSL2が登場したぜー。こりゃ完全にLinuxだ。ヒャッハー!WSL最高!開発にLinuxは使わねぇー。Windowsで開発してLinuxは動かすだけや!
WSL2アーキテクチャ
https://www.atmarkit.co.jp/ait/articles/1906/14/news019.html
WSL 2では、仮想マシン環境が起動し、bashがコマンドを受け付けるまで2秒程度という速度で起動できる。
このため、コマンドプロンプトなどからwsl.exeなどを使ってbashコマンドを処理する時間は、
現在のWSL 1とほとんど変わらない。また、本物のLinux実行環境であるため、
これまで正しく動作できなかったアプリケーション、例えばコンテナシステム(Dockerなど)や
ユーザーファイルシステム(FUSEなど)も動作させることができる。その上で、現在のWSL 1と同等の機能と使い勝手を実現するという。
WSL 2はWSL 1を置き換えずに併存する
WSL 2が登場したからといって、WSL 1は廃止になるわけではなく、引き続き利用可能である。
ファイル共有プロトコル「9P」でWSL 1との互換性を確保
このように、WSL 2とWin32環境の間のファイル共有は、どちらも9Pを使うことになる。
また、WSLからWin32プログラムを起動する「Win32相互運用性」では、最初にWSL側で、
実行ファイルを判別する必要がある。具体的には、実行ファイル先頭のマジックナンバー
(Win32ではMZ)を見て、LinuxのELF64か、Win32の実行ファイルなのかを判断する。
◆前スレ
【Bash】Windows Subsystem for Linux【WSL】10
https://mao.5ch.net/test/read.cgi/linux/1615976083/ WindowsもシェルでCUIライクに操作したいということでpowershellに期待してたけど、どうしても見劣りするなぁ
仕事柄社内の人間にも使ってもらう必要があって、シェル操作するためだけにWSL入れてくださいとか言うのは抵抗感あったんだけど、やっぱ使わざるを得ないな >>777
> WindowsもシェルでCUIライクに操作したいということでpowershellに期待してたけど、どうしても見劣りするなぁ
純粋に機能だけ見たらPowerShellの圧勝だと思うけど、見劣りする部分って何? windowsアップデートして再起動したら
windows側からhttp://localhostでwsl2のapacheにアクセスできなくなった
ip addressコマンドで表示されるeth0のアドレスを直打ちしたら接続できる
たすけてー!!! >>777
シェル使いたいならbusybox-w32使えば?
バイナリ1ファイルの上にbusyboxだから
たくさんのコマンドが内蔵されてるよ >>778
見劣りと言うか文化が違うって感じだろうね
普通に使いたいコマンドが使えないってのもあるけど >>781
自分が理解できない文化は劣等だ!
って感じ?
典型的な老害にしか見えないけど… >>786
お前のバカさしかわからんがw
具体的に書けないから黙ってなよ >>787
まさかと思うが>>777に書いてあるとか言い出すんじゃないよな?w
普通の頭持ってりゃなぜ>>777がそんなこと書いたのかを聞いてることぐらいはわかるだろ おっと盛り上げてしまったようだね
>>778
>純粋に機能だけ見たらPowerShellの圧勝
そうなんだっけ?ごめん、実はpowershellあんま詳しくないんだわ
そういう意味では見劣りっていうのは言い過ぎと言うか嘘
powershellをbashやzshライクにするネタはあるけど同じにはならないし
powershellの文法とかコマンドを覚える気はないわ
どうせまた別のが出てくるしアホくさい まだまだ破壊的変更繰り返してるから安定はしてないが好きだよpwsh
こっそりディストロwslビルドのデフォルトシェルにするつもりだったりして
preview登録してると毎月何度も更新しろ通知はうざいけど >>785
その情報は古すぎます
今はデフォルトで localhostForwarding=True になっています
試しにやってみましたがダメでした なんかwindos側にポートフォワーディングの設定が残ってたのでそれを削除したら解決しました
netsh interface portproxy show all
ipv4 をリッスンする: ipv4 に接続する:
Address Port Address Port
--------------- ---------- --------------- ----------
* 80 172.23.114.3 80
netsh interface portproxy delete v4tov4 listenport=80 listenaddres=* pwshは良くも悪くもperl焼き直しって感じ
インタラクティブにはワンライナーの短さが売り、コマンド/パラメータの機械的な短縮規約、|, $_, %, ?で溢れかえるperl以上のラインノイズ
全体的にラグいけど、通常シェル関数とは別にawk丸パクリのBEGIN/ENDを備えたフィルタ定義を使えば最適化されてかなりパフォーマンス出る
というか同じcoreリリースでもwin上よりwsl上の方が軽快なのはなんなんだろうか
最近のリリースでは外部コマンド間のパイプはオプション付けずともpodで流すようになったから、win/linuxのパイプ実装の差? セキュアなスクリプティングもできるのも売りだけど、あんまり普及してないから、自分用には便利でも配るスクリプトは結局dash/pythonで書いてしまうなあ Cmder素晴らしいなこれ
エクスプローラでコピペした\なパスをそのまま貼り付けられるのが素敵 powershellとposix系は単純にアプローチ違うだけでしょ
powershellはどっちかというとSQLに近いテキスト処理だと思ってる。文字列処理じゃなくて機能処理。
コマンド型のAPIって考えたほうが良い。クロスプラットフォームだし。
多分ちゃんと学べば使えるだろうけど、使う機会がない。
あと外部コマンド挟むと結局PowerShellのスタイルが崩れるからなかなかきれいなスクリプトが書きにくそう。
究極言えばWSL上でPowershell動かしCoreutilsのコマンドにbindingできるっちゃあできるだろうし >>775
分割ターミナル、マウス操作不要、大抵のLinuxで利用可能、コマンドラインセッションを複数セッション・複数ウィンドウ保持、コマンド一発でセッション復帰 >>804
POSIX(bashでもいいけど)ではWindowsのGUI処理とかむりだしね。 テキスト入出力のパイプ処理は行毎だからunixコマンドとの相性はいいと思う
コマンド組み立てるにも、パイプ噛ますにもperl風regexpや置換演算子"..." -f使えるのは便利だと思った
対話でpretty表示されてるのは入力型毎にフォーマット指定が定義できる(されてる)からで、カスタマイズしてもいいし、多分|ft, |fl …(format-table, list)で都度見やすく整形するのが柔軟
column, fmtみたいなもん 慣れた外部コマンドだけ使うとして、とりあえず-join, -split, -f, slsだけ覚えれば行志向処理に便利なシェルとして使えるんじゃなかろうか
普通スクリプト言語に投げるような構造化テキスト/データのパースも、[xml]等キャスト演算子を前置するだけで配列/辞書に入る
パイプや配列の挙動が分からなくても、とりあえず|% {... $_ } (foreach)で愚直に書ける
内部コマンド(コマンドレット)覚えるのはその後でいいよ powershellはwindowsシスアドコマンド発行する為のものみたいな風潮は根強い
ググってもそんなんばっかだしな
幸いヘルプはinfo並みに詳しいし、トピック毎のgh about_*を読むのが最良 >powershellはwindowsシスアドコマンド発行する為のものみたいな風潮は根強い
当分こうでしょ
Windowsはシェル文化じゃないし ん?、シェル文化ってなんだ?
DOS由来ならまぁ少しは説明つくけど、NT由来でCLIは取ってつけたようなもんだろうから、コンセプトはやはりGUIでPowershellとかもオプション扱いが妥当では? スマホ端末でwin11動かして、そのwin11上でAndroid動かすロマン termuxが死んでuserlandも更新が停滞している状況では、良いニュース…なのかな
正直スマホの画面ではターミナルつつくにしてもステータスやデータの確認とか
せいぜいスクリプトの微調整くらいが限界だけど
タブレットで縦画面で使えれば、夢のダイナブックの実現だわ… >>821
こちらが参考になるのでわないでしょうか?
【Termux】Google Play のTermuxはもうメンテされませーん!って言われているんだけれど…
https://blog.goo.ne.jp/oprsfr3saku/e/c444f349f809a94083e16e50b538f05b >>809
俺は.NET言語の1つだと思ってるよ。
オブジェクト指向で.NETのクラスライブラリが使えて独自のdllも読み込めるし。
向いてはないだろうけどやろうと思えばC#並のことはできるんじゃないかな。 dotnetのサンプルコードがc♯だから敬遠してた俺も居る
例えばこのサンプル
https://docs.microsoft.com/en-us/dotnet/standard/base-types/grouping-constructs-in-regular-expressions
[regex]::Regex.Matchesと呼ばなくても-match演算子でフル機能使えるとか最近気付いた
PS> "<abc><mno<xyz>>" -match "^[^<>]*(((?'Open'<)[^<>]*)+((?'Close-Open'>)[^<>]*)+)*(?(Open)(?!))$"; $matches
でワンライナーいける
詳細はdotnetのページ見てね、じゃなくてpwshっぽい書き方を示してほしい 要するに
win開発に興味無くて、単にwsl+pwshでシームレスに使いたい俺みたいな層としては、get-help -exampleでpwsh版の用例が引けると嬉しい >>831
このシリーズ良いregexpチュートリアルだね、言語関係なく
機械翻訳がやばいけど windowsのカーネルがlinuxに置き換わる事はあるんだろうか GUI周りをウェブにしてきてるからフロントエンドだけ提供することは可能だけど、抱き合わせのOfficeスイートができないから旨味がないね。 Windowsがなくなるとしたら6G7Gくらいの超高速通信時代になって、一般ユーザがガチのシンクライアントな端末しか持たなくなったらだろうな >>838
サーバー上にWindowsがあるからなくならないよ。 wsl2&docker desktop で windows開発環境構築しやすくなってよいですな
vscode の remote container むっちゃ楽 >>842
kwsk
なぜ捨てたの?なにかに移行したの? 商用有償で大企業でもなきゃ捨てたってことじゃない? やだよ
俺の座右の銘はフリーライド
金を払うなど論外 WSL2の軽量VMの稼働時間を知りたいと思ったのですが
uptimeの結果が妙です
軽量VMを再起動してもそれがuptimeの表示に反映せず、また全ての軽量VMで同じ結果になります
個々の軽量VMの稼働時間を知りたい場合どうすればいいのでしょうか? 無理なんじゃね?
カーネル共有してるんだから
WSL2はだから仮想マシンよりも省メモリなんだよ 適当にファイル作成してその差を見ればいいんじゃね? initの起動した時刻を取得すればいいんでは?
秒まで必要ならlstartとかある すみません。
素人の質問で申し訳ないが、
仮想マシン(Synology NAS)上のWindowsではWSL2は無理ですよね?
(WSL1は動いた。) >>855
DSMがNested Virtualizationを有効にしてないから、そのままでは無理
sshとかで入って設定を弄れば出来るかもしれないけど、ハードルは高いかと >>856
ありがとう。
あまりWSL1で困ってないのでそのまま使います。 >>855
それ、そもそも何をしようとしてますか?
というのはDSM)に docker 導入してdocker コンテナのレポジトリの中からUbuntu インストールするてもあるかと思いまして…
余計なお世話かもしれませんが ここが変だよ「WSL2」
自作ディストロ開発で発見した知られざる“バグ”と“事実”
https://logmi.jp/tech/articles/326106
前回の「Kernel VM online Part3」で、実はWSLは、自分でディストロを作れるんだよとお話ししました。
Distrodというものを作りました。これはlinuxcontainers.orgからディストロのイメージを落としてきて、システムで動かしながらそれをWSLインスタントして動かすソフトになっています。便利なので使ってみてください。 >>858
ありがとう。
やりたいことは単なるテキスト処理です。
awk,sed,nkfなどが動けばいいだけなので。 >>860
その程度ならmingwもあるし、wsl1でも全く問題ない。 つまりググるかsynologyスレに行って、DSMでsshを有効にする方法やdpkgで必要なパッケージをインストールする方法を確認するほうがが速いかもしれません。
【高機能】 Synology 総合 part29
https://mevius.5ch.net/test/read.cgi/hard/1644919788/ >>862
相変わらずダメ文字があるので、
残念ながら使えない 皆さん、ありがとうございます!
WSLを使い慣れているのでWSL1を使おうと思います。 WSLのおかげで素のLinuxマシンが減ってるらしい WSLかChromebookかラズパイかクラウド(VPSやIaaS等)か メモリ馬鹿食いするしVMにLinux入れたほうがよくね VMにLinux入れると、ディストリ毎にメモリ食うんだよね
WSL2はカーネルは全ディストリで共有だから軽いし
起動がものすごく速い。2秒とかで起動する。 WSL2ってVM+コンテナだよね?
VMに軽量Linux入れてその中でLXC使えばいいんじゃね VM未起動でも数秒で起動するのがいいよね、下手にカスタマイズしたPowerShellより早いかもしれん Windows Integrationがやはり強みだと思う。
エクスプローラーから全部覗けるし、逆も然り
Win11なら、概ねのXアプリも一応動く。gnuplot とか。
だけど軽い。
Office やTeamsが必要だけどLinux便利でいろいろしたいひとには便利
というかsshのコンソールとしてだけでも意味ある 正直インテグレーションは筋が悪いと思う、wsl同梱のコマンド類はネイティブなので、windowsファイルシステム上で使うと不正なファイルを作りがち(pwshスレで聞きかじり)
pwshは稀有なファイルシステムawareなので、インテグレーション運用したいならベスト
重いのはパワーアピールの為にデフォルトで要らんもんわんさかロードしてるので*-Moduleで要らんものパージすると快適、細かい事分からんなら-no-...系のオプションとりあえず付けるのがよい
パス通ってる.ps1等対応スクリプトをパースして引数補完するのが特に重い…便利ではあるけど
大量に俺々コマンド書くようなヘビーユーザでない限り、パース不要な内部コマンドの補完だけで十分だと思うので、デフォルトにするべきじゃないと思うわ >>871
VMに軽量Linux入れてその中でLXC使って
WSL2のマネをするぐらいなら
WSL2を使うという理屈だよ ■ このスレッドは過去ログ倉庫に格納されています