GNU/Linux >> Linux の 問題 >  >> Linux

WindowsインストールをLinux上のVMに変換する

私はVirtualBoxを頻繁に使用して、Fedoraの新しいバージョン、新しいアプリケーションプログラム、およびAnsibleなどの多くの管理ツールをテストするための仮想マシンを作成しています。 VirtualBoxを使用してWindowsゲストホストの作成をテストしたこともあります。

Linuxでは実行できないあいまいなタスクを実行するために、パーソナルコンピューターやVMでさえWindowsをプライマリオペレーティングシステムとして使用したことはありません。ただし、私はWindowsを必要とする1つの財務プログラムを使用する組織にボランティアとして参加しています。このプログラムは、プレインストールされたWindows10Proのオフィスマネージャーのコンピューターで実行されます。

この金融アプリケーションは特別なものではなく、より優れたLinuxプログラムで簡単に置き換えることができますが、多くの会計士や会計士が変更を行うことに非常に消極的であることがわかったため、組織内の人々に移行を説得することはできませんでした。 。

この一連の状況と最近のセキュリティ上の懸念により、Windowsを実行しているホストをFedoraに変換し、そのホスト上のVMでWindowsとアカウンティングプログラムを実行することが非常に望ましいものになりました。

私はさまざまな理由でWindowsを非常に嫌っていることを理解することが重要です。このケースに当てはまる主なものは、新しいVMにインストールするために別のWindowsライセンス(Windows 10 Proの費用は約200ドル)を支払うのは嫌だということです。また、Windows 10は、新しいシステムにセットアップするとき、またはインストール後に、Microsoftデータベースが侵害された場合にクラッカーが自分の身元を盗むことができるように、十分な情報を必要とします。ソフトウェアを登録するために、名前、電話番号、生年月日を入力する必要はありません。

はじめに

物理コンピューターには、マザーボード上の唯一の使用可能なm.2スロットに240GBNVMem.2ストレージデバイスがすでにインストールされています。ホストに新しいSATASSDをインストールし、Windowsを搭載した既存のSSDをWindowsVMのストレージデバイスとして使用することにしました。 KingstonのWebサイトには、さまざまなSSDデバイス、フォームファクタ、およびインターフェイスの優れた概要があります。

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

そのアプローチは、Windowsや既存のアプリケーションソフトウェアを完全に新しくインストールする必要がないことを意味しました。また、このコンピューターで作業するオフィスマネージャーは、LibreOfficeを使用した電子メール、Webアクセス、ドキュメント、スプレッドシートの作成など、すべての通常のアクティビティにLinuxを使用することを意味しました。このアプローチにより、ホストのセキュリティプロファイルが向上します。 Windows VMが使用されるのは、アカウンティングプログラムを実行するときだけです。

最初にバックアップする

他のことをする前に、NVMeストレージデバイス全体のバックアップISOイメージを作成しました。 500GBの外部USBストレージドライブにパーティションを作成し、その上にext4ファイルシステムを作成して、そのパーティションを / mntにマウントしました。 。 ddを使用しました 画像を作成するコマンド。

新しい500GBSATASSDをホストにインストールし、ライブUSBからFedora32Xfceスピンをインストールしました。インストール後の最初の再起動時に、LinuxドライブとWindowsドライブの両方がGRUB2ブートメニューで使用可能でした。この時点で、ホストはLinuxとWindowsの間でデュアルブートされる可能性があります。

すべてのインターネットの場所で助けを求めています

ここで、ストレージデバイスとして物理ハードドライブまたはSSDを使用するVMの作成に関する情報が必要でした。私はすぐに、VirtualBoxのドキュメントとインターネット全般でこれを行う方法に関する多くの情報を発見しました。 VirtualBoxのドキュメントは私が始めるのに役立ちましたが、それは完全ではなく、いくつかの重要な情報を省略しています。私がインターネットで見つけた他の情報のほとんどもかなり不完全です。

Opensource.comの特派員の1人であるJoshuaHolmの重要な助けを借りて、私は問題を突破し、この作業を繰り返し可能な手順で行うことができました。

機能させる

