Masato's IT Library

Microsoftの製品・サービスを中心に,色々と書いていきたいと思います

Windowsのインストーラディスクの作り方

Windowsクリーンインストールする際には,DVDなりUSBフラッシュメモリといったインストールメディアが必要となります.

しかしながら,最近主流となりつつあるダウンロード販売や,MSDN Subscription,Microsoft Imagine(旧Dream Spark)といったサービスでは,isoファイル等のディスクイメージの形でのみWindowsのインストールメディアが入手出来るようになっています.

仮想環境に展開する場合はそのままでもよいのですが,物理環境にWindowsをインストールするためにはisoファイルからインストールメディアを作成することが必須となりますので,その方法を書きたいと思います.

DVDメディアへ書き込む場合

Windows 7以降では,OS標準機能として,CDやDVDへのisoファイルの書き込みに対応しています.

  1. isoファイルのファイルサイズに比べて十分大きな容量のブランクディスク(DVD-R/RWなど)をディスクドライブに入れます.このとき,自動再生メニューが表示されたらキャンセルを選択してください.

  2. 書き込むisoファイルを右クリックして「ディスク イメージの書き込み」を選択します.
    f:id:mst8000:20161013114436p:plain

  3. 「書き込み」をクリックして,書き込みを開始します.正しく書き込めているか確認する(ベリファイ)には「書き込み後のディスクの確認」にチェックを入れておくとよいです.
    f:id:mst8000:20161013115018p:plain

  4. 書き込み作業が終了すると,インストールメディアの作成は完了です.

USBフラッシュメモリへ書き込む場合

USBメモリのフォーマット

注意:USBフラッシュメモリの内容がすべて消去されます.必要なファイル等は必ずバックアップを取ってください

  1. USBフラッシュメモリをPCに差し込みます.

  2. エクスプローラで対象のドライブを右クリックして「フォーマット(A)...」を選択します.
    f:id:mst8000:20161013115755p:plain:w400

  3. 図のようにファイルシステムを「FAT32」に設定して,フォーマットを「開始(S)」します.
    f:id:mst8000:20161013115848p:plain:w200

以降,差し込んだUSBフラッシュメモリのドライブをF:とします.

isoファイルのマウント

Windows 8以降では,OS標準機能として,isoファイルの仮想ドライブとしてのマウントに対応しています.

書き込むisoファイルをダブルクリックして,isoファイルを仮想ドライブとしてマウントします.
以降,isoファイルをマウントしたドライブをG:とします.

f:id:mst8000:20161013120037p:plain

イメージ内容のコピー

マウントしたisoファイルにあるファイル(G:\以下)のすべてのファイルUSBフラッシュメモリF:\)にそのままコピーします.

f:id:mst8000:20161013120729p:plain

ブータブルディスクとして設定

