rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

Windowsのコマンドプロンプトから、VMware Workstation Playerの仮想マシンにインストールされたXubuntuをGUI無しで起動する

2024 Mar. 17.
2024 Mar. 09.


環境

ホストOS:Windows 11 Home Edition
仮想化ソフト:VMware Workstation 17 Player
ゲストOS:Xubuntu 22.04

デフォルトのWindows 11 Home Editionでは管理者であるAdministratorユーザーのパスワードが設定されていないので、そのパスワードを設定する

(1) WindowsにてAdministratorユーザーでサインインする(パスワード入力不要)
(2) パスワードを変更する
  設定 -> アカウント -> サインインオプション -> パスワード -> 変更
(3) Administratorユーザーからサインアウトする


ここからは、リモートデバイスSSHクライアントからSSHサーバーが稼働しているWindowsに接続しておこなった。

(手法1)

管理者としてのコマンドプロンプトを開いた上でVMwareを起動する方法

(1) リモートデバイスSSHクライアントからSSHサーバーが稼働しているWindowsに接続する


(2) Windowsコマンドプロンプト上で、管理者としてのコマンドプロンプトを起動する

> runas /user:Administrator cmd
Administratorのパスワード入力を求められる

(3) VMware仮想マシンXubuntuGUI無しで起動する

> "C:\Program Files (x86)\VMware\VMware Player\vmrun.exe" start "C:\Users\HOGE\Documents\Virtual Machines\xubuntu2204\xubuntu2204.vmx" nogui &


(オプション)

コマンドを短縮するためにXubuntu起動コマンドをバッチファイル化する

cmd-admin.bat

runas /user:Administrator cmd

runvmxu.bat

@echo off
"C:\Program Files (x86)\VMware\VMware Player\vmrun.exe" start "C:\Users\HOGE\Documents\Virtual Machines\xubuntu2204\xubuntu2204.vmx" nogui


(手法2)

一般ユーザーにて管理者権限でVMware仮想マシンXubuntuGUI無しで起動する方法

SSH接続して起動する例

参考 Windows Powershellでnohupみたいなことをする #Windows - Qiita

(1) リモートSSHクライアントデバイスからWindowsSSH接続する。
   Windowsコマンドプロンプトに接続される。

(2) SSHクライアントにてPowerShellを開く

> powershell

(3) VMware Workstation/XubuntuPowerShellとは非同期で起動する

> Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "powershell & 'C:\Program Files (x86)\VMware\VMware Player\vmrun.exe' start 'C:\Users\HOGE\Documents\Virtual Machines\xubuntu2204\xubuntu2204.vmx' nogui"
このコマンドをバッチファイルにするとエラーになった。

(出力例)
__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ProcessId        : 11100
ReturnValue      : 0
PSComputerName   :

(4) 上記でできるはずだが、管理者としてのPowerShellを起動する必要ある時は次のコマンドで管理者としてのPowerShellを開く

下記コマンドではpowershellが開かないので、今のところ やり方が不明。
> powershell -Command "Start-Process powershell -Verb RunAs"

(5) 管理者としてのPowerShellが開いたら、VMware Workstation/XubuntuPowerShellとは非同期で起動する

> Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "powershell & 'C:\Program Files (x86)\VMware\VMware Player\vmrun.exe' start 'C:\Users\HOGE\Documents\Virtual Machines\xubuntu2204\xubuntu2204.vmx' nogui"

次の方法では、SSH接続を切断するとVMwareが停止してしまった

参考 バッチを自動で管理者権限で実行する方法 #Windows - Qiita

(1) バッチファイルを作成する

runvmxu2.bat

@echo off
whoami /priv | find "SeDebugPrivilege" > nul
if %errorlevel% neq 0 (
 @powershell start-process %~0 -verb runas
 exit
)

"C:\Program Files (x86)\VMware\VMware Player\vmrun.exe" start "C:\Users\HOGE\Documents\Virtual Machines\xubuntu2204\xubuntu2204.vmx" nogui

@powershell start-process %~0 -verb runas
exit
について
(ChatGPTより)
@powershell start-process %~0 -verb runasの行によって、バッチファイル内で PowerShell プロセスが新しく開始されます。この際、-verb runasによって管理者権限で PowerShell が開始されます。
バッチファイルは exit コマンドに達し、バッチファイル自体の実行が終了します。
しかし、PowerShell プロセスはまだ実行中であり、バッチファイルを再起動しています。

@powershell
この部分は、PowerShellをバッチファイル内で実行することを示しています。@記号は、実行されるコマンドを表示しないようにします。

start-process
PowerShellで別のプロセスを開始するコマンドです。この場合、新しいインスタンスでバッチファイルを開始します。

