[Wii ] Wii軟改概念解析(二) Boot2/IOS/SYSMENU

看板Modchip作者 (邪惡松鼠)時間15年前 (2010/07/12 16:03), 編輯推噓11(11011)
留言22則, 14人參與, 最新討論串1/1
這篇依然先不討論軟改的部份,先講基本架構 Wii事實上有兩個CPU,一顆ARM處理器叫做Starlet 而另一顆PowerPC處理器叫做Broadway Starlet負責控制系統資源,包括bootloader,IOS(後述),都在這顆CPU上執行 而PPC處理器,負責執行包括系統選單、遊戲、頻道等等的應用主程式 1. Wii開機流程 在開進Wii系統選單前,事實上Wii會先執行所謂的bootloader bootloader就是在載入主要的作業系統前,一些比較簡單的小程式 而Wii的bootloader又分為boot0/boot1/boot2 boot0 ------> boot1 ------> boot2 ------> SYSMENU IOS -> SYSMENU(系統選單) 為什麼要分這麼多層牽涉到系統設計上的一些問題,這邊先講結果 boot0最小,放在唯讀記憶體中,不可變更 最主要的用途是檢查(Hash check)和載入boot1 由於boot0無法更變,boot1的Hash也無法更改 (網路上又有人把它稱為OTP, One-time password) 所以boot1同樣是無法被變更的 (在Wii的開發機上,據說不存在這個OTP,所以boot1是可以被修改的) boot1用來檢查和載入boot2 檢查boot2的機制如同前文,用的是RSA簽章檢查 並不像boot1的檢查一樣被寫死,所以boot2是可以被升級或變更的 boot2用來載入系統選單 2. IOS IOS一般人又把它叫做Input Output System,負責管理Wii的系統資源 而它事實上就是跑在ARM上面的一個內核(kernel),或作業系統(OS) 和一般傳統系統只會有一個OS不同 Wii基本上每個應用程式都可以指令自己要使用的IOS 好處是,我如果想要增加新功能的時候,可以不必考慮舊遊戲的相容性 我只要做一個新的IOS就好,而舊的遊戲可以用舊的IOS,不必擔心不能玩 (就有點像我的電腦上面同時裝了XP和Win7 如果我要執行XP專用的程式,就開進XP,要執行Win7專用的程式,就開進Win7) 同一個時間,只會有一個IOS,而不會有複數的IOS在執行 Wii裡面,一共可以有256個不同的Wii IOS IOS的號碼,有人說可以視為存在主機中的位置(slot),也就是安裝的位置 (不過,slot1是boot2, slot2是system menu,剩下的才是IOS) 編號不見得越大就越新,不過總之編號不同就是不一樣的用途 有新的週邊、像balance board, webcam, 麥克風等等,通常又會出新的IOS 每個IOS本身,又有2 bytes的版本號碼,所以又有所謂0~65535的版號 理論上,同樣編號,不同版號的IOS應該還是要相容,越新的版號理論上只會做bug修正 (後面會提到例外,有些新版主機不可以用舊版的IOS) Wii的應用程式(頻道或光碟)叫做title 而每個title都有所謂的Title Metadata(TMD)來描述title的性質 TMD中,會指定這個應用程式所需要的IOS 在執行一個應用程式的時候,首先會檢查這個應用程式需要的IOS 例如購物頻道v19,TMD中就會說明需要IOS61 所以會先載入IOS61,初始化整個wii系統之後,IOS61會幫你載入購物頻道這個應用程式 軟體一 軟體二 ------------- ----------> -------------- 軟體一用的IOS 執行 軟體二用的IOS 3. SYSMENU 和一般直覺想法不同的是,系統選單中的版本編號 其實不代表整個系統的版本 事實上,系統選單,和遊戲或頻道等等沒有什麼太大的不同 系統選單,也只是一個功能比較複雜的應用程式而已 (以系統選單4.2J為例,開機時,boot2載入IOS70 然後IOS70初始化Wii後,載入系統選單4.2J) 就算像遊戲的一些共通功能 例如按home設定wiimote,或回主選單,或reset 也都是遊戲本身提供的,而不是系統選單提供的 所以,和一般人想法不同的是,基本上頻道或遊戲正不正常 和系統選單本身,其實是沒有關係的 而狀況會比較像前面的圖解一樣 執行了別的程式之後,系統選單 和系統選單用的IOS,就停止執行了 取而代之的是新的IOS和新的應用程式,如下圖 SYSMENU 4.2 官方頻道(如Shopping Channel) ------------- ----------> ------------------------------- IOS70 選單 頻道需要的IOS(如購物用的IOS61) 執行遊戲又回到選單的流程 SYSMENU 4.2 遊戲 SYSMENU 4.2 ------------- ----------> -------------- ---------> ------------- IOS70 光碟頻道 遊戲需要的IOS 回選單 IOS70 當然,因為任天堂更新選單的時候,當然也會順便更新IOS和頻道 所以版號還是可以做一點參考,但是有時候同一個版號存在數次不同的更新 就又有所謂v1/v2/v3等等的不同 總之,選單的更新基本上只和選單本身有關而已 例如說系統選單支援SDHC拷貝存檔,和Photo Channel支援SDHC放照片,是兩回事 要支援SDHC,兩者需要更新各自的IOS和主程式 3. Stub IOS Stub IOS就是沒有任何功能的IOS 除了最早的SYSMENU 1.0使用IOS9,也有供遊戲使用外 後來的SYSMENU都是使用自己專用,而不給遊戲使用的IOS 一旦SYSMENU更新,升級上去之後,假設換用新的IOS,舊的IOS就沒用了 所以任天堂就把舊的IOS拿沒作用的版本取代,節省記憶空間 這也是為什麼有人降級SYSMENU之後變磚的原因 (因為boot2想要載入無效的IOS,而開不了機) 以下列出各版本選單所使用的IOS SYSMENU 1.0 IOS9 SYSMENU 2.0 IOS11 有效IOS: v4 stub: v256 SYSMENU 2.2 IOS20 有效IOS: v12 stub: v256 SYSMENU 3.0~3.3 IOS30 有效IOS: v1037, v1039, v1040, v2576 stub: v2816 SYSMENU 3.4 IOS50 有效IOS: v4889 stub: v5120 SYSMENU 4.0/4.1 IOS60 有效IOS: v6174 stub: v6400 SYSMENU 4.2 IOS70 有效IOS: v6887 stub: v6912 SYSMENU 4.3 IOS80 有效IOS: v6943 後來又有所謂阻擋cIOS安裝的stub IOS 這在之後再做討論 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.23.102 ※ 編輯: priv 來自: 140.113.23.102 (07/12 16:04)