この手順は実際にはかなり単純ですが、それを機能させるには1つの難解なハックが必要です。このステップの準備ができた時点で、WindowsとLinuxのオペレーティングシステムはすでに導入されていました。

まず、Linuxホストに最新バージョンのVirtualBoxをインストールしました。 VirtualBoxは、多くのディストリビューションのソフトウェアリポジトリから、Oracle VirtualBoxリポジトリから直接、またはVirtualBoxWebサイトから目的のパッケージファイルをダウンロードしてローカルにインストールすることでインストールできます。私はAMD64バージョンをダウンロードすることを選択しました。これは実際にはインストーラーであり、パッケージではありません。このバージョンを使用して、この特定のプロジェクトに関係のない問題を回避します。

インストール手順では、常に vboxusersが作成されます / etc / groupのグループ 。このVMを実行する予定のユーザーをvboxusersに追加しました およびディスク / etc / groupのグループ 。同じユーザーをディスクに追加することが重要です VirtualBoxは起動したユーザーとして実行され、 / dev / sdxに直接アクセスする必要があるためです。 このシナリオで機能するデバイス特殊ファイル。 ディスクへのユーザーの追加 グループは、他の方法では得られないレベルのアクセスを提供します。

次に、VMを保存するディレクトリを作成し、 root.vboxusersの所有権を付与しました。 および775 権限。 / vmsを使用しました ディレクトリ用ですが、それはあなたが望むものなら何でもかまいません。デフォルトでは、VirtualBoxはVMを作成するユーザーのサブディレクトリに新しい仮想マシンを作成します。これにより、大規模なセキュリティの脆弱性を作成せずに、VMへのアクセスを複数のユーザー間で共有することが不可能になります。 VMディレクトリをアクセス可能な場所に配置すると、VMを共有できます。

私はVirtualBoxManagerをroot以外のユーザーとして起動しました。次に、VirtualBoxの環境設定==>一般を使用しました メニューをクリックして、デフォルトのマシンフォルダをディレクトリ / vmsに設定します 。

仮想ディスクなしでVMを作成しました。 タイプ Windowsである必要があります 、およびバージョン Windows1064ビットに設定する必要があります 。 VMに適切な量のRAMを設定しますが、VMがオフになっている限り、これは後で変更できます。 ハードディスク インストールのページで、「仮想ハードディスクを追加しない」を選択し、作成をクリックしました。 。新しいVMがVirtualBoxManagerウィンドウに表示されました。この手順では、 / vms / Test1も作成されました ディレクトリ。

Advancedを使用してこれを行いました 図1に示すように、メニューを選択し、すべての構成を1つのページで実行しました。ガイドモード 同じ情報を取得しますが、各構成アイテムのウィンドウを通過するには、さらにクリックする必要があります。ヘルプテキストの方法でもう少し提供しますが、私はそれを必要としませんでした。

図1:新しい仮想マシンを作成しますが、ハードディスクは追加しないでください。

次に、Linuxによって未加工のWindowsドライブに割り当てられたデバイスを知る必要がありました。ターミナルセッションのrootとして、 lshwを使用します Windowsディスクのデバイス割り当てを検出するコマンド。この場合、ストレージデバイス全体を表すデバイスは / dev / sdbです。 。

# lshw -short -class disk,volume
H/W path           Device      Class          Description
=========================================================
/0/100/17/0        /dev/sda    disk           500GB CT500MX500SSD1
/0/100/17/0/1                  volume         2047MiB Windows FAT volume
/0/100/17/0/2      /dev/sda2   volume         4GiB EXT4 volume
/0/100/17/0/3      /dev/sda3   volume         459GiB LVM Physical Volume
/0/100/17/1        /dev/cdrom  disk           DVD+-RW DU-8A5LH
/0/100/17/0.0.0    /dev/sdb    disk           256GB TOSHIBA KSG60ZMV
/0/100/17/0.0.0/1  /dev/sdb1   volume         649MiB Windows FAT volume
/0/100/17/0.0.0/2  /dev/sdb2   volume         127MiB reserved partition
/0/100/17/0.0.0/3  /dev/sdb3   volume         236GiB Windows NTFS volume
/0/100/17/0.0.0/4  /dev/sdb4   volume         989MiB Windows NTFS volume
[root@office1 etc]#

