【Bash】Windows Subsystem for Linux【WSL】7
■ このスレッドは過去ログ倉庫に格納されています
ヒャッハー!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】6
https://mao.5ch.net/test/read.cgi/linux/1560665525/ >>720
wsl1にて、ubuntu20.04でsleepはやはり使えなかったよ。
debian testingは今のところglibc2.30なので問題なし。 sleepは使えなかったとか書くと
sleepコマンドが使えないとか勘違いされそうw >>722
未実装のシステムコールを呼んでいるのでsleepコマンドは使えないよ ViertuelBoxとかVMwちすかいでいいだろ WSL2使ってみたけどIPアドレス周りはやっぱり使いづらい
いっそのことブリッジ接続にしてmDNSで名前解決した方が使いやすいと思う ブリッジ接続に変えられる様にして欲しいよな
ポート転送接待するの面倒い >>731
ちゃんとローカルIPアドレスで接続できるようになったでしょ? >>732
ポート転送する必要もなく
ローカルIPアドレス+開いたポート番号で
問題なく接続できるようになってる だけど、WSL2環境からホストのWindows環境はlocalhostで接続できないよな?
ifconfigでIPアドレス調べないとダメだったはず。 WSL用の仮想LANがパブリックネットワーク扱いなのはどうなんだぜ >>735
IPアドレスを調べるっていうのだけが問題なら
ホストのWindowsには名前が付いてそれは変わらないんだから
普通にホスト名で接続できるでしょ?
>>736
Windowsでサービスを起動する
Windows上のWSL上でサービスを起動する
どちらで起動しても外からは同じように見えるようにするためじゃね? >>738
ん?今の話が仮想にしたら何か解決するわけ?
WSLに関する話が理解できないからって
仮想に逃げるのやめなよ >>740
外部から接続したいなら、
普通にWindowsのIPアドレスで接続できるだろ
ファイアウォールでポート開けてないだけでは? >>10
こんなスレはあきらかに、Windows板に立てるべき話題。
あきらかに、板の存在意義に反している。
この板の自治はどうなっているんや?
Linuxと、それ以外(Windowsなど)を明確に分けるべき。
さもなければ、Linux板が宣伝に利用され、さらにはドザによる荒らしも生じる。
>>1の内容は、明らかにこの板(Linux)に対する荒らしではないか。
許しては今後どんどんひどくなるぞ。
削除依頼出した方がいいと思う。 Linux開発者の多くがWSL上で作業するようになるので、この板に在ったほうが良くないですか? 削除依頼は公開されるのでファンネル使ったほうが良いんですよ。
俺は意見を言っただけ、あいつらが勝手にやったと言えるので。 X410の良いところはストアからインストールするだけで使えるところですね。 この星の無数の塵の一つだと
今の僕には理解出来ない♪ >>741
外部からはポート転送の設定しないとアクセスできないだろ?
試しにファイアーウォール無効にしてやってみたけど出来なかった WSL は、Windows でgrep できないから、Linux を使うためのもの
Windowsには興味がなくて、Linuxに興味があるから、この板でよい >>753
いやだからそれしか方法無いってことでしょ? >>755
WSL1を使うという方法もある
WSL2はWSL1の代替ではなく両方メンテナンスされる
動作モードの違いのようなもの
WSL1とWSL2はモードの切替に数分かかるものの相互に変換できる
またDockerを使う方法もある。ただしUbuntuに直接入れるのではなく
Docker for Windowsを使うこと。これはWSLから接続することも出来るが
WSLを必要とせず、コマンドライン+Windowsでも動作するものなのだから
外部から接続することも出来るだろう >>754
じゃあ、>>1の一行目っていりますかね?
はじめから付いてた? >>757
明らかに低度の低い荒らしがいるわけで、
気にしないで放置してるとLinux板が腐ってくるよ。 wsl2を使ってみているんだけど、Linux側からwsl.exe -l -vをやると、コマンドの出力にnull文字が沢山含まれている。
どうしてだろ? >>761
普通はWindowsのコマンドはコードページを変えるとそのコードページに合わせて
文字コードを切り替えるようになってるんだけどねぇ
wsl.exeの出力はコマンドプロンプトでchcp 65001してもchcp 437しても
切り替わらない。何故か常にUnicode(UTF16)ででてる
wsl.exeはもちろん英語でも対応してるんだから文字コードを
切り替えることができるはずなんだけど
wsl.exeのバグだろうね
https://github.com/microsoft/WSL/issues/4607 >>762
UTF-16かぁ。とりあえず不具合ということでスッキリした。ありがとう。 -l -vの出力にASCII外の文字がないのは幸いだったな nkfはasciiと判別するんだよな。-W16L付けると変換してくれるけど、wsl.exeのバグが修正されるとまたおかしくなる。スクリプト書くときの話です。 WSL2いいなぁ。WSL1と同様、瞬時に起動する。dockerも使えたし、sshfsなんかも動くんだね。 >>765
今の時代nkfとか日本専用のツール使うの卒業しろよ。iconv使え。
wsl.exeのバグが修正されたらとかあとで考えればいいと思うが
wsl.exe --helpの2バイト目がnull文字かどうかで判断すればいいだけだぞ
シェルスクリプトではnull文字は直接扱えないから
cut?head?とod使うことになるだろうけど >>767
nkf は Ubuntu のディストリビューションに標準で入っているよ。
iconvは入力文字の自動判定ができないので、nkfを使ってみたんだけど、
結局自動判定できなかった。
公開するコマンドに組み込んで使いたいので、バグの修正後も動くものに
したい。結局、以下のどちらかにしようと思う。後者の方が良さそう。
wsl.exe -l -v | tr -d '\0' | tr -d '\r'
wsl.exe -l -v | sed 's/[^[:print:]]//g あ、ごめん。nkf は cmigemo の依存パッケージでした。
おそらく、cmigemo をインストールしたときに一緒に入ったんだと思う。
公開するコマンドということから、nkf は使うべきでないコマンドでした。 iconvも必ずしも入ってるか?と言われたら疑問残るけどね
POSIXで規定されてるとは言えたしか比較的最近の話だったはずだし
ああでもDockerイメージのdebianもcentosもalpineですら入ってるのか
なら問題ないかもな
あとは本質的にはWindows側の問題なんだからwsl.exeのラッパーバッチファイルとか
作るってのもありかもね。バッチファイルでできるかしらんけど
できなきゃvbscriptやpowershellを使うとかね 日本語のために必要なツールなんだから、
別にどれ使ったっていいんだよ
今でもlessの文字化け対策にlv併用してるくらいだわ どれ使ってもいいなら、なおのことiconvでしょ?
POSIX準拠 Ruby は標準で、NKF も入っている
nkf(Network Kanji code conversion Filter, https://osdn.net/projects/nkf/) を
Ruby から使うためのモジュールです
NKF.guess(文字列)で、文字コードをそこそこ推測できる スクリプトとかでは使わんけどnkfのほうがコマンドとしては簡単だから手打ちでは使うな WSL2でもmount typeでdrvfs使えるんだね。
ファイルサーバのマウントはcifsに置き換えかと思っていたら肩透かし。 sleepコマンドが使えない件、Slowビルド19041.208では未解決だけど、Fastビルド19619.1000では解決されてた。 マジか・・・
着実に出来が良くなってきてるな。
もう、WSL 2の方がいいな。 初めてWindows10にubuntu入れたが日本語表記しない
どうすればいいん?
ubuntuはマイクロのストアからものですん 完全に本当のUbuntuと同じやり方で
日本語化するんだなw 来週の月例の日にぶつけてくるんじゃないかと・・・
1909もそうだったし。 Windows Terminalは、結局、bold表示には対応しないままRC1になっちゃいましたね
対応の方法について思ったよりも広範囲で論争になってるみたい
https://github.com/microsoft/terminal/issues/109
全角記号に日本語全角フォントを使ってくれないのも残念なままですが、
こっちはUnicodeレベルでぐちゃぐちゃだからなぁ > Windows Terminalは、結局、bold表示には対応しないままRC1になっちゃいましたね
bold表示に対応してる端末なんてあるの? >>790
https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
元の仕様は8色しかなく、名前を付けただけでした。SGRパラメータ30?37は前景色を選択し、
40?47は背景を選択しました。かなりの数の端末が、異なるフォントではなく明るい色として
「太字」(SGRコード1)を実装したため、8つの追加の前景色が提供されました。
bold = 明るい色のこと CRTの頃の実装なら、高輝度は確かにより太っては見えるしな wslってdockerとかコンパイラとか開発環境いれていく以外に便利な使い道あるの?
windowsで動かないけど、wslでなら動く便利ツールが存在するとか 365日サーバー稼働している俺には必要ない
Teratermで充分 今であればVSCodeとRemote Developmentが使えるところだな ちょっと聞きたいけどwslによるlinuxってどこにインコされるの?
network>wsl>linuxみたいだけど
windows上からは見れないんだよね実際にwindows上のどこにあるの? %LocalAppData%\Packages以下にある
ストアアプリのデータと同じ場所 >>800
WSL1はNTFS上(ApoData配下の深いところ。Windowsからアクセスする時は、\\wsl$から行かないとだめ)
WSL2はHyper-Vの仮想マシンのディスク上(こちらも\\wsl$からアクセスできる) >WSL2はHyper-Vの仮想マシンのディスク
ってどこにあるんだろうな。.vhdxだろうけど。 >>796
どういう用途にbash使ってるのかしりたい
個人的にはコマンドをパイプで組み合わせるくらいならwindowsで困ってない
(xargsをwindowsでは使いたくないけど)
batかくよりshell scriptが書きたいはわかる
windows上のファイルをbashやshell上のファイラーで管理するのは茨の道だと思ってたんだが
そうでもない? >>806
誰も答えないので。自分の場合はだけど、ファイラーはemacsのdiredを使っている。
ファイル開くのは f 押すのみ。emacsカスタマイズして、Windowsのドキュメント
もemacsから開けるようにしているので、explorerあまり使わない。
ファイルのコピーや移動はwdiredってのを使うと、2つのdiredバッファ間で c や r で
対応できる。sshにはtrampってのを使ってやはりそこでもdired使っている。開いた
diredバッファ間でやはりwdired使えるので、WinSCPは一切使わない。というか
インストールもしていない。bashはshell-modeっての開いている。ANSI端末である
必要があれば、ansi-termってのもある。shell-modeはtrampの接続先でも使えるので、
ターミナルソフトも使わない。なのでTera Termもインストールしていない。
という、変な使い方をしている人も居るということで。 >>795
MS「開発に便利なWSL作ったで!」
開発者「うぉー!」
お前「開発以外で何が便利なの?」 所で何時正式発表有るのよ
いい加減待ちくたびれたわ Insider Preview リングで入れて、すぐにオフでいいんでない? ■ このスレッドは過去ログ倉庫に格納されています