たくさんの自由帳

Surface の画面が壊れた上にセーフモードで起動して本格的に壊してしまったので直す

投稿日 : | 0 日前

文字数(だいたい) : 4743

それはそうともうMicrosoft Surfaceは買わないと決めました。高いだけじゃんか。
これ交換したやつなんですが、それでも少し前くらいから画面がご機嫌斜めで、チカチカしたり謎の線が出たりいきなり真っ暗になったりしてた。

ちなみに画面以外にタイプ カバーも壊れてて(キーボード使えない)、
Surface Connectも充電されてないことがあり(信用できないのでType-Cで充電してる)、
なんか自撮りカメラの部分にホコリが入り込んじゃってる(ホコリは私のせいかも)。
もう買わないです。

交換したのが三年前くらいらしいので、、、うーん。
https://takusan.negitoro.dev/posts/surface_pro7_repair/

おことわり

多分Surfaceだから直ったのであって、他だと厳しいかも。
あとWindowsマシンとUSB メモリが必要です。壊れてない動くWindowsマシンでWindows インストールメディアを作成するので。

先に結論

ディスプレイこそ治らなかったものの、msconfigの設定を元に戻すことには成功。

生きてるWindowsマシンでWindows インストールメディアを作成したあと、AutoUnattend.xmlをインストールメディア内に作成。
msconfigのセーフモードを解除するコマンド(コマンドプロンプトのやつ)があるため、それをインストールメディア起動時に呼び出されるようにxmlを記述する。

最後にインストールメディア USB メモリを差しSurfaceUSB ブートするように起動し、なんとなく起動した感じがしたら強制終了し、
USB メモリを抜いたあと再度電源ボタンを押しWindowsを立ち上げることで、msconfigセーフモード地獄から脱出。

事の発端

Imgur

↑複製を押しても変わらんしそもそも戻ってしまう。

Surface Pro 7の画面が付かない。
正しくは窓のロゴが1秒くらい表示されるがその後に画面だけ付かない。

が、画面が付かないだけで、電源ボタン長押しで起動し直したときの起動音や、USB デバイスを繋いだときの音はなっている。
唯一SurfaceのいいところかもしれないWindows Helloの速い顔認証も動いている。

また、USB-CからHDMIに変換したところ、ちゃんと映ったので、GPUが壊れたとかでもなく、画面だけが壊れた。タッチパネルはなぜか生きてる。
ディスプレイの設定でセカンダリだけ使う設定なのか、いやまさかとは思ったけどそんなことなかった。
ちなみに複製にしても変わらない。画面が壊れてしまった。

ちなみにリモートデスクトップが可能、もちろんWindows Proエディションのみで設定が必要。

とどめを刺した

なんとなくセーフモードを試そうと思い、msconfig、システム構成からセーフモード起動を有効にしてしまった。

そもそもセーフモードで起動したい場合は別にシステム構成(msconfig)なんていじる必要がなく、設定から回復を選べばいいだけ。
なんですけど、この回復メニューが外部出力出来ない可能性を鑑みてこっちの手段を取ってしまったんですよね。

セーフモードだとGPUのドライバが汎用ドライバ?になるらしく、(これのせいなのかは不明ですが)HDMI 画面出力が使えなくなってしまった。

本格的に壊してしまった。。。
壊れたというか余計なことをして壊した。

ここまで

Surface本体のディスプレイが壊れたので、HDMI による外部出力に頼っていたが、セーフモードでは外部出力ができない。
GPU 汎用ドライバが使われる?から?)

しかもセーフモードをシステム構成(msconfig)でやってしまったがために、明示的に戻すまで常にセーフモード、常に外部出力が使えない。

やってみたこと

画面はもう直らなくていいので、msconfigでやらかしたセーフモードの設定をとにかく戻したい。

電源と音量アップボタンを押して強制終了

OSというかソフトウェアが固まってる分にはこれで解決だろうけど、画面が壊れてる雰囲気を感じる。
だめだった。1 秒くらいWindowsのロゴがでて、あとは起動音はなる。

Windows インストールメディアの USB メモリを作ってそこから起動

どうやらインストールメディアにはcmd(コマンドプロンプト)が付いてて、OSをインストールする目的以外に、
既にインストール済みだけど起動できないWindowsに対してコマンドプロンプトでコマンドを叩ける?機能があるらしい。
https://www.tenforums.com/general-support/139205-how-escape-msconfig-induced-safe-mode-boot-loop.html

でもWindowsをインストールするまでは汎用ドライバだし、これじゃ画面出力出来なくない?
Windows Updateを待つなり手動でいれるなりしないと(自作PC並感)

