【Bash】Windows Subsystem for Linux【WSL】3
レス数が900を超えています。1000を超えると表示できなくなるよ。
まずapt updateした際にどういうエラーなのか何も情報がないから答えようがない
なんでこういう人って最初のエラー情報伏せて自分が調べました情報しか出さないのかね
またubuntu のバージョンも分からない
githubのそのページ、17.10での記事だけど リポジトリを cosmic にして apt full-upgrade すると lxd 絡みでエラー中断しますね
まぁお試し環境なので構いませんが バックアップとってWSL入れ直ししたほうが早いな。
俺ならそうするし時間が勿体無い。
またハマったら今度は真面目に考える。 なんか解決しました
カスペが悪さをしていたようで、切ったら通信するようになりました 今流行のセキュリティソフトがMITMになってTLS覗き見るやつか
滅びればいいのに MITMしてなくてもファイアウォールがPico Process未対応でとりあえずはじくみたいなうんこもある 2018 Fall Updateでパフォーマンス改善したっていう記事よんだけど、
実機との数十倍の速度差と、改善が頭打ちしてるんじゃないか
という不安を気づかせてくれただけだった
誤差レベルの改善は気が付けないよ Ubuntu 18.04.1 LTS (Bionic Beaver) で apt-get upgrade に失敗。以下はそのログ。
apt-get --fix-missing はすでに試したけどダメ。
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
libfreetype6
Use 'sudo apt autoremove' to remove it.
The following packages will be upgraded:
apt apt-utils libapt-pkg5.0 libpython3.6 libpython3.6-minimal libpython3.6-stdlib plymouth plymouth-theme-ubuntu-text python3.6 python3.6-minimal
10 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 1464 kB/7764 kB of archives.
After this operation, 24.6 kB disk space will be freed.
Do you want to continue? [Y/n] Y
Err:1 http://220.152.35.182:80/data/049c5cdfd0f56e49/archive.ubuntu.com/ubuntu bionic-updates/main amd64 apt amd64 1.6.3ubuntu0.1
Redirection loop encountered
Err:2 http://220.152.35.182:80/data/049c6fdf7af62761/archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3.6 amd64 3.6.6-1~18.04
Redirection loop encountered
Err:3 http://220.152.35.182:80/data/049c0bdff0f7907a/archive.ubuntu.com/ubuntu bionic-updates/main amd64 plymouth amd64 0.9.3-1ubuntu7.18.04.1
Redirection loop encountered
E: Failed to fetch http://220.152.35.182:80/data/049c5cdfd0f56e49/archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.6.3ubuntu0.1_amd64.deb Redirection loop encountered
E: Failed to fetch http://220.152.35.182:80/data/049c6fdf7af62761/archive.ubuntu.com/ubuntu/pool/main/p/python3.6/python3.6_3.6.6-1~18.04_amd64.deb Redirection loop encountered
E: Failed to fetch http://220.152.35.182:80/data/049c0bdff0f7907a/archive.ubuntu.com/ubuntu/pool/main/p/plymouth/plymouth_0.9.3-1ubuntu7.18.04.1_amd64.deb Redirection loop encountered
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? 俺はリアルLinux環境でもjaistにしてるな。 18.10にしてarchive.ubuntu.com/ubuntu/のままだけど今は問題ないな
日本サーバーに置き換えとくか 漏れは、Ubuntu 16.04 だけど、
/etc/apt/sources.list を空ファイルにして、
(削除するとエラーになったので)
/etc/apt/sources.list.d/ に、iij.list, jaist.list の2つのファイルを置いてる 今さっき、apt update したら、
iij, jaist の混合で、伝送速度は、1.4MB/s だった SSHクライアント:Debian
SSHサーバー:Windows10
DOSプロンプトからWSLのbashを起動すると改行がおかしくなる
おためしあれ プログラミングもLinuxも初心者なんだがmsys2から乗り換える価値あるかな? >>821
Windows 側から、Linux 側を触っちゃいけない。
必ず、Linux側から、Windows側を触る
>>822
WSL には、GUI が無いけど。
それに、Docker も動かない GUIは準備すれば表示できる
dockerも動かす事は可能
誤りすぎだろ… X410はオススメ
やたら割引してて怪しかったけど、評判は良かったので入れてみた。 October Update で Docker の最新版が動くといううわさは本当? やっぱり動きましたか。MS_SLAVEのサポートによるものとか。
Docker for Windows も要らなくなるのかぁ。 >>827
もひとつ教えて。
docker exec は動く? WSLがリリースされた時、将来はDockerが動くかも?と思っていたが
まさかこんなに早く動くようになるとはな
まあ、パフォーマンスの点でまだDocker for Windowsを置き換えることには
ならないと思ってるけど、パフォーマンスの問題が解決したら
Docker for Windowsとは違って仮想マシンにいくらメモリを
割り当てるかを悩まなくて良くなるから嬉しいな
個人的にはWSLはforkの速度を上げてほしい
Linuxネイティブの10倍の遅さだからな forkもだけど、disk i/o が遅いのもなんたかならないかな。
仮想化のLinuxの方が速いのはなんか納得できない。
でもWindows上でLinuxディストリビューションがそのまま動き、
Windowsとも連携できる。そしてそれをMicrosoftがサポートして
いる。Windows 8の頃はMicrosoft大丈夫かなぁとの思いがあったが、
最近はMacに移行したユーザを呼び戻せるOSになってきたなぁと
嬉しく思うよ。 エクスプローラがlinuxパスで開けるようになればなお良いが。 >>836
エクスプローラのフォルダをShift押しながら右クリック
メニューの「Linux シェルをここに開く」で行けるでしょ?
それとも wslpath コマンドでパス変換すればできることの話? もう、普通にLinux使ってWindowsはVMにしろ。 >>821
コマンドプロンプトのデフォルト文字コードは、sjis だからじゃない?
utf-8 に設定すれば?
PowerShell ならデフォルトで、utf-8 もしかしてVolFsの領域をエクスプローラーで開きたいと言っている?
それはやってはいけないこととなっている。 ファイル更新時に、ファイルのメタ情報が
消えてしまうって問題だろうから
アプリが対応すれば編集できると思うんだけどね >>843
windowsが提供するAPI側の問題だからアプリだけでとうなるものでもないんじゃないかな wsl上のubuntuで /dev/ttyS1 のパーミッションを666にしたのに再起動したら
644に戻ってしまいます。
忘れないようにしたいのですがいい方法はないでしょうか?
win10pro1804
ubuntu 18.04
を使ってます >>846
コンピューターが覚えていて、起動したら覚えておいた通りに設定して欲しいのです。 >>848
なるほど
もしかしたら私あてかと思ってキーワードをググったらこういうのがあるんですね
root権限がいるみたいなのでttyのパーミッション変更も自動でできそうですね。
帰ったら試してみます。
せっかくのアドバイスを頂いたのに申し訳ないのですが、
普通のファイルのパーミッションを変更したら、特段なにもせずとも
パーミッションは変更されたままですよね。
そういう感じにすることはできないのでしょうか? >>849
/dev/ttyS1 が作成されるタイミングで 666 で作るようにする。
がよいと思う。
前は /etc/inittab でできたと思っている。
けれど最近の Ubuntu は老人に優しくないのでよく分からない… >>849
あとは /dev/ttyS1 のパーミッションが 644 ではなくて 664 なら使うユーザを所有しているグループに入れるという解決も考えられたかなあ。 ああ。その、 /dev/ttyS1 というのは特殊なファイルで、
停止するときには消去され、起動するたびに新しく作成されています。
なので、パーミッションを保存しているのでは?
というのは当てはまらないケース。 >>850-852
ありがとうございます。
ttyは起動する度に生成されるんですね。
と言うことはrc.localの編集がよさそうですね。 >> 849
ごめん、根本的にどこやっつければいいのかみつけた。
`/lib/udev/rules.d/50-udev-default.rules` というのがあるんだけど
そのうちの
`KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"`
この行の末尾に `MODE="0666"` にすると
たぶん起動されるたびに 666 で生成される。
ただ、緩める方向の変更なのでファイルの役割について
理解して作業することをオススメします。
# 理由があって先人の考えた規定値が 644 なんで。 >>884
> windowsが提供するAPI側の問題だからアプリだけでとうなるものでもないんじゃないかな
おいおい。WSLはWindowsで提供されてるAPIを使用して動いてるんだぞ。
APIに問題があるわけ無いだろ >>854
ありがとうございます。
これの場合、シリアルに繋がってる例えばUPSなんかが乗っ取られて勝手にダウンさせられるかもしれないですね。
うちは学習用のマイコンを繋ぐだけですが、ちょっと怖いので
どちらにするか考えて決めようと思います。 >>857
MODE="0664" にして、キャラクターデバイスを使う
ユーザのグルーブを増やすという選択肢もあるよ。 >>844
CreateFileのhTemplateFileに指定するだけで拡張ファイル属性を自動でコピーしてくれんのにWindows API側のどこに問題があんだよ 家に帰ってきたので試してみました。
最近のubuntuは/etc/rc.localがなくなっているようなので
スクリプトを作ってサービスに登録しましたが、パーミッションは変わりませんでした。
sudo chmod 666 /dev/ttyS1
でもダメで、おそらく初めてsudoコマンドを使うとパスワードが求められるのがネックになってるような気がしました。
仕方ないので、>>854が紹介してくれた方法で
#KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout", MODE="0666"
こんな感じに変更してみました(#〜の行が元あった設定)。
ですが、はやり反映されません。
MODE設定の書き方が間違ってるのでしょうか? ? なんの話をしてるんだ?
ここWSLのスレだろ?
rc.localとかLinux起動時に行われる処理がWSLで動くわけ無いだろ
WSLではすでにLinuxに相当するWindowsが起動してるんだから udevもOSのサポートが必須でパッケージ入れれば使えるようなもんじゃないから
まだ実装されてないんじゃないのか? > ユーザのグルーブを増やすという選択肢もあるよ。
これが一番正しい解決方法だろ
セキュリティの理由もあるのでパーミッションを緩めてはだめだ
/dev/ttyS1はデフォルトで正しいパーミッションになってるんだから
ttyS1を使えるグループにユーザーを追加するだけ >>861
なるほど、できないのですか
ならばどうしたらいいでしょうか? 自己レス
> セキュリティの理由もあるのでパーミッションを緩めてはだめだ
一応念の為。WSLの中で見えるパーミッションは所詮WSLの世界から見える
架空のパーミッションでしか無いので、WSLの世界でrootになったからといって
本当にWindowsのAdministrator権限を持っているわけじゃないので
ユーザーができることしかできない
セキュリティ云々は考え方としての話な。
誰でも触れることを意図する変更はやったらだめということ >>863
ユーザーをrootにするということですか?
グループのパーミッションは現状4です。 >>866
ユーザーをdialoutグループに追加しろって話だ
Linuxの基本やで >>867
今は/dev/ttyS1のパーミッションは660になってる 1803だとownerはrootだけど1809だとdialoutになってる? sudo gpasswd -a `whoami` dialout
でいいのか? 1809なら多分それでいいんだろうけど1803だとこんなんだから
crw-r----- 1 root root 4, 64 Oct 29 22:21 /dev/ttyS0
起動時にNOPASSWDなsudoでchmodやchownするスクリプト走らせるみたいな方法しか思いつかんわ コマンドの挙動、よく分からなくてこわいから vigr するわ。オレなら。 https://twitter.com/0xbadfca11/status/1053802978656702464
X410 ってやつの割引期間終わっても次の割引期間が始まるよって書き込みあったけど本当やんけ。場所が場所なら景品表示法で怒られるやつ。
https://twitter.com/5chan_nel (5ch newer account) >>873
> 起動時にNOPASSWDなsudoでchmodやchownするスクリプト走らせるみたいな方法しか思いつかんわ
WSLに限って言えば、WSL環境内でsudo使っても、実際にはWSLを実行している
ユーザー権限で動いているわけでセキュリティ的にはなんの問題もない気がする
setuidしたコマンドを実行するとか? setuidは知ってはいたが意識して使ったこと無いのでやってみたわ
まずsetuidはバイナリじゃないと有効にならないのでシェルスクリプト
とかではなくC言語などのバイナリ吐ける言語で作る必要がある
例えば以下の内容のファイルを作って、gcc ファイル名.c とかでコンパイルする
(gccは適当に入れろな)
#include <sys/stat.h>
int main()
{
chmod("/dev/ttyS1", 0666);
}
a.out(適当名前に変更どうぞ)が作られるから、
sudo chown root:root a.out
sudo chmod +s a.out
あとはsudoとか使わなくてもroot権限(ファイルの所有者)で
動いてくれるので.bashrcとかに書いて実行すればよかろう
ちなみに、/dev/ttyS1 決め打ちなのは手抜きというより引数で自由なパスを
指定できるようにすると、セキュリティ的に問題があるのであえてそうしている
つまりこのコマンドはどう実行しても /dev/ttyS1 しか変えられんというわけだ
自分専用のツールならこの程度で十分だろう 日経Linux 11月号の付録
WSL 特集、100 ページの冊子
DVD は、Ubuntu 18.04.1 LTS 日本語 Remix, 64bit, ブータブル、
Mint 19 Cinnamon v2, 64bit, ブータブル/ISO、
Lubuntu 18.04.1 LTS, 64bit, ISO 100ページも特集することあるのかね。
Linuxのコマンドリファレンスかも。 linuxは既にデュアルブートで動かしてるからdvdはいいけど100ページのってのは気になる mecab用の最新辞書からデータベースファイルをコンパイルする目的でWSLを使ってる。
Windowsのmecab.exeでも同じデータベースファイルを使えるからだけど。 WSLのdebian日本語化(locale,man)だけで
http://www.atmarkit.co.jp/ait/articles/1810/26/news035.html
これだけ書けるんだから、水増しはいくらでもできるだろうけど、
いちおうlinux専門誌だから、どんな視点で記事を依頼してるかだね
linuxユーザから見たら、10倍以上遅いlinuxもどきだろうし、
dbだとさらに差がつくし > linuxユーザから見たら、10倍以上遅いlinuxもどきだろうし、
そんなに遅く感じることはない npm/yarnで開発環境準備すると、
linux on 10年前のcore2duoラップトップ
のほうが
wsl on 第7世代core-i5&SSDラップトップ
よりも早く終わるわ
あと、sqliteがやたら遅くなるのが解せない Linuxの人ってインストールだけして喜んでる人多いよね
セットアップ時間が短縮した!とか言って喜んでるの
そこしか判断できないからなんだろうけど >>888
vscodeの裏で走るnpmも遅いけど、wsl上のvscodeはたまに
windows側からもkillできない死に方しちゃってこっちのほうが面倒。
windowsのvscode使って、開発支援は各language server経由ってのが
増えそうだけど、そうなるとhyper-V上のdockerのほうが良くなるような SQLiteが遅いのはファイルシステムのせいだろう。
WSLのファイルアクセスが遅いから足引っ張ってる。 kill出来ないなら1809からだけど、wslconfig /terminateで再起動しちゃえば良いのでは 何度も言うけど、I/Oが遅いのは、MicrosoftがさっさとNTFSを捨てないから。
さっさと、NTFSなんか捨てるべき。 >>892
1809より前でもwslサービス停止させればkillできたけど、
書き込み処理中でも強引に全体を終了させるからファイル
破損すると被害大きかった https://www.sqlite.org/download.html
から
SQLiteの公式バイナリ落として、WindowsネイティブとLinux on WSLとでどれくらい違いがあるんだろうか?
単純なSQLでベンチマーク取ってみると10倍くらい差が出そう。 NTFSが原因ではないでしょ。WindowsネイティブとLinux on WSLはともにNTFSなのだから。 >>895
たとえば、
openbenchmarkにある、同じマシンでのsqliteへのinsertionテストで
ubuntuだと2.27秒の処理がwindows binaryだと24秒で十倍くらい
さらに同じマシンで
ubuntu:2.62秒、Ubuntu@wslで60秒
となってる
このベンチ取った人はopenbenchmarkの中の人
test suite見るとwindowsのsqliteは32bit版みたい
https://openbenchmarking.org/system/1810126-SK-WSLWINDOW35/Windows%2010%20October%20WSL >>898
いくら32bitのEXEでも遅すぎる・・・ワロタww 遅いのはマジでNTFSのせいかもしれんな。
>>893を疑ったけどその通りみたいだw 前スレで自分がそもそもNTFSが遅いんじゃないかと書いたらボロクソに叩かれたのを思い出したわw
http://mao.5ch.net/test/read.cgi/linux/1468149353/715-721n
しかしNTFSってWindows Serverとかでも使われてるわけで、もしNTFSが原因で一桁遅いんだったら、IISとかSQL Serverとか遅くて製品として成り立たなくなっちゃうと思うんだけど、そういう話は聞いたことないしなあ。 >>898
NTFSが原因ってことは、
それがexFATにしたら10倍になるってこと?
exFATはえーなw >>902
> 前スレで自分がそもそもNTFSが遅いんじゃないかと書いたらボロクソに叩かれたのを思い出したわw
そりゃそうだな。
NTFSが遅いと仮定するならば、NTFSから変更すれば
Windowsは爆速になると言っているようなもんだ
少し考えばありえないってことぐらいわかるだろう Linux on VirtualBox on Windows はバリバリ速いよ。
NTFS上の1ファイルにファイルシステムがあるから?
やはりDefenderとかが悪さしているのかも。調べてみるか。 >>898
10倍っていうのはforkの遅さと一致するんだわ
俺の計測だと、Linuxではfork1回で0.2ミリ秒だがWSLだと2.5ミリ秒になる
たった10000回forkしただけでLinuxで2秒がWSLで25秒になるわけだ レス数が900を超えています。1000を超えると表示できなくなるよ。