/ vms / Test1にある仮想ストレージデバイスの代わりに ディレクトリの場合、VirtualBoxには、起動元の物理ハードドライブを識別する方法が必要です。この識別は、*。vmdkを作成することによって行われます。 ファイル。VMのストレージデバイスとして使用されるraw物理ディスクを指します。 root以外のユーザーとして、 vmdkを作成しました Windowsデバイス全体を指すファイル/dev / sdb

$ VBoxManage internalcommands createrawvmdk -filename /vms/Test1/Test1.vmdk -rawdisk /dev/sdb
RAW host disk access VMDK file /vms/Test1/Test1.vmdk created successfully.

次に、VirtualBoxManagerファイル==>VirtualMedia Managerを使用しました vmdkを追加するダイアログ 使用可能なハードディスクへのディスク。 追加をクリックしました 、およびデフォルトの / vms 場所はファイル管理ダイアログに表示されました。 Test1を選択しました ディレクトリ、次に Test1.vmdk ファイル。次に、[開く]をクリックしました 、および Test1.vmdk 使用可能なハードドライブのリストにファイルが表示されました。それを選択して閉じるをクリックしました 。

次のステップは、この vmdkを追加することでした VMのストレージデバイスへのディスク。 Test1 VMの設定メニュー 、ストレージを選択しました アイコンをクリックしてハードディスクを追加します。これにより、 Test1vmdkを表示するダイアログが開きました 添付されていませんというタイトルのリストにある仮想ディスクファイル このファイルを選択して、選択をクリックしました ボタン。このデバイスは、 Test1 VMに接続されているストレージデバイスのリストに表示されます。 。このVM上の他の唯一のストレージデバイスは、空のCD/DVD-ROMドライブです。

OKをクリックしました このデバイスのVMへの追加を完了します。

新しいVMが機能する前に、構成する項目がもう1つありました。 VirtualBoxManager設定の使用 Test1 VMのダイアログ 、システム==>マザーボードに移動しました ページを開き、EFIを有効にするのチェックボックスをオンにします 。これを行わないと、VirtualBoxは、このVMを起動しようとしたときに起動可能なメディアが見つからないことを示すエラーを生成します。

これで、仮想マシンは未加工のWindows10ハードドライブから起動します。ただし、このシステムに通常のアカウントがなく、Windows管理者アカウントのパスワードにもアクセスできなかったため、ログインできませんでした。

ドライブのロックを解除する

いいえ、このセクションはハードドライブの暗号化を破ることについてではありません。むしろ、組織の誰も持っていなかった多くのWindows管理者アカウントの1つのパスワードをバイパスすることです。

Windows VMを起動できたとしても、そのホストにアカウントがなく、パスワードを要求することはひどいセキュリティ違反であるため、ログインできませんでした。それでも、 VirtualBox Guest Additions をインストールするには、VMにログインする必要がありました。 、これにより、マウスポインターのシームレスなキャプチャと解放が可能になり、VMのサイズを1024x768より大きくして、将来的に通常のメンテナンスを実行できるようになります。

これは、ユーザーパスワードを変更するLinux機能の完璧な使用例です。以前の管理者のアカウントにアクセスして開始しましたが、この場合、彼はこのシステムをサポートしなくなり、彼のパスワードまたはパスワードの生成に使用したパターンを識別できなくなります。以前のシステム管理者のパスワードをクリアするだけです。

このタスク専用の非常に優れたオープンソースソフトウェアツールがあります。 Linuxホストに、 chntpwをインストールしました 、おそらく「ChangeNTPassWord」のようなものを表します。

# dnf -y install chntpw

VMの電源を切り、 / dev / sdb3をマウントしました / mntのパーティション 。 / dev / sdb3 これは、 lshw からの出力で見た最初の大きなNTFSパーティションであるため、正しいパーティションです。 以前に実行したコマンド。 VMの実行中はパーティションをマウントしないでください。これにより、VMストレージデバイス上のデータが大幅に破損する可能性があります。正しいパーティションは他のホストでは異なる場合があることに注意してください。