ちなみにUSBから起動する方法はUEFIを使う必要がなく、電源ボタン音量ダウンを同時押しでUSBから起動できるそうです。
大抵のパソコンはUEFIで起動順序というかブートメニューをいじる必要がある

余談

そもそもデフォルトだとWindowsの高速スタートアップ機能が有効になっているせいで一筋縄ではUEFI / BIOSに入れない。
Windowsマシンを手に入れたら真っ先にやることはChromeのインストールではなく高速スタートアップの無効化です。多分大差ない

成功したこと

冒頭のそれです。

Windows PE を起動したら自動的にコマンドを叩く

今回やったのは、Windows インストールメディアを作り、Windowsセットアップを自動化できるAutoUnattend.xmlを使い、
Windows PE起動?(インストールメディアから起動した直後?)と共に、裏でコマンドプロンプトを使いmsconfigの設定を元に戻す作戦。

画面が壊れてるので、cmdを開いて操作するってことが出来ない。ので自動化させる。画面が見えないのでかなりの賭けになる。
その手順でも。

Windows インストールメディアを作る

まずは別の動くWindowsマシンでWindows インストールメディアを作る、
昔作った時はUSBメモリ 4GBくらいで足りた気がするんだけど、今8GBいるんだ。

https://www.microsoft.com/en-us/software-download/windows11

インストールメディア作りたいのでWindows 11 インストール メディアを作成するを選べばいいはず。
どうでもいいけど今だとISOファイルが直接落とせるんだ。昔はユーザーエージェント変えないと落とせなかった気が、

あとは画面に従ってUSB メモリに入れてください。

Imgur

インストールを自動化できる AutoUnattend.xml を作成する

これを作ると、インストールを自動で行えるそうですが、今回はWindows PE起動とともにコマンドを叩きたいだけなので、最小限です。
USB メモリのルートフォルダにAutoUnattend.xmlを作り、以下のxmlを貼り付けます。

Imgur

<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
	<settings pass="windowsPE">
		<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
			<RunSynchronous>
				<RunSynchronousCommand wcm:action="add">
					<Order>1</Order>
					<Path>bcdedit /deletevalue {default} safeboot</Path>
				</RunSynchronousCommand>
			</RunSynchronous>
		</component>
	</settings>
</unattend>

これはWindows PEが起動直後(Microsoft-Windows-Setup)に、同期的にコマンドを叩くRunSynchronousというものです。
先述の通り画面が壊れててコマンドプロンプトを開くことすら出来ないので、USBをぶっ刺し起動後にコマンドが勝手に叩かれるようにします。

bcdedit /deletevalue {default} safebootってコマンドが、本来画面が使える場合にコマンドプロンプトで打ち込むコマンドになります。
ありがとう Reddit。
https://www.reddit.com/r/techsupport/comments/444jal/

あとは保存してください。多分UTF-8でいいはず。

Surface をシャットダウンし、USB を差し、音量ダウンボタンを押しながら起動

これはSurfaceだから使える技だと思う。USBからの起動にBIOS / UEFIの変更が必要な場合は画面が壊れてるので多分無理な気がする。

頑張ってシャットダウンします。相変わらず画面が使えないので切れているのかも分からないという。USBに扇風機か何か刺して電源が供給されているか見ればいいのか?
次にUSBを差し、最後に音量ダウンを押しながら電源ボタンを押します。

音量ダウンを押しながら起動するとどうやらUSBから起動になるそうで、USBメモリのアクセスランプが激しく光りだします。
相変わらず画面が壊れてるのでWindows PEが起動したのかもわからない、
ドライバが当たってないからかHDMI 外部出力も動かずキーボードもいつも光ってるインジケーターが光ってなくガチで不安になる。

復活した

流石にWindows PEが起動しただろうと思い強制シャットダウンをしてみる。その後USBを抜いてHDMIを繋ぎ起動したら外部出力が動いた!!!
msconfig戻せた。。。。

相変わらずSurfaceの画面は壊れたままです

試してないこと

これらは試してないです

  • 放電
    • ダイソーのUSBランプを繋いでたけど、終わったかな?って電源ボタン押したらまた光って。を何回も繰り返しやらされてやめた。
  • Windows インストールメディアではなくSurface リカバリイメージUSBにいれる
    • これだとドライバが付いてくるらしい?
    • でもドライバがインストールされるのがどのタイミングになるかが分からず、HDMI 画面出力に頼る必要がある場合はだめかも。
  • boot.winGPU ドライバーを埋め込む
    • これだと起動時にドライバが当たる・・・?

おわりに

代替機を探さないといけないのでこの辺でお開きにします。お疲れさまでした