2022年1月2日 星期日

修復 Windows 的 EFI/MBR 開機引導

修復 Windows 的 EFI/MBR 開機引導

引導損壞的開源命令工具 autoFixBoot,同時適用 MBR 與 GPT 兩種不同的硬碟格式。



使用方法

步驟
  1. 先把要修復的目標系統硬碟接到正常能開機的電腦上 (需要連網)
  2. 開機進系統後,從本機裡找一下目標系統在哪個曹位
  3. 在開始搜尋 Powershell 並按下右鍵使用管理員開啟,接著輸入下列命令。
# 修復 E 曹的系統引導
irm autofixboot.github.io|iex; autoFixBoot E

後面的 E 就是要修復的目標磁碟代號,也就是Windwos資料夾所在的磁碟
(如果要修復的就是當前系統,改成C即可)

過程中會跳出警告視窗,輸入 y 然後按下 Enter 即可。




備註:

  • 兩種格式 GPT(EFI) 與 BIOS(MBR) 都適用
  • 不小心把引導裝到其他硬碟的,後面改成 C 即可修復到同一顆
  • 在 GPT 磁碟下,若無引導分區會自動壓縮300M生成EFI分區
  • 在 MBR 磁碟下,若無引導分區會直接安裝引導在C曹系統曹


修復工具的邏輯

主要修復邏輯是輸入系統曹的代號之後

  1. 尋找同磁碟內是已經存在的引導分區(沒有則新建一個)
  2. 利用 bdcboot 建立開機引導


說穿了做的事情就是,自動建立開機分區(GPT/MBR),以及自動產生 bcdboot 命令並執行的工具。

邏輯上只會建立在同一個磁碟內,如果輸入的曹位是在 [磁碟3] 那麼只會搜尋 [磁碟3] 是否有開機引導,如果沒有則建立。


重複的開機引導

開機引導可以同時有很多個指向,比如說原本因為安裝失誤的關係導致開機是由 [磁碟0] 引導到 [磁碟1] 開機,那麼修復之後原本 [磁碟0] 的引導也依然有效可以開機。

當拔除磁碟 [磁碟0] 的時候只剩 [磁碟1] BIOS自然會選中 [磁碟1] 的開機引導開機到原本的系統。

所以如果是這種情況修復好就好不用管原本的開機分區了,如果真的很在意BIOS出現兩個選單的話隨意下載個磁碟管理軟體刪除不要的引導分區即可。




2021年12月29日 星期三

如何使用 Dism 安裝 Windows11

如何在外接硬碟 安裝 Windows11

tags: 部落格文章

Dism是微軟封裝Windows的程式,可以把它想像成 RAR 的意思。壓縮完畢後會變成一個 .wim 檔案,這個檔案解壓出來就是C曹剛重灌好的樣子了

所謂的安裝系統只不過是 解壓縮+建立開機引導 而已
這同時也意味著轉移系統只需要你將C曹所有檔案 Ctrl+C 複製到另一個硬碟,然後重建引導即可開機

安裝完畢開機之後系統會自動變成Windows to go狀態,大致上的區別就是有些設定值被限制了,比如說預設值是不能休眠的。


從下面開始所有指令的安裝的磁碟曹是F曹,如果你要安裝的曹位不是F,建議在磁碟管理員把他指定成F,這樣才不用修改指令。


前置任務

在開始前請先確定硬碟已經轉換成GPT格式
可以使用下面命令查詢分區格式

# F自行置換成你要安裝磁碟機代號
Get-Partition -DriveLetter "F" | Get-Disk


看到上圖表示是正確的,可以進行下一步了。

如果顯示是MBR格式,那可打開磁碟管理員,刪除所有分區之後點擊轉換。


(圖片沒有刪除且已經是GPT格式,所以才是灰色的的轉換成MBR字樣)




wim檔案的位置

wim檔案又可以稱做是系統的映象檔,這個檔案在微軟載下ISO內,點擊ISO檔案兩下掛載,然後你可以在 source 裡面發現 install.wim 檔案。

ISO檔案可以從這個網址下載:https://www.microsoft.com/zh-tw/software-download/windows11


查看映像檔資訊