%~0
これは、現在のバッチファイルのパスを指します。%0はバッチファイル自体を指し、~は引用符を除去するための修飾子です。

-verb runas
これは、開始するプロセスに管理者権限で実行するように指示します。-verb runasは、プロセスを管理者として実行するためのオプションです。

(2) リモートデバイスSSHクライアントからSSHサーバーが稼働しているWindowsに接続する

Windowsコマンドプロンプト上で、バッチファイルを実行する

この方法ではSSH接続を切断するとVMwareも終了する。

Ubuntu / Linux : 接続している無線ネットワークを出力するコマンド

2024 Feb. 10.

$ nmcli dev wifi list
IN-USE  BSSID              SSID       MODE      CHAN  RATE        SIGNAL  BARS  SECURITY
*       11:8C:B5:16:56:52  yon  インフラ  36    270 Mbit/s  59      ▂▄▆_  WPA2

IN-USE  BSSID              SSID            MODE      CHAN  RATE        SIGNAL  BARS  SECURITY
*       57:8C:C5:A6:5B:51  ichi  インフラ  11    130 Mbit/s  55      ▂▄__  WPA2


$ iwconfig
lo        no wireless extensions.

eno1      no wireless extensions.

wlx00a0b0a1e2c0  IEEE 802.11  ESSID:"ichi"
          Mode:Managed  Frequency:2.462 GHz  Access Point: 57:8C:C5:A6:5B:51
          Bit Rate=130 Mb/s   Tx-Power=20 dBm
          Retry short  long limit:2   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=49/70  Signal level=-61 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:6  Invalid misc:6   Missed beacon:0

wlx1cbfce7d7d1c  IEEE 802.11AC  ESSID:"yon"  Nickname:"WIFI@RTL88X2BU"
          Mode:Managed  Frequency:5.18 GHz  Access Point: 11:8C:B5:16:56:52
          Bit Rate:867 Mb/s   Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=61/100  Signal level=38/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

tun0      no wireless extensions.


WOL ( Wake On Lan ) : CHUWI LarkBox Pro MiniのBIOS設定

2024 Feb. 03.

CHUWI LarkBox Pro MiniのBIOSでのWOL ( Wake On Lan )対応設定
CHUWI LarkBox Pro Mini BIOS
  Chipset
    Lan Wakeup support Enabled

  Chipset
    South Cluster Configuration
      Miscellaneous Configuration
        Wake On Lan Enabled


Windows Wifi : Wake On Lan ( WOL )の設定

2024 Feb. 03.

参照元
WoWLAN(Wake on Wireless LAN)で、Wi-Fi接続の自宅マシンをネットから起動 | りんごロイド
無線LANでWake on LAN(WOL)する設定と条件 - BTOパソコン.jp
起動される側のPCのWOL設定(2/3):Windows ネットワークアダプタの設定
Windows10/ Windows11 の Wake On LAN (WOL)設定 | E.i.Z

Wifiでは、PCをシャットダウンしているとWOLはできない。
Windowsが「休止」状態であればWOLが可能。

CHUWI LarkBox Pro MiniのBIOS設定

WOL ( Wake On Lan ) : CHUWI LarkBox Pro MiniのBIOS設定 - rokkonet

Windows : コマンドプロンプト上でシステムを再起動・シャットダウンするコマンド

2024 Jan. 29.

管理者権限を取得したうえで、所定のコマンドを入力する。


一般ユーザー権限のコマンドプロンプト上で

管理者権限のコマンドプロンプトを起動する。
> start cmd.exe /k "runas /user:Administrator cmd.exe"

再起動
> shutdown /r /t 0
"/r"オプションで再起動を指定し、"/t"オプションでタイマーを設定する。"/t 0"は、即座に再起動することを意味する。

シャットダウン
> shutdown /s /t 0
"/s"オプションでシャットダウンを指定し、"/t"オプションでタイマーを設定します。"/t 0"は、即座にシャットダウンすることを意味する。


Windows : コマンドプロンプトとPowerShellの判別

2024 Jan. 29.

環境:Windows 11 Home edition

"ver"コマンドと"$PSVersionTable.PSVersion"コマンドを入力してみる。

コマンドプロンプトにて

>ver

Microsoft Windows [Version 10.0.22631.3085]


>$PSVersionTable.PSVersion
'$PSVersionTable.PSVersion' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

PowerShellにて

> ver
ver : 用語 'ver' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください
。
発生場所 行:1 文字:1
+ ver
+ ~~~
    + CategoryInfo          : ObjectNotFound: (ver:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException


> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      22621  2506