【Bash】Windows Subsystem for Linux【WSL】10
■ このスレッドは過去ログ倉庫に格納されています
ついに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】9
http://mao.5ch.net/test/read.cgi/linux/1607589861/ wslstorestorage.blob.core.windows.net/wslblob/wsl_graphics_update_x64.msi pwsh滞ってんぞはよしろ
wtとか代わりはいくらでもあるんだから >>7
Windows TerminalからPower Shellを使うのでは? >>8
wt→pwsh(win側)→ubuntuで使ってる
6系は怒涛のアップデでlinuxシェルとして実用域に達したと思うんだけど、7になって多分一年くらいなのにまだ7.0xでバグフィックスくらいしかしてねえっていうね
本気でlinux取り込もうと思うならMSもっと頑張れよと >>9
wtってWindowsTerminalで文脈あってるよね
ターミナル≠シェルだから代替関係になくね
あとその使い方でPowershell挟む理由何?
煽りとかじゃなく気になる >>10
ターミナルばっか力入れてシェルがなおざりって話よ
wtは別に無くても(wtがなかったからだが)いいターミナルが野良で沢山開発されてるし、そんな力入れるところなのかと
やっとpreviewでファンシーなメニュー付いたってレベルじゃねえか
win/linuxを統合して扱えるのが売りなら、シェルの開発が急務だろう >>11
ああ、代わりのターミナルは他にあるんだからwt開発するリソースをシェルにまわせってことか
理解さんくす unix風のコマンドやエイリアスも用意して、とりあえずlinuxユーザーも対話シェルとしては違和感なく使えるレベルにはなってる、と思う
しかしもうwindows powershell (v2-4くらいが入ってるんだっけ?)の印象が悪すぎる
もうとっくに開発中止&非推奨になってるけど、
わざわざクロスプラットフォーム版のpwsh(Core, v7)をgitから落としてビルドして、って物好きそんなおらんぞ 結局メイン用途であろうテスト環境に使うならbsh系スクリプトも書かなきゃならんしなぁ
一部だけ熱いファンが居るzshみたいな立ち位置になりそう WindowsのDockerはこのスレで良いの?
メインマシンにいれて色んなLinux環境立ち上げてんだけど。 >いいターミナルが野良で沢山開発されてるし
参考までに教えてくれ
WindowsTerminalの前はminttyかputty使ってて他も試したけどいいのがない 私はwt使う前はfluent terminal気に入ってたなあ
何でも入りって感じではないけど野暮ったさ無くて軽いのが良かった
今いいのがあるなら知りたいね専スレありそうだけど
つかPowershellとpwshって別物なんだ…追えてねー… >>17
それ一瞬使ったけどすぐWindowsTerminalに乗り換えたな
描画だけで言えばputty-d2ddwがいい
でもタブがないのとwslだとsshかcygterm経由なので今は使ってない
ConEmuは機能は豊富でいいんだけど設定が煩雑なのはいいとしてもUIが酷い
派生のCmderは多少マシにはなってるけど
WindowsTerminalは設定画面付いたし後は分割がもっと柔軟に出来ればいいかな パスやオプションに日本語が入ると文字が飛んだりカーソルが見えなくなったりする不具合はもうたくさん
WSLの標準ターミナルってCMDがベースだからその不具合を引きずってるのか? 僕もWindowsTerminalが今までで一番使いやすいと想うな
WSLも普通に使えるし、設定がファイルだし 設定ファイルなくならないでほしい msはjson+guiで簡単設定推してる感じなんで大丈夫でしょう(VSCodeとか 最近のMSはずっと良いMSだから次に邪悪なMSになった時はすごく邪悪なMSになりそうでこわいね emacs遣いだけど、WSLでemacs動かして画面をVcXsrvに表示している。ターミナルは殆どをshell-modeで動かして、エスケープ・シーケンスが必要な場合のみansi-term使っている。
shell-modeはdiredやtrampと連動するからとても便利。この便利さは使ったことある人にしかわからんと思うけど。 前スレでwtにXサーバ機能付いたぜ!って画像上げてた人居たな
まだストアには反映されてないけど、ぜひgitのビルドして生贄になってよ ストアでポチるだけでwin向けにXアプリ動かせるのは面白いかもね、一般ユーザ向けに
wsl(ディストロ丸ごと)+X入れるとそれだけで10GBくらい食いそうだけど、アプリ動かすだけのミニマル構成出せば受けるんじゃないかな
しかし、じゃあこれからはXで書けよ!って流れは絶対に回避したいジレンマ リリースノートかと思ってタップしたら丸ごとかよ
110MiBとかパケ死ぬところだったぜ ところで.cabなのなー
win98くらいに導入だったっね
当時zipやlzhよりずっと圧縮率高くて感動した覚えあるけど、今はどうなんだろ?
というか久々に見た 時代錯誤な…と思ってget-helpしたらextract/expandが標準コマンドなのを知らなかった
wslはwin専用なのだから一番ポータブルか、難癖みたいなこと言ってごめんよMS psreadlineいいね、bash/gnu readlineと同等の機能は揃ったか
大人の事情か、なぜ再発明したという感じはするが…とにかくすごい馬力だ
readlineと設定共有出来ないのがとても残念
補完候補が薄く表示されるのがとてもよい >>13
ubuntuだけど常に最新かは分からんがaptで一発よ、まあ apt/sources.list.dにmsのレポ追加は必要だけど
v6->v7は変更多いのにデフォルトで/usr/local/microsoft/powershellを直接置き換えやがる
併存させたいならaptに任せずmakefile読んでビルドするべき 普通ホストゲスト両方にPowerShell入れるものなの?
ジョブ投げるだけならpwsh(--shutdown)
wsl linuxonlycmd arg1...
みたいに投げれるし、前スレかで誰かが言ってたwin側から投げるの利点、win/linuxのジョブをシームレスに扱えるというのもあるわけで それでもインタラクティブシェルで入って中から弄れるのにはやっぱり便利と思うし、
環境変数とか慣習に合わせてちゃんとしてくれる、エンコードをよろしく扱ってくれるとか利点は確かに多いんだけどやはり二重に入れるとギガが死ぬのが辛いんだわ
wslだけ立ち上げて、そこにwinのpwshから接続するような感じで使えたらいい感じそうで…
やり方知ってる人居たら教えてほしい とりあえず/etc/shellsに/mnt/c/.../pwshをブチ込んでみるか… windowsでpwsh --helpするの
Unix系OSでログインシェルとして使うにはpwsh -l/-loginオプションを指定し、shellsに追記、chsh
とは書いてある
しかしすぐ下にwslで(windows版の)pwshは現在サポートされてませんと明記されているぞ
非推奨だけどオプション用意して手順まで書く、ってのはすなわち人柱待ちじゃないかろうか
そのうちサポートするつもりとも読める
コードベースが同一で、linux/MacOS向けリリースはまともに動くので、やろうと思えばできるだろう
人柱になろう ですかー
NTFSのstream(ads)とかlinuxで使えない、かつファイルシステム関連で危なさそうな機能触るとどうなるんだろうか?とか思いました じゃあdocs二重に入れてるのは重複削除でもしますか
100メガ弱のがja/enそれぞれホストゲストに入って4倍っていうね
なんかあっても単なる.mdだし最悪読める
日本語訳は7.2まで仕上がっててすごいと思うんだけど、誤訳やマークアップのズレがすごく機械翻訳っぽいな、MSのヘルプサイト感そのまま…
まあ雰囲気で読めるからそれでも重宝だけど readlineは#includeするだけで汚染されるやべーやつなので
CLISP事件参照 mingw-w64で作成したWindowsプログラムから随時ファイルに書き出したテキストを
wsl2側のtail -f で監視したいのだけど更新されません
無理なんすかね? >>41
mingwに詳しくないかけど、見たいの動的なテキストだし多分関係ないよね?
gc /mnt/c/.../log -tail 1 -wait
(powershell on ubuntu)
とかじゃダメ?こんな感じのやった事はある
ログはホスト/ゲストどっちのファイルシステムにあるの?(上の例ではテキストがホスト上、シェルはゲスト側で稼働) >>42
有難うございます
gcって何ですか? graphvizにも同名のコマンドがありますが違いそうだし...
>mingwに詳しくないかけど、見たいの動的なテキストだし多分関係ないよね?
おっしゃる通りmingwなのは重要ではなく,テキストをファイルに書き出すシンプルなwindowsのプログラムです
>ログはホスト/ゲストどっちのファイルシステムにあるの?(上の例ではテキストがホスト上、シェルはゲスト側で稼働)
ログはホスト上でシェルはゲストで可動しています
あれ?! ゲストのファイルシステムにホスト側からアクセスできましたっけ? そもそもシステム跨いでのストリーム処理とか一体どうなってるのか怪しからん…
モニタするのはホスト側からじゃダメ?なの?
linuxのtailが使いたいという理由ならwsl -- tail -fでホスト側からも呼べる、結局ストリームはシステム跨ぐわけで、解決になるかは不明だけど >>43
\\wsl\distro-nameがwslの/に対応してるよ、逆は上に書いた/mnt/driveletter >>41
tailだと無理っぽいねぇ
かったるいけどless使うとか、開いてから大文字Fでtailっぽく使える いろいろアイデアを有難うございます
帰宅していますので(家にはWin機がない)
明日試させて頂きます >>34
そのエロ動画一本消せば両方入れて十二分に余るだろ
$profile, psreadline、.Net Core機能とホストゲストどっちからも問題なく動くコマンド叩くだけのpwshスクリプトだけ共有
分けた方が面倒は減る >>43,48
ごめんgcはget-contentって言うpowershellのコマンドです、wslスレはみんなドザーなんだろうと、てっきり
cattacwcheadtailnkfテキスト入出力全部入りみたいなヤツです、(代わりにちょっと重いけど)linuxにもポートされてるのでぜひ >>47
とりあえずwsl内のpwshからwinのfilesystemにtail -fが効かないことと、gc -tail 1 -waitは効く事を確認した
PS C:\Users\doser>notepad.exe
aaa
bbb
ccc
でtmp.txtを作成、dd, eeを追記し保存はステイしておく PS C:\Users\doser> wsl -u doser
Welcome to Ubuntu 20.04 LTS
; ~/.profile, ~/.login Loaded.
; $profile Loaded.
PowerShell 7.20 ...
PS ub20:doser> (gcm tail).source
/usr/bin/tail
PS ub20:/home/doser> tail --version
tail (GNU Coreutils) 8.30
PS ub20:/home/doser> tail -f ./winhome/tmp.txt
aaa
bbb
ccc
(ここで追記するも反応なし.)
PS ub20:/home/doser> gc --tail 10 -wait ./winhome/tmp.txt
aaa
bbb
ccc
ddd
ee
(ここでメモ帳に追記、保存)
ff
g wslの問題、ではあるんだろうが、
tail相当のコマンドが対応してるかしてないかって話だな
~/winhomeは/mnt/c/Users/doserへのシムリングです(NTFS)
何が優れてるとかじゃなく、wsl用に拵えたシェルのビルトインコマンドなんだから動いて当たり前ですよね、むしろ動かなければ炎上案件
取り敢えずubuntuならapt にpackages.microsoft.com/ubuntu/...レポを追加して
sudo apt install powershell[-preview|-lts]で目的は達せるはず >>41
windowsプログラムで\\wsl側に書き出すとか シェル自体も多分関係ない
PS ub20:doser> (gcm dash).source
/usr/bin/dash
PS ub20:doser> dash -l
$ pwd
/home/doser
以下同様 というかlinux側からそのままwinプログラム呼べる(パスはデフォルトで引き継いでいる)んだから、カレントディレクトリに書き出せば終わり
win側からext3/4へ書き込むのは多分umask?の問題で推奨されなかったはず(直ってたらごめん) wslゲストからNTFSを扱うのは全く問題無い、というかオーバーヘッドが減るしNTFSのADS機能も使えるので、/homeはC:\Users\へのsymlinkにするのがベストプラクティス
マウントするんじゃないぞ、既にマウントされてそこからパス通してるので 書き込み激しい/tmpもNTFSにした方が便利かも
VMが借りた領域なかなか返さないので
30GB位まで膨らんだらdiskpartで20GBくらい取り戻すを繰り返してる >>57
それやっちゃうと、Win32ビルドのプログラムにより作成されるドットファイルが競合する >>59
確かに自動で上書きしちゃうようなお行儀悪いプログラム居ると困るね、衝突が無いか確認は必要
無責任な発言すまんかった
まあ設定ファイルの名前衝突しても、マトモなプログラムはエラー吐いてくれると信じたいが
vimなんかはwinではホームに_vimrc作るけど、それは昔からだから多分関係ないか
特に環境依存部分は無かったので統合したな、というかエイヤっと…
vimから呼ぶコンパイラを絶対パス指定してる人なんかだとifで分ける作業が要るかも
フレッシュなユーザー作って/homeでなくユーザーホームをリンクにして試すとよいかも あと、winはケースインセンシティブなんで、その辺で問題起きるかも?
Docとdocを作ろうとするとちゃんと拒まれるし、そういう事はすべきでないと思うから、リネームの手間が要るだけで何かマズイ事は起きないはずだが
確かwinもケースセンシティブに設定出来たはずだけど怖いからやってない そしてそのhomeはonedriveで管理してるんだけど、win合法ファイル名でも怒られることがあるな
これがポータビリティ矯正ギプス… >>49,52
そんなものがあるんですね!
[方法1]
>>50,51
有難うございます
linux版pwshのgcでwindowsのファイルシステム(FS)のファイルの書き込みを監視できることを確認しました
gc hoge.txt -tail 1 -wait
[方法2]
>>53,55
wslのFSへのファイルの書き込みをtail -fで監視できることを確認しました
tail -f hoge.txt
>>56,57,58
書き込みのオーバーヘッドを考えて方法1にしようかなと思います
久々のLinux板ですが相変わらず皆さん素晴らしいですね ROMってたけどクソためになる流れでありがたい
ひとつ教えてほしいんですけど>>46でtail -fをless +Fで代用するのがかったるいって何故ですか?
最近覚えてこれは便利と思ってたので特定の状況で問題になるなら知りたい >>64
lessの中でFコマンド使わなきゃならないからtailに比べると2度手間でかったるい
って意図で書いたよ
lessにはそこまで詳しくなくてアレだけど、引数で行けるならほぼ同等の使い勝手になるかなぁ
ヒアドキュメントでコマンド食わせる事もできるかも知れないけど、未確認 >>65
>>66
ありがとうございます
こっちもless使い始めてまだ日が浅いけど、
less +F foo.log で代用してました
今回のtail -fで更新効かないとこlessならいけるかは前提とか諸々含めて未確認ですけど時間あるときやってみます
あざした! Windows Subsystem for Linux Update - 5.10.16
Windows Subsystem for Linux WSLg Preview - 1.0.17
次のInsiderビルドでWSLGは公式に来るみたいね
WSLg Previewはビルド21362以降じゃないと入らないとの事
(今最新のInsiderビルドは21359) 67だけどwslからwin側のリアルタイムログ監視を
less +F /mnt/c/foo.log
で可能なことを確認したよ
もう解決してるけど何かの参考になれば幸い >>70
有難うございます
私の方でも確認できました
実は端末はemacsのshellモードなのですが
gcはshellモードでは表示が崩れるのでless +Fを使うことにしました
(ただしgcもtermモードでは問題なく使えます) vim:term bash/pwsh on X on pwsh on bash on linux on pwsh on wt on windows! Linux GUIアプリがWindowsで動作 〜Microsoft、新しいWSL 2機能「WSLg」を初期プレビュー
Dev版Windows 10 Build 21364以降で利用可能
https://forest.watch.impress.co.jp/docs/news/1320369.html >>74
“wsl --update”でWSLをアップデートするだけでGUIのLinuxアプリを利用できる。
これあかんやろ
小さい内蔵SSDでやりくりしてる俺はX関連全部切ってるんですけど まだプレビューなんだから、提案してくればいいんでは?
ちなみに、WSLGのvhdは約350MB(リードオンリーなんで使ってても増えない)、5.10.16.3のカーネルが約70MB パッケマネにリクエスト送ってmesa関連の依存が数GBって出てそっnした記憶 あとglもぞろぞろと
まあXのせいじゃないけど大体依存してるよねって話 shell scriptから音楽を聞くのにwslだと面倒くさそうなので
Windowsの音楽プレーヤーを呼んでお茶を濁してたけど 、音も出るようになるみたいだな >>50
そういやnotepadはファイルロックしないかわいい子だったな 早くstableに降りてくれ
linuxの莫大なGUIパッケージが使えるのは頼もしい >>82
VcXsrvとか非公式なものは入れたくない 公式のものしかつかわないの?
「公式」の定義も曖昧だけど あ、いや、それはわかってる。VcXsrvだって怪しい物じゃないし、MS謹製でない他のものだって使ってるだろうにと思っただけ VcXsrvが怪しいものじゃないってのは、それってあなたの感想ですよね
私はMS製のほうを使いたいだけです WSLgではfontforgeは上手く動かなかった > 非公式なものは入れたくない
のに
> linuxの莫大なGUIパッケージ
はいいんだ… >>89
それ気になるね
ASTEC-XみたいにMS-IMEと連携できればいいのだけれど Terminal もMS以外で良いのがあるかもしれないが、Windows Terminalを使いたいとか、まぁ、分からんでもない FileZillaとか、emaxsとか、TeraTermとか、VcXsrvとか、その他たくさん個人的にちゃんとした物だと思うので使ってます。
Windows Terminalはよくできているので使っている >>89
少なくとも標準状態ではWindows側のIMEは使えないみたい 最近のMS謹製はブランドマークになりつつあるな
10年位前のMS謹製はゴミの代名詞だったなあ…
やればできる子 >>96
10年くらい前はWindows使ってなかったの?
それともゴミだと思っていたのを使ってたの? Ubuntu 18.04が起動しなくなったので再インストールしようとしたら
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80070057
Error: 0x80070057 ???????????????
Press any key to continue...
となってインストールできない Ubuntu 18.04だけじゃないわ
他のWSLインストールしても同じメッセージが現れて動かない
ググってもわからないし
唯一使えてるのが以前インストールしたUbuntu20.04 ストアからではなくマイクロソフトのサイトからダウンロードして手動でインストールしたら行けた ■ このスレッドは過去ログ倉庫に格納されています