一份映像檔裡面有別於剛剛說的rar壓縮包,wim檔案是可以同時包含多個版本的,解壓縮的時候要選擇版本解壓。這個步驟就跟通常安裝Windows時要讓我們選擇專業版還是家用版一樣意思。

查看的指令是(需要管理員權限)

Dism /Get-ImageInfo /ImageFile:"E:\sources\install.wim"


這邊我要安裝的是專業版,那就記下對應的編號 index:3


解壓縮

接下來把它解壓縮到目標槽位,也就是你要安裝的硬碟上

# 映像檔位置 : E:\sources\install.wim
# 安裝的版本 : 3 (Windows 11 專業版)
# 解壓縮位置 : F:\
Dism /apply-image /imagefile:E:\sources\install.wim /index:3 /applydir:F:\

等待跑完即可




建立開機引導

開機引導需要獨立的一個EFI分區,一般Windows會自動將它分配在開頭的位置。但實際上EFI的分區順序是沒有規定的,這邊為了方便操作直接從F曹切出300M來用

(指令很長連點三下可全選)

$Dri=(Get-Partition -DriveLetter "F");$Dri|Resize-Partition -Size:($Dri.size-300MB);((($Dri|New-Partition -Size:300MB -GptType:"{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}")|Format-Volume)|Get-Partition)|Set-Partition -NewDriveLetter:"X"

接著寫入開機引導

bcdboot F:\windows /f UEFI /s X:\ /l zh-tw

到這邊就完成了,重啟之後UEFI選則該硬碟啟動,即可開機




掛載與卸載EFI磁碟代號

磁碟管理是沒辦法直接掛載EFI分區的,如果需要修復EFI掛載的方法如下

# 新增F曹的EFI分區磁碟代號為X
((Get-Partition -DiskNumber:(Get-Partition -DriveLetter "F").DiskNumber)|?{$_.GptType -eq "{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}"})[0]|Set-Partition -NewDriveLetter:"X"

# 移除磁碟代號X
$Letter="X";(Get-Partition -DriveLetter:$Letter)|Remove-PartitionAccessPath -AccessPath:("$Letter"+":")

參考資料

Dism 修復 Windows 系統

修復 Windows 系統

系統損壞原因很多,這邊用的指令是簡單修復Windows的檔案,有時候系統BUG這個修復是有用的。

執行的方法按下 Win+X 然後在按 A 就可以打開終端機了,在終端機裡面輸入底下指令。

# 檢查有無出錯
Dism /Online /Cleanup-Image /ScanHealth
Dism /Online /Cleanup-Image /CheckHealth

# 修復
DISM /Online /Cleanup-image /RestoreHealth
sfc /SCANNOW

2021年12月18日 星期六

PowerShell 關閉 IPv6 連線

PowerShell 關閉 IPv6 連線

tags: 部落格文章

主要是遇到了一點問題,不得不關閉IPv6的連線,才只好這麼做的。留個紀錄之後要爬文比較好找。

關閉 Ipv6

利用的指令是

Get-NetAdapterBinding -Com:ms_tcpip6

這個可以查出全部的 IPv6 連線的裝置名稱,再利用裝置名稱把連線關掉

$Name = '區域連線'
Enable-NetAdapterBinding -Name:$Name -ComponentID:ms_tcpip6

遇到的問題

遇到這個問題是因為不知道為什麼自己建立的 OpenVPN 伺服器雖然連上了,但是IPv6是沒有啟用的,造成的問題就是IPv6依然是本地IP只有換IPv4而已。

然後預設的連線行為是 IPv6 優先於 IPv4 的,所以如果網站支援 IPv6 的話我連上的VPN就等同於虛設了,還是一樣本地的IP

解決辦法就是乾脆關掉 IPv6 就好了,不過為什麼會造成這個原因我猜有可能是因為我用 TAP 模式的關係吧,伺服器是用ASUS的路由器建的(也有可能只是ASUS的BUG)。

差多三年前剛架設的時候 TUN 模式因為沒辦法把流量都導到AP上 (已經打勾導流了),最後用 TAP 才解決的就一直這樣用了,現在還是同一個型號測試 TUN 已經可以正常導流了。TAP模式缺陷很不方便,第二台客戶端AP、安卓手機不能用,沒特別需求建議還是用TUN比較好。

