Debian on WSL2

Table of Contents

Debian on WSL2

WSL2 に Debian をインストールする方法

WSL2にDebianのインストールと初期設定

こちらの記事を見ると、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上でのダウンロード速度が遅い

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関係の全体を把握できるんだな。

WSL2標準kernelでmodprobe

WSL2でeBPFのhelloworld.pyを動かすまで

カーネルのソースが提供されてるんで、頑張れば何とかなるかも知れないけど、 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!!

WSL で /tmp を RAM に配置する

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マシンにしちゃうか。えーと、どうやるんだっ けな?

Downloading 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ファイルだけを見ておけば宜しいって 事だな。

最近スピードアップしすぎで、息切れするのよ。少しゆっくりするかな。


This year's Index

Home