
かつて山市良と呼ばれたおじさんのブログ
セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ メモ. Windows/Linuxのオフライン環境からのSMB接続
2024年07月16日配信
2025年04月10日更新
執筆者:山内 和朗
9月に開催予定のオンラインセミナー「セイテク・シス管道場 第2回」のデモ環境に関連して確認したことを、覚書としてここに残しておきます。セミナーの詳細についてはこちらお待ちください。確認したこととは、Windows回復環境(WinRE)やWindowsプレインストール環境(WinPE)のコマンドプロンプト、およびLinuxのRescure/RecoveryモードやTryモードの管理者(root)シェル(#)からからSMB共有に接続する方法です。この方法を知っておけば、正常起動しなくなったWindowsのために、トラブルシューティングのためにSMB共有からツールをコピーしたり、データのバックアップをSMB共有に保存したりできます(図1)。
図1 今回のテーマは、通常起動したOSではなく、トラブルシューティング環境からのSMB接続
今回は、Azure上に構築したHyper-Vベースのラボ環境と共通のものオンプレミスに構築した環境を利用して(来月、このブログの連載で紹介する予定です)、レガシではなく標準(統合タイプ)のネットワークアダプターを持つ、第2世代のHyper-V仮想マシン(VM)と、そのVMをホストしているHyper-Vサーバーに作成したSMB共有(¥¥192.168.0.1¥Work)で動作を確認しています。物理マシンや他の仮想化技術のVMでも同じようにできるはずです。
Windowsにおけるオフライン(インストールされているWindows)のトラブルシューティング環境といえば、ローカルディスクのパーティションにセットアップされたWindows回復環境(Windows Recovery Environment≪Windows RE、WinRE≫)のコマンドプロンプトがあります。これは、Windowsプレインストール環境(Windows Preinstallation Environment≪Windows PE、WinPE≫)ベースの小さな(エクスプローラーシェルなしの)Windows OS環境です。WinREを、Windowsのインストールメディアから開始することもできます。WinREの起動方法について今回説明は省きますが、Windowsインストールメディアで起動し、Windowsセットアップが表示されたところで[Shift]+[F10]キーを押せば、すぐにWinPEのコマンドプロンプトを表示させることができます(画面1)。
画面1 Windowsのインストールメディアから起動し、[Shift]+[F10]キーを押してWinPEのコマンドプロンプトを開く
WinPEのコマンドプロンプトが開いたら、STARTNET(→Microsoft)と入力してネットワークを初期化し、NET USEコマンド(→Microsoft)でSMB共有に接続します(画面2)。例えば、Z:ドライブにSMB共有に接続するには、次のように実行します。-Pパラメーターを省略すれば、パスワードの入力を求められます。
X:¥Sources> STARTNET X:¥Sources> NET USE Z: ¥¥<IPアドレス>¥<共有名> -U <ユーザー名> -P <パスワード> |
画面2 WinPEのコマンドプロンプトでネットワークを初期化してSMB共有に接続する
帰る(通常のOS環境に戻る)までが遠足ということで、次のコマンドラインを実行してシャットダウンまたは再起動します。
X:¥Sources> WPEUTIL ShutdownまたはReboot |
Linuxのレスキュー(Rescure)あるいはリカバリー(Recovery)モードは、通常起動できなくなったLinuxシステムの修復ができるように用意された、OS標準のシングルユーザー環境です。問題が発生した際に自動的に開始することもありますし、GRUBメニューから選択して起動することもできます。例えば、UbuntuをRecoveryモードで起動するには、起動直後に[Esc]キーを押してGRUBメニューを開き、「Advanded options for Ubuntu」、「Ubuntu, with・・・ (recovery mode) 」を選択し、「Recovery Menu」が表示されたら、「network(Enable networking)」を選択してネットワークを有効化し、次に「root(Drop to root shell prompt」を選択してrootシェルに入ります(画面3)。起動時にGRUBメニューではなく、grub>プロンプトが表示されてしまった場合は、プロンプトに「normal」と入力したあと、「Enter」キー、「Esc」キーを押すとGRUBメニューが表示されます。
画面3 Recoveryモードで起動して、ネットワークを有効化し、rootシェルに入る
Rescue/Recoveryモードと似た小さなLinuxシェル環境としてトライ(Try)モードがあります。これは、Live DVDとしても機能するLinuxのインストールメディアから開始できます。Tryモードのデスクトップ環境をトラブルシューティングに利用することもできますが、トラブルシューティングのためならデスクトップ環境をロードせずに、シェル環境に素早く入ることができます(画面4、画面5)。
画面4 LinuxのLive DVD(インストールメディア)から起動する
画面5 言語選択の次のページで[Tab]キーを使用して[Help]メニューに移動し、「Enter shell」を選択してrootシェルを起動する
Rescure/RecoveryモードまたはTryモードのrootシェルに入ったら、次のコマンドラインを順番に実行し、smbclientパッケージをインストールして、SMB共有を/mnt/smbshareなどにマウントします(画面5)。なお、,password=<パスワード>を省略すると、SMB共有のマウント時にパスワードの入力が求められます。
root@host:/# apt-get update root@host:/# apt install smbclient root@host:/# mkdir /mnt/smbshare root@host:/# mount -t cifs //<IPアドレス>/<共有名> /mnt/smbshare -o username=<ユーザー名>, password=<パスワード> |
画面6 smbclinetパッケージをインストールしてから、SMB共有をマウントする
SMB共有をマウントせずに、ファイルのやり取りをすることもできます。それには、smbclientコマンドでSMB共有に接続し、get、putコマンドを使用します。なお、--password <パスワード>を省略した場合、SMB共有への接続時にパスワードの入力が要求されます(画面7)。
root@host:/# smbclient //<IPアドレス>/<共有名> -U <ユーザー名> --password <パスワード> smb: \> get <リモートパス> <ローカルパス> smb: \> put <ローカルパス> <リモートパス> smb: \> exit |
画面7 SMB共有をマウントすることなく、ファイルのダウンロード(get)やアップロード(put)を行う
こちらも帰るまでが遠足ということで、次のコマンドラインを実行してシャットダウンまたは再起動します。Rescure/Recoveryモードの場合は、exitと入力してrootシェルを終了すると「Recovery Menu」に戻るので、「Resume」を選択して通常起動することもできます。
root@host:/# shutdown -h 0 または shutdown -r 0 |
「メモ. 手間はかかるが金いらずのV2V」シリーズでは、WindowsやLinuxのディスクイメージをUSB外付けハードディスクなどの物理ディスク(VMのコンソールに接続できる場合)やSMB共有上のパスに格納するように説明した。オフラインでディスクイメージをキャプチャし、SMB共有に保存したいという場合は、今回紹介した方法を利用できます。
注: リカバリ(Recovery)モードはインストールされているOSを最小限のモジュールだけロードして起動するため、厳密にオフライン環境というわけではありません。パッケージのインストールやファイルシステムへの変更は、インストールされているOS環境を変更することに注意してください。これに対してトライ(Try)モードはインストールされているOSとは別の第三のOS環境であり、ファイルシステムへのアクセス(変更を含む)は可能ですが、インストールされているOSは完全にオフラインです。レスキュー(Rescure)モードについては、起動コマンドライン(inst.rescue)の編集など必要であり、説明すると複雑になってしまうので省略しました。