イメージ内容をコピーしただけのUSBフラッシュメモリは,そのままではWindowsのインストールメディアとして利用することができません.イメージファイルに含まれるツールを用いて,ブータブルディスクとして設定します.

  1. まず,コマンドプロンプトもしくはPowerShellを「管理者として実行」します.
    Windows 8以降ではWindowsキー+Xを押して出るメニューから選択して簡単に起動できます.
    f:id:mst8000:20161013123348p:plain:w200

  2. cdコマンドでマウントしたイメージファイルG:\)のbootフォルダに移動します.
    cd /D G:\boot
    f:id:mst8000:20161013124251p:plain:w400

  3. USBフラッシュメモリをブータブルディスクとして設定します.
    次のコマンドを実行してください.(USBフラッシュメモリF:
    bootsect /nt60 F:

  4. 次のように処理が成功したことを確認します.
    f:id:mst8000:20161013124452p:plain:w400

以上でインストールメディアの作成は完了です.

PowerShellでリモートからコマンドを実行する

はじめに

みなさん,Linuxの管理時にSSHは使われますか?(使われますよね)
Windowsでも,リモートデスクトップではなく,PowerShellを使ってリモートからアクセスしたい!と思いませんか?(思いますよね)

ここでは,Windows 7以降を実行するWindows(Server・コンシューマどちらでも)に対して,リモートからPowerShellを用いてアクセスする方法を書きたいと思います.

WinRM (Windows Remote Management)を有効にする

接続のホストで,一度だけ次のコマンドを実行して,WinRMを有効にします.

Enable-PSRemoting

この時,ネットワークの設定が「プライベート」でない場合,エラーが発生して停止してしまいますので,ネットワークの設定を変更するか,次のコマンドで強制的にWinRMを有効にします.

Enable-PSRemoting -SkipNetworkProfileCheck

同様に,接続のホストでも先ほどのコマンドを実行してWinRMを有効にします.

なお,WinRMを有効にすることで,ファイアウォールの5985番ポートがオープンしますのでご注意ください.

TrustedHostsを設定する

WinRMでは,接続のホストから見て,接続のホストが「信頼できるホストである」ことが必要です.
Active Directory配下にどちらのホストも存在する場合は問題ないのですが,ワークグループ環境などでは,次のコマンドを用いて個別に接続先のホストを信頼してあげる必要があります.

接続のホストから,次のコマンドを実行してください.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value (ホスト名 or IPアドレス or *)

実行すると次のようなメッセージが表示されますから,Yを入力して続行します.

WinRM セキュリティの構成。
このコマンドは WinRM クライアントの TrustedHosts の一覧を変更します。TrustedHosts
の一覧内にあるコンピューターは認証されない可能性があります。クライアントはこれらのコンピューターに資格情報を送信する可能性があります。この一覧を変更します
か?
[Y] はい(Y) [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
  • 複数のホスト名やIPアドレスを設定する場合
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "host1, host2"

  • すべてのホストを信頼する場合
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*"

  • 現在設定されているTrustedHostsを確認
    Get-Item WSMan:\localhost\Client\TrustedHosts

  • 設定されているTrustedHostsをすべて消去
    Clear-Item WSMan:\localhost\Client\Trustedhosts

これで,接続前の準備は完了です(2回目以降は行う必要はありません)

セッションを開始する

次のコマンドにより,リモートマシンへの接続を開始します.
コマンド実行後にパスワードを入力するダイアログが開きます.

Enter-PSSession -ComputerName (ホスト名) -Credential (ユーザ名\ドメイン)

以降,ローカルマシンと同様にリモートコンピュータ上でPowerShellによる操作を行うことができます.

セッションを終了する

セッションを終了する場合は次のコマンドを実行します.

Exit-PSSession

便利なコマンド

yomon.hatenablog.com

tech.guitarrapc.com

tech.guitarrapc.com

ネットワーク接続がおかしくなった時に試すこと

ネットワーク接続がどうもおかしくなった時に試すことを書き並べます.

0. 本当に切れているのか確認

コマンドプロンプトWindows)やターミナル(Mac)を起動して,ping 8.8.8.8と打ち込んでEnterを押します.
Windowsなら,WindowsキーRを同時に押して,出てきたダイアログにcmdと打ち込んでEnterを押せば立ち上がります.

次のように「損失が0%」と表示されれば,インターネットにはつながっています.

ping 8.8.8.8

8.8.8.8 に ping を送信しています 32 バイトのデータ:
8.8.8.8 からの応答: バイト数 =32 時間 =10ms TTL=58
8.8.8.8 からの応答: バイト数 =32 時間 =7ms TTL=58
8.8.8.8 からの応答: バイト数 =32 時間 =14ms TTL=58
8.8.8.8 からの応答: バイト数 =32 時間 =16ms TTL=58

8.8.8.8 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 7ms、最大 = 16ms、平均 = 11ms

続いて,ping www.google.co.jpと打ち込んでEnterを押します.

ping www.google.co.jp

www.google.co.jp [216.58.197.131]に ping を送信しています 32 バイトのデータ:
216.58.197.131 からの応答: バイト数 =32 時間 =19ms TTL=54
216.58.197.131 からの応答: バイト数 =32 時間 =18ms TTL=54
216.58.197.131 からの応答: バイト数 =32 時間 =20ms TTL=54
216.58.197.131 からの応答: バイト数 =32 時間 =26ms TTL=54

216.58.197.131 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 18ms、最大 = 26ms、平均 = 20ms

こちらも損失が0%なら問題はありません.

1. Windowsネットワーク診断による自動修復を試す(Windows

次の記事に従い,XP以降のWindowsに標準で装備されているネットワーク診断ツールを実行してみます.
すぐに修復可能な問題が見つかれば,自動で修復を実行してくれます.

www2.mouse-jp.co.jp

2. IPアドレスの強制再取得(Windows

スタートメニューから「コマンドプロンプト」を探して,右クリック,「管理者として実行」をクリックしてください.

f:id:mst8000:20160913005055p:plain:w400

黒い画面が立ち上がったら,次のコマンドを1行づつ順番に入力してEnterを押してください.

ipconfig /release *
ipconfig /flushdns
ipconfig /renew

3. LANケーブル・無線LANアダプタの確認

有線LAN接続の場合はLANケーブルが抜けていないか,無線LAN接続の場合はアダプタが抜けているもしくはOFFになっていないことを確認しましょう.よくあることです.

4. PCの再起動・掃除

解消されなければ,とりあえず,PCを再起動しましょう.
もし,PC内部が埃で詰まっているようなことがあれば,シャットダウンしてACアダプタを抜き,内部を掃除してください.
熱がたまるといたるところに不調が現れます.

5. ルータの再起動

それでも治らなければ,途中にあるルータやスイッチングハブをすべて再起動しましょう.
大体はACアダプタをぶちっと抜いて,ちょっと経ってから差しなおせばOKです.

6. ネットワークアダプタの初期化(Windows

ネットワークアダプタを初期化してみます.
2.と同様に,コマンドプロンプトを管理者として実行してください.

続いて,次のコマンドを入力してEnter,完了したらPCを再起動してみてください.

netcfg -d

それでもなおらん

以上の手順を試しても復旧できない場合は,デバイスに物理的な問題が発生している,もしくはインターネットプロバイダに障害が発生していることが考えられます.

Bash on Ubuntu on WindowsのrmはACLを無視して削除できるのか

はじめに

つい昨日,こんな記事を見かけました.

qiita.com

なんと,Bash on Ubuntu on Windowssudo rm -rf --no-preserve-root / を実行すると, /mntWindows上の C:\ がマウントされているために,Windowsが起動不可能になってしまうようです.

ここで疑問に思いました.

最近のWindowsでは,重要なシステムファイルは,Administrators権限ですら削除できないようにACL(アクセス制御リスト)でガッチガチに保護されているのでは?

ということ.

はたして,Bash on Ubuntu on Windowsでは,ACLに打ち勝ってシステムに保護されたファイルを削除できるのか,試してみることにしました.

まずはWindows側から検証

まず初めに,Windows側でいろいろ試してみたいと思います.
といっても,使っているWindowsをぶっ壊されては堪らないので,Cドライブ直下にあるWindows.oldの残骸を使います.
このWindows.oldフォルダですが,Windowsのアップグレード時に,前のバージョンやビルドに戻すためのデータを一時的に保管するために自動生成されるフォルダで,不要になればディスククリーンアップツールを使用して削除することができます. ところが,稀にSYSTEM権限でしか触れないシステムファイルが入ってしまい,通常のWindowsからは削除できずに残ってしまうことがあります.

f:id:mst8000:20160911020155p:plain:w400

エクスプローラ

まず,普通にエクスプローラから

f:id:mst8000:20160911020846p:plain:w500

はい.普通に怒られました.

コマンドプロンプト

次に,コマンドプロンプト(管理者権限)から rmdir /S .\Windows.old でいってみます.

f:id:mst8000:20160911021224p:plain:w500

無理ですね.

PowerShell

ならば,われらがPowerShell(管理者権限)で Remove-Item -Path .\Windows.old -Recurse -Force を実行.

f:id:mst8000:20160911022358p:plain:w500

こちらも盛大に怒られました.

本丸のBash on Ubuntu on Windowsで検証

では,本丸のBash on Ubuntu on Windowsでやってみたいと思います.
と思ったら,Bash on Ubuntu on Windowsを入れ忘れていた...

入れましょう

f:id:mst8000:20160911023846p:plain:w400

さて,気を取り直してbashsudo rm -rf ./Windows.old/ を実行します.

f:id:mst8000:20160911032102p:plain:w500

怒られました.よかった...

まとめ

Bash on Ubuntu on Windowsも,ちゃんとWindows側のACLに従って(あたりまえだけど)消せないものは消せないようになっています.

でも,/mnt に全ドライブマウントされているので,迂闊に sudo rm -rf --no-preserve-root / なんてやっちゃだめですよ!