Debian on WSL2
Table of Contents
Debian on WSL2
こちらの記事を見ると、12.0 -> 12.1 と言う道があるようなので、やってみ る。 12.0が来たのでapt updateしたら、、、
Err:1 http://security.debian.org/debian-security bookworm-security InRelease Temporary failure resolving 'security.debian.org' Err:2 http://ftp.riken.jp/Linux/debian/debian bookworm InRelease Temporary failure resolving 'ftp.riken.jp' Err:3 http://ftp.riken.jp/Linux/debian/debian bookworm-updates InRelease Temporary failure resolving 'ftp.riken.jp' Err:4 http://ftp.riken.jp/Linux/debian/debian bookworm-backports InRelease Temporary failure resolving 'ftp.riken.jp'
このままじゃ、521Mの最小版だ。ググレ・カス。
WSL2 Ubuntu20.04でaptやpipコマンドが遅い時の解決方法(DNS)
WSL2でUbuntuを動かしたらハマった件(sudo apt-get updateできない)
DNSの設定をしたら動き出した。そして Version 12.4 777M になった。
sakae@atom:~$ cat /etc/apt/sources.list # Security updates deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware # Stable repository deb http://ftp.riken.jp/Linux/debian/debian bookworm main contrib non-free non-free-firmware deb-src http://ftp.riken.jp/Linux/debian/debian bookworm main contrib non-free non-free-firmware # Stable updates deb http://ftp.riken.jp/Linux/debian/debian bookworm-updates main contrib non-free non-free-firmware deb-src http://ftp.riken.jp/Linux/debian/debian bookworm-updates main contrib non-free non-free-firmware # Stable backports deb http://ftp.riken.jp/Linux/debian/debian bookworm-backports main contrib non-free non-free-firmware deb-src http://ftp.riken.jp/Linux/debian/debian bookworm-backports main contrib non-free non-free-firmware
副作用
Debianを有効にしたら、VMWareはどうなる? 新ためて検証。
VMWareのArchLinux/OpenBSD共、グラフ描画は、無事にできた。
でも、OpenBSDでムチャクチャにWindows側のCPU負荷が上昇する様になった。 なんで? VMWareを起動する時、 Virtual Machines with side channel mitigations enabled may exhibit performance degradation サイド・チャネルを緩和するといいよってのが出てくる。これが効くんだろう けど、生憎playerには、そのタブが無い。よって、実質OpenBSDは、使用に耐 えない。
virtualbox
ならば、Debianにvirtualboxを入れて、そこでOpenBSDを動かせばいいじゃん と言う、悪魔の様なアイデアが閃いた。
virtualboxのサイトにdeb玉があったので、取り寄せ。
sudo apt install ./virtualbox-7.0_7.0.12-159484~Debian~bookworm_amd64.deb
これで、関連品も含めて色々とインストールされた。いざ実行。
sakae@atom:~$ virtualbox WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (5.15.133.1-microsoft-standard-WSL2) or it failed to load. Please recompile the kernel module and install it by sudo /sbin/vboxconfig You will not be able to start VMs until this problem is fixed.
VBのコントロール窓は出てくるものの、こんなつれない応答。
sakae@atom:~$ sudo /sbin/vboxconfig vboxdrv.sh: Stopping VirtualBox services. vboxdrv.sh: Starting VirtualBox services. vboxdrv.sh: Building VirtualBox kernel modules. This system is currently not set up to build kernel modules. Please install the Linux kernel "header" files matching the current kernel for adding new hardware support to the system. This system is currently not set up to build kernel modules. Please install the Linux kernel "header" files matching the current kernel for adding new hardware support to the system. There were problems setting up VirtualBox. To re-start the set-up process, run /sbin/vboxconfig as root. If your system is using EFI Secure Boot you may need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.
どうしてもモジュールを作成しなおさないと駄目みたい。それにはヘッダーが 必要。virtualboxをインストールした時に、
sakae@atom:~$ ls -l /usr/src total 8 drwxr-xr-x 4 root root 4096 Jan 16 14:02 linux-headers-6.1.0-17-amd64 drwxr-xr-x 4 root root 4096 Jan 16 14:02 linux-headers-6.1.0-17-common lrwxrwxrwx 1 root root 23 Dec 30 18:31 linux-kbuild-6.1 -> ../lib/linux-kbuild-6.1 lrwxrwxrwx 1 root root 32 Oct 13 05:02 vboxhost-7.0.12 -> ../share/virtualbox/src/vboxhost
こんな風に、本来のDebianなヘッダーがインストールさ れている。
皆さんは、この壁をどうやって克服してるのだろう? とりあえず、現状認識しとく。
sakae@atom:~$ uname -r 5.15.133.1-microsoft-standard-WSL2
本来版より古いWSL2用のカーネルだな。これって、きっとウブの22.04を焦点にしたも のではなかろうか。軽く調べると、5.15だったよ。まあ、デフォでインストー ルすると、ウブがやってくるんで、当然か。ウブな会社がマイクロソフトに貢 ぎ物を差し出したんか、あるいはその逆なんかどうかは、大人の理由なんで、知らないけど。 4月になれば、白黒はっきりするな。24.04祭りがあるからね。
C:\Users\sakae>wsl --version WSL バージョン: 2.0.14.0 カーネル バージョン: 5.15.133.1-1 WSLg バージョン: 1.0.59 MSRDC バージョン: 1.2.4677 Direct3D バージョン: 1.611.1-81528511 DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows バージョン: 10.0.19045.3930
これで、wsl関係の全体を把握できるんだな。
カーネルのソースが提供されてるんで、頑張れば何とかなるかも知れないけど、 Linuxには深入りしたくないのでやらない。
VMWare Player
ならば、こちらはどうよ?
VMware-Player-Full-17.5.0-22583795.x86_64.bundle
なんてのが出てたので、
インストールしてみた。
/tmp $ cd /usr/bin /usr/bin $ ls vm* vmnet-bridge vmstat vmware-modconfig vmnet-dhcpd vmware-collect-host-support-info vmware-mount vmnet-natd vmware-fuseUI vmware-netcfg vmnet-netifup vmware-gksu vmware-networks vmnet-sniffer vmware-installer vmware-ping vmplayer vmware-license-check.sh vmware-uninstall vmrest vmware-license-enter.sh vmware-usbarbitrator
vmplayerを起動すると、カーネル・モジュールを作成するには、gcc-11が必要と 言われた。debianはgcc-12がデフォなんで、それより古い奴を要求するんか。
で、それを入れたら、今度は、やっぱり5.15なカーネル・ヘッダーが必要と言 う。もう、諦めろ。
最後の手段として、qemuを使うって方法が有るけど、それじゃOpenBSDを快適 に使うって事はできない。FuguIta 7.4, based on OpenBSD 7.4 をUSBに焼い て使うかな。
alias of eshell
debianなbashのデフォは ls に色がつく。いやらしいので、aliasの登録を抹消した。 でも、前回に誓いを立てたように、eshellを多用する。するってえと、alias を引き継ぎしてくれない。
下記の様に、eshellが動作してる時に、登録する。引数が有る場合は、 最後に $* を付ける事。エイリアスhogeの削除は、alias hogeだ。
~ $ alias hexdump 'hexdump -C $*' ~ $ alias alias hexdump hexdump -C $* alias ls ls -F $* alias wd cd /tmp
disk compress
いずこも同じ問題を孕んでいるな。色々と入れて(virtualbox等)削除したんで、 dfでの容量が1.7Gになってるのに、Windowsのアプリでは、4.39Gになってるぞ。
WSL2の仮想ディスクサイズを減らしてWindowsのディスク容量を増やす方法
WSL2 の Ubuntu または何かしらのストレージ使用量を減らすメモ
WSL ディスク領域を管理する方法(by MicroSoft)
何処を見てもウブな事ばかりなので、Debianはどうか書いておく。
Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\ext4.vhdx
圧縮しても、劇的な効果は得られなかった。ただのcompressじゃ、どこを圧縮 したら良いか判別つかないんだろうね。まさか、以前VMWareでやった様に、dd でZEROをひたすら書き込んでから、削除しておくって手は、怖くて出来ないよ。
updatedb/locate
どのOSを使うにしろ、どこのdirにどんなファイルが有るか知るのは重要。そ んなのfindで一発検索でしょ。時間がかかる。ならば事前にやってDBに登録し ておこうが、素直な解決法。BSDだと、cronで自動でやってくれる。リナはそ うなっていない。それより、そんなコマンドは、自分で入れろ。
入れてsudo updatedbしたら、Windows10の領域まで調査に出かけてしまい、膨 大な時間がかかった。なんとかしたい。ソース嫁。それよりmanが先。なにman が無い。マンガみたいなシステムだな。迷わず、sudo install man-dbしろ。
--prunepaths='path1 path2...' Directories to not put in the database, which would otherwise be. Remove any trailing slashes from the path names, otherwise updatedb won't recognise the paths you want to omit (because it uses them as regular expression patterns). The environment variable PRUNEPATHS also sets this value. Default is /tmp /usr/tmp /var/tmp /afs.
良い子はPRUNEPATHSに登録するんだろうけど、それじゃちゃんとデフォを列挙 した上で/mnt/cを追加せにゃならん。結局ソース嫁になるんで、直接に書き換 え。read-modfy-write は、ほどほどね。
# Directories to not put in the database, which would otherwise be. : ${PRUNEPATHS=" /afs : /var/tmp /mnt/c ;; add at line 168
これでOK.
もっと原始的にやるなら、updatedb する時だけ、umount /mnt/c して、 Windows10側はdebianから認知できませんと言う状況にするのも手だ。 どうせ、そんなに行き来は無いんだから、常にumountの状態でもいいか。
そんな環境を想像すると、WSL2って、Linuxしか動作しないVMWareみたいな物 だな。おまけにインストール出来るものは、
C:\Users\sakae>wsl --list --online インストールできる有効なディストリビューションの一覧を次に示します。 'wsl.exe --install <Distro>' を使用してインストールします。 NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7 Oracle Linux 8.7 OracleLinux_9_1 Oracle Linux 9.1 openSUSE-Leap-15.5 openSUSE Leap 15.5 SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4 SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5 openSUSE-Tumbleweed openSUSE Tumbleweed
に限定されてる。原理的には、plamoLinuxとかも行けると思うんだけど、どう よ? みんなマイクロソフトに飼い慣らされるのか。> お前やってみろっての は勘弁ね。
C:\Users\sakae>wsl ~ sakae@atom:~$ pwd /home/sakae sakae@atom:~$ exit logout C:\Users\sakae>wsl sakae@atom:/mnt/c/Users/sakae$ pwd /mnt/c/Users/sakae sakae@atom:/mnt/c/Users/sakae$ cd sakae@atom:~$ pwd /home/sakae
起動も上記の様に最初Linux側に行くか、Windows側に行くか、簡単に指定出来る所 が、sshしてloginするのとは、一味違うインターフェースになってるぞ。
話が逸れた。 sudo updatedb した後ならば、スイスイと検索できる。
sakae@atom:~$ locate bin/chez /usr/bin/chezscheme
tmpfs
Windows10用に導入した RAM-DiskがDebianでも認識されてて、/mnt/r にマウ ントされてた。RAM-Diskなら速いだろうと思って、rubyのtar玉をそこに展開 してみた。メチャクチャ時間がかかった。あちらの世界の事だからね。こちら のDebianサイドは、速い。身をもって体験したよ。
sakae@atom:/mnt/r$ time tar xf ruby-3.3.0.tar.gz real 1m20.365s user 0m1.647s sys 0m5.848s
sakae@atom:/tmp$ time tar xf ruby-3.3.0.tar.gz real 0m1.058s user 0m1.039s sys 0m0.338s
でも、コンパイルみたいな雑事は、tmpfsいわゆるramdiskでやりたいぞ。
~ $ cat /etc/fstab # UNCONFIGURED FSTAB FOR BASE SYSTEM
何これ。やる気Nothing!!
sakae@atom:~$ cat /etc/fstab # UNCONFIGURED FSTAB FOR BASE SYSTEM tmpfs /dev/shm tmpfs defaults 0 0 /dev/shm /tmp tmpfs defaults,size=512m 0 0
Debianをshutdownすると、/tmpの内容が消えるんで、まあ良しとしよう。
sakae@atom:~$ df -h Filesystem Size Used Avail Use% Mounted on none 1.9G 4.0K 1.9G 1% /mnt/wsl none 238G 103G 135G 44% /usr/lib/wsl/drivers /dev/sdc 1007G 1.7G 954G 1% / none 1.9G 80K 1.9G 1% /mnt/wslg none 1.9G 0 1.9G 0% /usr/lib/wsl/lib rootfs 1.9G 2.1M 1.9G 1% /init none 1.9G 0 1.9G 0% /dev none 1.9G 0 1.9G 0% /run none 1.9G 0 1.9G 0% /run/lock tmpfs 1.9G 0 1.9G 0% /run/shm none 1.9G 0 1.9G 0% /run/user tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup none 1.9G 76K 1.9G 1% /mnt/wslg/versions.txt none 1.9G 76K 1.9G 1% /mnt/wslg/doc /dev/shm 512M 0 512M 0% /tmp C:\ 238G 103G 135G 44% /mnt/c R:\ 1.0G 17M 1008M 2% /mnt/r
FreeBSD on VMWarePlayer
Windows用のVMWarePlayerも新版が出てたので、入れてみた。OpenBSDがまとも に使えるか確認。やはり駄目だわさ。
どうしても32BitなOSを入れたい、ったら、FreeBSDしかないじゃん。 14版が出てる。もうすぐ13.3が出るってタイミングだけど、実績のある13.2を チョイス。
VMwarePlayerのOS認識では、FreeBSD 10版以前ですって言われたけど、かまわ ずにインストール。無事に動いている。
これで、gdbを使って、自由に闊歩できるぞ。おっと、シリアル接続も用意し ておかねば、どうやるんだっけな?
第17章 シリアル通信 (FreeBSD Handbook)
基本をバッチリって事で、I/F誌でも特集だ。 ゼロから作るシリアル通信[UART/I2C/SPIをPicoで]
ああ、時刻が9時間ずれている。VMWareから供給されてる時刻がJSTになってる んだな。
sudo touch /etc/wall_cmos_clock
して、local timeって事を宣言したよ。
それから、FreeBSDのソース類は難解なので、OpenBSDのをそれを一式入れちゃっ た。
sakae@fb:/usr $ du -sh src/ 1.6G src/
OpenBSD on real machine
どうしてもOpenBSD(32Bit)も使いたいぞ。ならば、USBに焼いたやつが有るじゃ ん。たまに使ってみるかな。
もっと、大胆に、debian/freebsdのディアルブートにしてるパソコン(SL510) を、そっくりそのままOpenBSDマシンにしちゃうか。えーと、どうやるんだっ けな?
# dd if=install74.img of=/dev/rsd6c bs=1M
USBに焼く時は、生なデバイスを指定すのが肝か(not sd6c)。
ここまではいいんだけど、WiFi問題が最大の難関だな。 Goodbye Window7 とか、 Portable OpenBSD 2018年にやった記録。すっかり忘却の彼方です。
scheme48
前回、ひょんな事からscheme48に首をつっこんだ。48ってのは、48時間で作成 したよって事からの命名らしい。そう言えばhaskellにも同じ名前の学習講座 が有ったね。いずれも、易しいぞを意味するんだな。
でも、現在リリースされてる奴は色々と拡張されてて、とんでもない行数を誇っ ている。一番最初の、素朴なものを参照したいぞ。
現在、手にはいる一番古いものは、1998年に公開された、scheme48-0.52だ。 20世紀の彼方からやってきた物が、培養できて動きだすか? 興味津々でmake してみた。
そしたら、最後の最後で、エラーですよ。
touch .notify echo Another 0.`cat ./build/minor-version-number` \ installation. \ | mail scheme-48-notifications@martigny.ai.mit.edu mail: Cannot open mailer: No such file or directory mail: cannot send message: No such file or directory make: [Makefile:106: .notify] Error 2 (ignored)
でも、良くみると、メールを送ろうとして、メーラーが無いというエラーだ。 デッド・メールが残っていた。
[sakae@deb ~]$ cat dead.letter From sakae@deb.hoge.jp Sun Jan 21 05:39:11 2024 To: <scheme-48-notifications@martigny.ai.mit.edu> X-Mailer: mail (GNU Mailutils 3.10) Another 0.52 installation.
こんなバージョンをインストールしましたってリチャード・ストールマンの母 校にメールするんだな。多分、新版が出たら案内メールが飛んで来るんだろう。 古き良き時代だったんすね。
開発者の良きお共が、作成できるか、確認。
[sakae@deb scheme48-0.52]$ make tags etags scheme/vm/arch.scm scheme/rts/*.scm scheme/bcomp/*.scm \ scheme/*.scm scheme/env/*.scm scheme/big/*.scm scheme/link/*.scm \ scheme/opt/*.scm scheme/debug/*.scm scheme/misc/*.scm
*.c なんて対象外、とりあえずschemeファイルだけを見ておけば宜しいって 事だな。
最近スピードアップしすぎで、息切れするのよ。少しゆっくりするかな。