解決方案完整代碼在這裡。
https://github.com/hunandy14/OpenVPN_Switch/blob/master/OVPN_chg190118_v6.ps1

2021年12月8日 星期三

移除 華碩 ASUS ArmouryCrate 桌面右鍵選單 GameLibray

移除 華碩 ASUS ArmouryCrate 桌面右鍵選單 GameLibray

這選單是真礙眼,沒有習慣從桌面的右鍵選單裡面開遊戲,偏偏軟體裡面又不給設定移除。姑且自己去挖登錄檔位置出來有成功刪除了。



停用的方法

先按下 Win+X 然後再按下 A ➔ 打開終端機,然後輸入底下的代碼按下Enter

reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\GameLibrary" /v "LegacyDisable" /t REG_SZ /f

執行完畢就會消失了。


復原

由於沒有直接刪除原本的值,要復原的話刪除 LegacyDisable 這個項目即可

reg delete "HKEY_CLASSES_ROOT\Directory\Background\shell\GameLibrary" /v "LegacyDisable" /f

就此就能輕易復原了





登錄檔值

對應的位置在這裡,要強制刪除可以執行這行
Remove-Item -LiteralPath 'Registry::HKEY_CLASSES_ROOT\Directory\Background\shell\GameLibrary'

登錄檔機碼備份,把她存成 GameLibrary.reg 之後執行即可復原
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\GameLibrary]
"MUIVerb"="ArmouryCrate"
"SubCommands"="g0;|;g1;"

"Icon"="C:\\Users\\這裡換成自己的使用者路徑\\AppData\\Local\\Packages\\B9ECED6F.ArmouryCrate_qmba6cd70vzyy\\LocalState\\GameLibrary\\ArmouryCrate.ico"

2021年11月23日 星期二

Win11/10 如何關閉 現代待機/新式休眠/InstantGo

Win11/10 如何關閉 現代待機/新式休眠/InstantGo

現代待機有蠻多的名稱的 新式休眠 / Modern Standby / InstantGo 都是

現在的筆電預設是打開的這會直接導致電源選項會少很多,比如說最基本的效能、省電就沒有了,只有預設的一個。

現代待機會讓混合睡眠會失效,這個功能對於桌機而言是很實用的功能。對於筆電而言大概就是減少睡眠的耗電吧,現代待機為了不斷網耗電量可不小。不少網路上的文章在噴這個功能太耗電。

關閉現代待機之後
  1. 能手動調整外接硬碟的休眠時間。預設1分鐘就斷電使用很會很卡(喚醒約1秒)
  2. 開蓋自動從睡眠狀態喚醒,這個功能會被停用會變的蠻不方便的


確認當前狀態

要確認現代待機是否被打開可以打這個命令看

powercfg -a

出現下圖就是目前現代待機是有打開的




Windows 關閉現代待機

按下 Win+X 然後再按 A 打開終端機後輸入底下代碼

# 關閉現代待機
irm bit.ly/SetInstantGo|iex; InstantGo -Disable


設定好之後重新起動電腦,就可以看到電源選項出現了


復原可以輸入

# 復原現代待機
irm bit.ly/SetInstantGo|iex; InstantGo -Enable



* Windwos版本跨過1909之後對應的登錄檔機碼是不同的,已包含該變動



參考資料

【2021年版】Windowsタブレットで画面だけオフにする方法 (js2y.com)

Win10 右鍵選單出現的位置跑到滑鼠左邊

Win10 右鍵選單出現的位置跑到滑鼠左邊

不知道改到什麼原本正常在桌面按右鍵,選單應該是出現在滑鼠的右下方。(相對來說滑鼠會在選單的左上角的意思。)

結果就變成選單出現在滑鼠的左下角,想說到底是怎麼了。爬聞一下貌似只是改到慣用手的問題,改回來就好了。

平板電腦設定

選單出現的位置在這裡可以改,這個設定叫出的方法。先按下 Win+R 開啟執行。
然後直接貼上這一串



shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}

再來按下確定就可以了。
接著選擇第二個 頁面 其他之後,選擇慣用左手就可以恢復了。