/ mnt / Windows / System32 / configに移動します ディレクトリ。 chntpw それが現在の作業ディレクトリ(PWD)でない場合、ユーティリティプログラムは機能しません。プログラムを開始します。

# chntpw -i SAM
chntpw version 1.00 140201, (c) Petter N Hagen
Hive <SAM> name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
File size 131072 [20000] bytes, containing 11 pages (+ 1 headerpage)
Used for data: 367/44720 blocks/bytes, unused: 14/24560 blocks/bytes.

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <SAM>

  1 - Edit user data and passwords
  2 - List groups
      - - -
  9 - Registry editor, now with full write support!
  q - Quit (you will be asked if there is something to save)


What to do? [1] ->

chntpw コマンドは、メニューオプションのセットを提供するTUI(テキストユーザーインターフェイス)を使用します。プライマリメニュー項目の1つを選択すると、通常、セカンダリメニューが表示されます。明確なメニュー名に続いて、私は最初にメニュー項目 1を選択しました 。

What to do? [1] -> 1


===== chntpw Edit User Info & Passwords ====

| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator                  | ADMIN  | dis/lock |
| 03ec | john                           | ADMIN  | dis/lock |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Guest                          |        | dis/lock |
| 01f8 | WDAGUtilityAccount             |        | dis/lock |

Please enter user number (RID) or 0 to exit: [3e9]

次に、管理者アカウント johnを選択しました 、プロンプトでRIDを入力します。これにより、ユーザーに関する情報が表示され、アカウントを管理するための追加のメニュー項目が提供されます。

Please enter user number (RID) or 0 to exit: [3e9] 03eb
================= USER EDIT ====================

RID     : 1003 [03eb]
Username: john
fullname:
comment :
homedir :

00000221 = Users (which has 4 members)
00000220 = Administrators (which has 5 members)

Account bits: 0x0214 =
[ ] Disabled        | [ ] Homedir req.    | [ ] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     |
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   |
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  |
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  |

Failed login count: 0, while max tries is: 0
Total  login count: 47

- - - - User Edit Menu:
 1 - Clear (blank) user password
 2 - Unlock and enable user account [probably locked now]
 3 - Promote user (make user an administrator)
 4 - Add user to a group
 5 - Remove user from a group
 q - Quit editing user, back to user select
Select: [q] > 2

この時点で、メニュー項目 2を選択しました 、「ユーザーアカウントのロックを解除して有効にする」。これにより、パスワードが削除され、パスワードなしでログインできるようになります。ちなみに、これは自動ログインです。その後、プログラムを終了しました。必ず/mntをアンマウントしてください 先に進む前に。

私は知っています、私は知っています、しかしなぜそうではありません!私はすでにこのドライブとホストのセキュリティをバイパスしているので、1つのイオタは重要ではありません。この時点で、私は古い管理者アカウントにログインし、安全なパスワードを使用して自分用の新しいアカウントを作成しました。次に、自分でログインし、古い管理者アカウントを削除して、他の人が使用できないようにしました。

インターネット上には、Windows管理者アカウント(上記のリストの01f4)を使用するための手順もあります。組織の管理者アカウントが設定されていなければ、そのアカウントのパスワードを削除または変更できたはずです。この手順は、ターゲットホストで実行されているライブUSBから実行できることにも注意してください。

Windowsの再アクティブ化

そのため、FedoraホストでWindowsSSDをVMとして実行しました。しかし、苛立たしい出来事の中で、数時間実行した後、Windowsは「Windowsをアクティブ化する」必要があることを示す警告メッセージを表示しました。

さらに多くの行き止まりのWebページをフォローした後、既存のコードが何らかの理由で破壊されたように見えたため、既存のコードを使用して再アクティブ化することをやっと諦めました。最後に、オンラインの仮想サポートチャットセッションの1つをフォローしようとすると、仮想の「ヘルプを表示」アプリケーションは、Windows10Proのインスタンスが既にアクティブ化されていることを示しました。どうしてこれが当てはまるのでしょうか?アクティベートしたいと思っていましたが、試してみると、すでにアクティベートされているとのことでした。

またはそうではない