07/12 16:22, , 1F
長知識阿!
07/12 16:22, 1F

07/12 17:14, , 2F
推一下 不過內容有深有淺
07/12 17:14, 2F

07/12 17:19, , 3F
如果有部份太深解釋不清可以講一下,我是希望能深入淺出
07/12 17:19, 3F

07/12 17:41, , 4F
感動!
07/12 17:41, 4F

07/12 18:10, , 5F
系統使用的IOS最好加上版本,很多系統IOS都有stub版,不幸
07/12 18:10, 5F

07/12 18:11, , 6F
用了就是無解的磚了
07/12 18:11, 6F
已補上版本,謝謝

07/12 18:48, , 7F
其實能當ios的只有256-2=254個 ios1是boot2
07/12 18:48, 7F

07/12 18:49, , 8F
IOS2是SYSMENU 不過官方好像也沒在用ios0
07/12 18:49, 8F

07/12 21:08, , 9F
膜拜
07/12 21:08, 9F
※ 編輯: priv 來自: 140.113.23.102 (07/12 23:14)

07/13 01:22, , 10F
值得再推一下的好文
07/13 01:22, 10F

07/13 09:01, , 11F
IOS0是駭客在用的
07/13 09:01, 11F

07/13 14:45, , 12F
看完這篇後,更能了解k大強調的:遊戲能不能玩和IOS有關
07/13 14:45, 12F

07/13 14:45, , 13F
跟system menu沒有關係的道理了
07/13 14:45, 13F

07/13 20:58, , 14F
再推一次 看完後 感覺跟Wii的關係又更進一步了
07/13 20:58, 14F

07/13 23:12, , 15F
iOS 聽起來比較像 module 不太像 OS ?
07/13 23:12, 15F

07/14 15:02, , 16F
講解清楚 好文!
07/14 15:02, 16F

07/14 21:38, , 17F
把IOS當成像DOS的os吧 不過其實IOS和其他遊戲機的BIOS
07/14 21:38, 17F

07/14 21:39, , 18F
類似 換句話說 Wii就像有多個BIOS
07/14 21:39, 18F

07/15 08:34, , 19F
有看有推
07/15 08:34, 19F
※ 編輯: priv 來自: 140.113.23.102 (07/16 13:35)

07/18 23:10, , 20F
獲益良多
07/18 23:10, 20F

07/30 08:20, , 21F
希望對您有幫助 http://www.94istudy.com
07/30 08:20, 21F

09/11 23:01, , 22F
push
09/11 23:01, 22F
文章代碼(AID): #1CEinQRB (Modchip)