more vmware
Table of Contents
free
Lubuntuにして、メモリーの使用状況がどうなるか計測してみた。
sakae@lu:~$ free -m total used free shared buff/cache available Mem: 7824 899 6442 75 790 6925 Swap: 511 0 511 sakae@lu:~$ free -m total used free shared buff/cache available Mem: 7824 1407 5583 167 1238 6417 Swap: 511 0 511 sakae@lu:~$ free -m total used free shared buff/cache available Mem: 7824 1847 4614 347 1952 5976 Swap: 511 0 511 sakae@lu:~$ free -m total used free shared buff/cache available Mem: 7824 1921 3966 346 2526 5902 Swap: 511 0 511
一番上から順番に、起動直後でMLtermを開いて相棒のemacs(server)が動作してる状態。 次は、google-chromeも起動させてメールをチェックしてる。3番目は、firefoxも起動 してwebの閲覧。最後は、それに飽きたので、vmplayerでOpenBSDを起動して、ソースの 閲覧に移った。
vmplayerを起動する時、swapが現在512Mだけど、1Gにして貰えたらパフォーマンスが 最高になりまっせと案内してくるんだよな。そんなヘビーな使い方はしないし、 メモリー欠乏症の兆候もないんで、このままでいいか。まあ、ゲストのOpenBSDには、 メモリーを2G分け与えているけど、慎ましいOSで460Mしか消費していない。
ruby 3.4.1
つくって学ぶプログラミング言語 RubyによるScheme処理系の実装
こんな楽しい書籍が公開されているのね。年始からワクワク。それはいいんだけど 元となるRubyを入れていないぞ。aptから入れてもいいんだけど、折角なので コンパイラー系の試験も兼ねて、自分でやってみよう。Matzさんのプレゼントも 有る事だし。
./configure --enable-shared
したら最後に、こんな風にコンパイル・インストールするからねと報告が出た。
time make -j4
して、全速力でコンパイル開始。んが、途中でエラーですよ。libssl-devと libyaml-devが無いよと言う嫌がらせが有ったぞ。そんなのconfigure時に 教えて欲しいぞ。まあ、来年は大丈夫でしょう。今年のコンパイル時間記録は 4分弱だったよ。
sharedのオプションを付けているんで、本体はこんくらい。
sakae@lu:~$ ls -lh /usr/local/bin/ruby -rwxr-xr-x 1 root root 221K 1月 6 07:07 /usr/local/bin/ruby*
本体がこれで済むはずは無い。
sakae@lu:~$ ldd /usr/local/bin/ruby linux-vdso.so.1 (0x00007ffc971d1000) libruby.so.3.4 => /usr/local/lib/libruby.so.3.4 (0x00007b18d1c00000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007b18d231b000) libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007b18d22e1000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007b18d1b17000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007b18d1800000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007b18d22b1000) /lib64/ld-linux-x86-64.so.2 (0x00007b18d2353000) sakae@lu:~$ ls -lh /usr/local/lib/libruby.so.3.4.1 -rwxr-xr-x 1 root root 20M 1月 6 07:05 /usr/local/lib/libruby.so.3.4.1*
実態は20Mも有るんだ。sharedにしてないと、rubyを起動する度に、20Mがガバガバと 消費されていく。sheradにしてると、複数のrubyを起動しても、それが避けられる。
何で、このご利益を利用しない? 多分Railsに忖度してるんだろう。一度rubyを起動 すればキャッシュに載るから、2度目はshared無しだと起動が速い。対してshared版だと、 起動時に、動的なリンクと言う余分な工程が入ってしまって、遅くなる。それを 嫌ったんでしょうな。
sakae@lu:~$ ls -lh /usr/bin/python3.12 -rwxr-xr-x 1 root root 7.7M 11月 7 03:32 /usr/bin/python3.12* sakae@lu:~$ ldd /usr/bin/python3.12 linux-vdso.so.1 (0x00007ffc85368000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007092b8253000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007092b8237000) libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007092b820c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007092b7e00000) /lib64/ld-linux-x86-64.so.2 (0x00007092b8353000) sakae@lu:~$
一応、rubyの好敵手であるpythonも確認しとく。rubyに比べて軽い仕上りだなあ。その分 は、わんさかと用意されてるライブラリィーで補う方針なんだな。
port 902
ちょっと悪戯心が湧いたので、OpenBSD機からLubuntu機に向けてnmapしてみた。
Starting Nmap 7.92 ( https://nmap.org ) at 2025-01-09 06:02 JST Nmap scan report for lu (xxx.xxx.xxx.xxx) Host is up (0.0061s latency). Not shown: 998 closed tcp ports (conn-refused) PORT STATE SERVICE 22/tcp open ssh 902/tcp open iss-realsecure Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds
22番さんは同意するけど、902番って何や? /etc/servicesにも登録されていない、 闇番号だぞ。しかも権力が有るっぽい。こういうのは世間に聞いてみるしかない。 いや世間と言ういいまわしは、日本でしか通用しないぞ。国際的には社会ね、なんて 事を、同調圧力って本で、最近知った。
ふーん、vmwareが引き連れてきたポートなのか。どんな反応をするか叩いてみる。
sakae@lu:~$ nc localhost 902 220 VMware Authentication Daemon Version 1.10: SSL Required, ServerDaemonProtocol:SOAP, MKSDisplayProtocol:VNC , VMXARGS supported, NFCSSL supported/t, SHA256 supported
気味が悪いのでブロックしておきたいんだけど、Lubuntuの場合は火壁はオプションになる のかな。それより、Ubuntuの標準火壁ってどんな奴なんだろう?
firewall
火壁を設定してみる。一応複数のサイトを参照しときます。
Ubuntu22.04.2 LTSのufw(ファイアウォールツール)の設定方法
なんか、簡単すぎる気がしないでもないけど。たまにログを見てね、だな。
setup
まずは火壁を立てて、全ての穴が塞がっている事を確認した。 この状態でも死活状況のビーコン(ping)には返答するのね。ICMPとは別枠なのかな? それともufwで何とか出来るのかな?
次にレスキュー用の穴を一つだけ開けたよ。もし何か有った時の、頼みの綱になる からね。
sakae@lu:~$ sudo cat /etc/ufw/user.rules : ### tuple ### allow any 22 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 22 -j ACCEPT -A ufw-user-input -p udp --dport 22 -j ACCEPT
何を心配してるかって言うと、ハングして、どうにもならなくなった時の事さ。 インストールに使ったUSBも大事に保存しといた方が良いらしい。最悪そのUSBから ブートして、インストールせずに試してみるを選ぶと、SDDとは関係なくRAMだけで使えるそうなんで、 SDDをレスキューできるぞ。
sakae@lu:~$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 244711864 49919052 182289308 22% / /dev/sda1 306572 7932 298640 3% /boot/efi
こんな配置になってるんだね。
OpenBSDとの回廊
Lubuntuをインストールする時、OpenBSDとの情報交換用エリアを設定しようとしていて 忘れてしまっていた。上の /boot/efi って、ひょっとしてOpenBSDからもアクセス可能な msdosになっていないかな?
USB-HDDに鎮座してるOpenBSDを起動して確認してみる。
eq$ disklabel sd0 # /dev/rsd0c: type: SCSI disk: SCSI disk : 16 partitions: # size offset fstype [fsize bsize cpg] c: 500118192 0 unused i: 614400 4096 MSDOS j: 499484954 618496 ext2fs
どうやらiパーテションが、/dev/sda1 に、jパーテションが /dev/sda2 として見えるっぽい。
eq$ doas mount -t msdos /dev/sd0i /CVS eq$ tree /CVS /CVS `-- EFI |-- BOOT | |-- BOOTX64.EFI | |-- fbx64.efi | `-- mmx64.efi `-- ubuntu |-- BOOTX64.CSV |-- grub.cfg |-- grubx64.efi |-- mmx64.efi `-- shimx64.efi eq$ df -h Filesystem Size Used Avail Capacity Mounted on : /dev/sd0i 299M 7.7M 292M 3% /CVS
250Mぐらいは問題なく利用出来るな。実際にdirを作成してmemoを置いてみた。 但し、書き込みできるのは、rootだけだけど。
sakae@lu:/boot/efi$ tree . ├── EFI │ ├── BOOT │ │ ├── BOOTX64.EFI │ │ ├── fbx64.efi │ │ └── mmx64.efi │ └── ubuntu │ ├── BOOTX64.CSV │ ├── grub.cfg │ ├── grubx64.efi │ ├── mmx64.efi │ └── shimx64.efi └── zCOMM └── memo
これで、わざわざファイルサーバーを起動する必要は無くなったな。
GUI <–> CUI
次に心配なのはguiがグチャグチャになってしまう事。そんな時にはCUIな端末が 欲しくなるぞ。
Q: Lubuntuについて質問します。 DeskTopのグラフィカルな画面から、CUIなコンソール画面に 切り替えには、どうしますか? また、戻る方法も教えて ください。
A: Lubuntu(Ubuntuの軽量版)では、デスクトップ環境(GUI)とコンソール画面(CUI)の切り替えが可能です。以下にその方法を説明します。
—
### 1. GUIからCUIに切り替える方法
コンソール画面に切り替えるには、以下のキーボードショートカットを使用します:
- `Ctrl` + `Alt` + `F1` から `F6`
これらのキーのいずれかを押すと、仮想コンソール(TTY)に切り替わります。たとえば:
- `Ctrl` + `Alt` + `F1` でTTY1
- `Ctrl` + `Alt` + `F2` でTTY2
- 以下同様にF6まで選択可能です。
仮想コンソールに切り替えた後、ログインプロンプトが表示されるので、以下を入力してログインします:
- ユーザー名を入力し、`Enter`
- パスワードを入力し、`Enter` (パスワードは表示されませんが、そのまま入力してください。)
—
### 2. CUIからGUIに戻る方法
GUI画面に戻るには、以下のキーボードショートカットを使用します:
- `Ctrl` + `Alt` + `F7` Lubuntuでは通常、GUIセッションはTTY7に割り当てられています。
もし`F7`で戻れない場合は、`Ctrl` + `Alt` + `F2` から `F6` を試してみてください。GUIセッションが別のTTYに割り当てられていることがあります。
—
### 注意点
- Lubuntuのバージョンや設定によっては、GUIが`F7`ではなく他のTTYに割り当てられている場合があります。その場合は他のファンクションキーを試してください。
- 仮想コンソールを終了する際には、セッションのセキュリティを確保するためにログアウト(`exit` コマンド)を忘れずに行ってください。
何か他に質問があればお気軽にどうぞ!
—
鵜呑みにしないで、自分で確認するのが常識ってもんです。その結果は、
Ctl + Alt + F4 で、CUIに突入
Ctl + Alt + F2 で、GUIに復帰
なんだけど、CUIでは、CapsLock -> Ctl が有効になっていないんで、真のCtlキーを 使う事。CapaLockは、大文字効果になるんで、あれれ とならない様に注意。同じ 注意は、vmwareが作成するWindowからカーソルを引き剥すのに使われる、Ctl + Alt のキーコンビネーションにも言える事だ。CUIなフォントサイズが鬼のように細かいなあ。 何処を変更すれば良いの?
rust
久し振りのrust種。
Rustプロジェクトのビルド高速化に関するベストプラクティス
以下のようにすると、どこでコンパイルに手間取ってるか、簡単に視覚化できる。 こういうのが有るって事は、時間がかかるって事だね。
cargo test --timings --no-run
これで、長年の疑問が氷解した。よかった、よかった。ありがとう!
reboot
Ctl + Alt + t するとQTerminalが起動する。その端末でvmplayer & して、OpenBSDを 起動。端末からssh vm して、OpenBSDにログイン。そこでtmuxしてあげると、まともに emacsが使えるなあ。なんでだ? 嬉しい発見である。
ソースを追跡する時の儀式を実施。ctagsを止めてetagsでemacs用のTAGSを作成。
--- Makefile.org Mon Jan 6 07:26:01 2025 +++ Makefile Mon Jan 6 07:36:02 2025 @@ -34,7 +34,7 @@ eval "SFILES=\"`make -V SFILES -f $${TDIR}/Makefile`\"" && \ eval "CFILES=\"`make -V CFILES -f $${TDIR}/Makefile`\"" && \ eval "AFILES=\"`make -V AFILES -f $${TDIR}/Makefile`\"" && \ - ctags -wd -f ${TAGS} $${CFILES} $${HFILES} && \ + etags $${CFILES} $${HFILES} && \ egrep "^[_A-Z]*ENTRY[_A-Z]*\(.*\)" $${SFILES} $${AFILES} | \ sed "s;\\([^:]*\\):\\([^(]*\\)(\\([^, )]*\\)\\(.*\\);\\3 \\1 /^\\2(\\3\\4$$/;" \ >> ${TAGS} && \
実際にタグを作成して、それを中心地にコピーしておく。
doas make tags doas cp TAGS /sys/kern
で、前回の続きで、電源断の仕組み解析。 kern_xxx.c
reboot から
/sys/arch/amd64/amd64/machdep.c のbootへと案内された。
if NACPI > 0 && !defined(SMALL_KERNEL) extern int acpi_enabled; if (acpi_enabled) { delay(500000); if ((howto & RB_POWERDOWN) != 0) acpi_powerdown(); } #endif
舞台は、dev/acpi/acpi.cへと推移する。電源の制御系ってドライバーなんだな。
/* XXX * We are going to do AML execution but are not in the acpi thread. * We do not know if the acpi thread is sleeping on acpiec in some * intermediate context. Wish us luck. */ void acpi_powerdown(void) { int state = ACPI_STATE_S5, s; struct acpi_softc *sc = acpi_softc; if (acpi_enabled == 0) return; s = splhigh(); intr_disable(); cold = 1; /* 1st powerdown AML step: _PTS(tostate) */ aml_node_setval(sc, sc->sc_pts, state); acpi_disable_allgpes(sc); acpi_enable_wakegpes(sc, state); /* 2nd powerdown AML step: _GTS(tostate) */ aml_node_setval(sc, sc->sc_gts, state); acpi_sleep_pm(sc, state); panic("acpi S5 transition did not happen"); while (1) ; }
acpi_sleep_pm
で制御レジスターに書き込みをすると、電源が切れるっぽい。
よく見ると、このドライバー群の中に、scpisony.c とか scpithinkpad.c なんていう
固有ベンダー名のソースが混在してる。それから、昔懐かしいapmなんてのも散見
される。
i386な石用には、apmの使用も考慮されてた。
if NAPM > 0 if ((howto & RB_POWERDOWN) != 0) { int rv; printf("\nAttempting to power down...\n"); /* * Turn off, if we can. But try to turn disk off and * wait a bit first--some disk drives are slow to * clean up and users have reported disk corruption. * * If apm_set_powstate() fails the first time, don't * try to turn the system off. */ delay(500000); apm_set_powstate(APM_DEV_DISK(0xff), APM_SYS_OFF); delay(500000); rv = apm_set_powstate(APM_DEV_DISK(0xff), APM_SYS_OFF); if (rv == 0 || rv == ENXIO) { delay(500000); (void) apm_set_powstate(APM_DEV_ALLDEVS, APM_SYS_OFF); } } #endif
あっ、これインストールの終了時に、よく見るな。こんな所で出してたのか。
printf("\n"); printf("The operating system has halted.\n"); printf("Please press any key to reboot.\n\n"); cnpollc(1); /* for proper keyboard command handling */ cngetc(); cnpollc(0);
more vmware
上記をやる時、端末からvmplyerを起動した。他にも色々な起動方法が有るので 列挙してみる。これもそれも、土台がWindowsと違って、見通しが良いからである。 まあ、オイラーはWindowsが嫌いなんで深く追求しなかったせいも有るけど。
by CUI
最初に起動した方法だと、仮想マシンをマウスで選択して、起動をツンツンする必要が ある。そんなのオイラー的には許せない。そういう我侭に答てくれる起動方法が下記。 起動時に仮想マシンの設定ファイルを指定すればOK。コマンド列が長いとお感じ なら、エイリアスにしちゃえば良い。
sakae@lu:~$ vmplayer /var/my/vmware/OpenBSD/OpenBSD.vmx & [1] 5810 sakae@lu:~$ [AppLoader] Use shipped Linux kernel AIO access library. An up-to-date "libaio" or "libaio1" package from your system is preferred. I/O warning : failed to load external entity "/etc/vmware/hostd/proxy.xml" Warning: program compiled against libxml 212 using older 209 sakae@lu:~$ ssh vm sakae@vm's password: Last login: Fri Jan 10 07:04:31 2025 from 192.168.92.1 OpenBSD 7.6 (GENERIC.MP) #338: Mon Sep 30 08:55:35 MDT 2024 Welcome to OpenBSD: The proactively secure Unix-like operating system. vm$
微妙に、Lubuntuの版が古くなってるのかな。vmwareの新版が出たと喜んでアップデート したら大変な事になりそうな予感。普通に動いていたら、もう、それでいいじゃないかって 達観が必要だな。
by GUI
Lubuntuの オンライン・マニュアル を斜め読みした成果です。
Win + r するとランナーってアプレットが走って、画面上部に質問Boxが出てきます。 そこに、vm ぐらいを入力すると、コマンドが補完され、vmplayerとvmworkstationの 候補が列挙される。矢印キーで目的のコマンドを指定すればOK。Windowsなユーザーにも 優しいインターフェースです。
Winキーを叩くと、メニューが左下から立ち上がってきます。大分類なので、上下 矢印キーで、 システムツールまで移動。そこで、右矢印。小分類を上下矢印キーで移動してから選択。
気がつけば、オイラーって、とことんマウス嫌いですねぇ。
by vmrun
ブロード・コムのサイト をウロウロしてて見付けた奴。
Usage: vmrun [AUTHENTICATION-FLAGS] COMMAND [PARAMETERS] AUTHENTICATION-FLAGS -------------------- These must appear before the command and any command parameters. -T <hostType> (ws|fusion||player) -vp <password for encrypted virtual machine> -gu <userName in guest OS> -gp <password in guest OS> Examples: Starting a virtual machine with Workstation on a Windows host vmrun -T ws start "c:\my VMs\myVM.vmx" Running a program in a virtual machine with Workstation on a Windows host with Windows guest vmrun -T ws -gu guestUser -gp guestPassword runProgramInGuest "c:\my VMs\myVM.vmx" "c:\Program Files\myProgram.exe"
sakae@lu:~$ vmrun -T player start /var/my/vmware/OpenBSD/OpenBSD.vmx Warning: program compiled against libxml 212 using older 209 sakae@lu:~$ ssh vm sakae@vm's password: Last login: Fri Jan 10 07:26:19 2025 from 192.168.92.1 OpenBSD 7.6 (GENERIC.MP) #338: Mon Sep 30 08:55:35 MDT 2024 vm$
例に習って、起動してる仮想マシンにコマンドを送り込んでみたけど、エラーだわさ。 OpenBSD用のVMWare Toolsなんて無いから当然か。
sakae@lu:~$ vmrun -T player -gu sakae -gp hoge runProgramInGuest '/var/my/vmware/OpenBSD/OpenBSD.vmx' 'df -h' Warning: program compiled against libxml 212 using older 209 Error: The VMware Tools are not running in the virtual machine: /var/my/vmware/OpenBSD/OpenBSD.vmx
まあ、これをやっちゃうと、bash historyに記録がバッチリ残ってしまうんで、二重の 意味を込めて封印だな。
README
以前NHKのプロジェクト X で、トルコのインスタンブールに有る海峡に海底トンネルを 施設する苦労をやってた。異国に派遣された土木技術者を待っていたのは、異文化と 流れを読めない潮流。
その番組では時間の関係か肝心の海底トンネルの詳しい説明が無かった。そんな折り、 海底トンネルの造り方 なんて本を見つけてしまったので、読んでみた。
幅40M x 高さ10M x 長さ120M ぐらいの中空の箱を何本も海底に掘った溝の中で連結して、トンネルに してるのね。箱の接合部は浸水しないようにゴムのパッキンにする。水圧でパッキンが 圧縮されるんで、水漏れは無いそうな。よく、こんな発想が湧いてくるなあ。
圧巻は、最後の箱をどうするかだ。V字形のくさびの様なな箱を使って接合。それだと、空港 近くみたいにクレーンの高さ制限の有る所では利用できない。そこで、最後の箱は、 両端にテーパーを入れたキーエレメントと呼ぶ箱を使う。もちろん、対向する箱にも テーパーを付けておく。テーパーの角度は、垂線に対して15度だそうだ。
鋼鉄な箱の枠だけを陸上のドッグで作成。現場近くまで、それを曳航。そこで、コンクリート 打ちして箱を完成させ、それを沈めるそうだ。良く考えるよなあ。