調査と実験を行うために3日間にわたって数時間を費やしたときまでに、元のSSDをWindowsで起動することに戻り、後日これに戻ることにしました。しかし、その後、Windowsは、元のストレージデバイスから起動した場合でも、再アクティブ化する必要がありました。

Microsoftサポートサイトの検索は役に立ちませんでした。以前と同じ自動サポートに悩まされた後、自動応答システムによってのみ提供された電話番号に電話をかけ、Windows10Proのすべてのサポートはインターネットによってのみ提供されたと伝えました。今では、コンピューターを実行してオフィスに戻すのに1日近く遅れていました。

バック・トゥ・ザ・フューチャー

私はついにそれを吸い上げ、Windows 10 Homeのコピーを約120ドルで購入し、それをインストールするための仮想ストレージデバイスを備えたVMを作成しました。

多数のドキュメントファイルとスプレッドシートファイルをオフィスマネージャーのホームディレクトリにコピーしました。必要な1つのWindowsプログラムを再インストールし、オフィスマネージャーに、それが機能し、データがすべて揃っていることを確認しました。

最終的な考え

そのため、私の目的は達成されました。文字通り1日遅れ、約120ドル不足しましたが、より標準的なアプローチを使用しました。私はまだ権限にいくつかの調整を加えており、Thunderbirdのアドレス帳を復元しています。作業するCSVバックアップがいくつかありますが、*。mab ファイルには、Windowsドライブに関する情報はほとんど含まれていません。 Linuxの検索も使用しました 元のストレージデバイス上のすべてのものを見つけるコマンド。

私はたくさんのうさぎの穴を下り、自分自身を引き抜いて毎回やり直さなければなりませんでした。このプロジェクトに直接関係のない問題に遭遇しましたが、それは私の作業に影響を及ぼしました。これらの問題には、Windowsパーティションを / mntにマウントするなどの興味深い問題が含まれていました。 私のLinuxボックスで、パーティションがWindowsによって不適切に閉じられ(はい–私のLinuxホストで)、不整合が修正されたというメッセージが表示されます。いわゆる「リカバリ」モードで何度も再起動した後は、Windowsでさえそれを行うことができませんでした。

おそらく、 chntpwからの出力データにいくつかの手がかりがあることに気づいたでしょう。 効用。セキュリティ上の理由から、ホストに表示されている他のユーザーアカウントの一部を切り取りましたが、その情報から、すべてのユーザーが管理者であることがわかりました。言うまでもなく、私はそれを変更しました。私が遭遇する管理慣行の悪さにまだ驚いていますが、そうすべきではないと思います。

結局、私はライセンスを購入することを余儀なくされましたが、それは元のライセンスよりも少なくとも少し安価でした。私が知っていることの1つは、必要な情報をすべて見つけたら、これのLinux部分が完全に機能したことです。問題は、Windowsのアクティベーションを扱っていました。 Windowsの再アクティブ化に成功した方もいらっしゃるかもしれません。もしそうなら、私はあなたがそれをどのようにしたかを知りたいので、コメントにあなたの経験を追加してください。

これは、私がWindowsを嫌い、自分のシステムでLinuxを使用するだけのもう1つの理由です。これは、私が組織のすべてのコンピューターをLinuxに変換している理由の1つでもあります。時間と説得力が必要です。この会計プログラムは1つしか残っていないので、会計係と協力して、彼女に適した会計プログラムを見つける必要があります。私はこれを理解しています–私は自分のツールが好きで、自分に最適な方法で機能する必要があります。


Linux
  1. LinuxPCにOpenVPNをインストールします

  2. LinuxにMicrosoftWindowsCalculatorをインストールする方法

  3. Linux システムに「convert」をインストールするにはどうすればよいですか?

  1. Linuxでお気に入りのWindowsアプリケーションを実行する

  2. ChromebookでLinuxアプリを実行する

  3. LinuxのVirtualBoxにWindows10をインストールする方法

  1. Q4OSLinuxがWindowsの外観で古いノートパソコンを復活させる

  2. LinuxのVirtualboxにWindows10をインストールする方法

  3. LinuxにWindowsPowerShellCore6.0をインストールする方法