@(1123)有關刷ULK系列核心,選Voodoo時偶爾會發生開不了機的始末與解決方法
- 註:因為目前使用ULK(Universal lagfix)核心的優化核心包括了:
1.Super Optimized JPM-JP6 Kernel by laststufo
2.SpeedMod Froyo 340MB RAM Optimized by hardcore
3.YA-OK! Yet-another Optimised Kernel by zenkinz
4.OC(v1/v1.1/v1.0UV.../v216) by raspdeep
- 如果使用上述四款優化核心,且選用了以下這兩項lagfix時
第二項.Voodoo: /data is ext4, all others are kept at rfs
第三項.JFS Voodoo: /data is jfs, all others are still rfs
,則偶爾會發生開不了機,卡在[S]的情況
@@以下的解決方法,並非修理已經發生corruption,而是避免以後發生此類之/system掛載出錯的corruption
解決方法
- 當你屬於前述情形時,在重複刷ULK核心後,切記要先正常關機後,再進入recovery mode 做更改lagfix動作。
@@如果已經發生開不了機或單刷SpeedMod K9系列版本,卡在[S]的情況時,套用以下三招之任一招@@
(第一招)請先刷回之前可正常使用之ULK核心,恢復正常開機-->/system corruption依然存在
(第二招)或者是,先刷Voodoo作者supercurio 另外作的修正核心之後
- 再刷K9系列核心,或其他已經修正好的優化核心(包括OC超頻版之類)
-->/system corruption就不會再發生
- 或者再刷其他未修正之ULK優化核心(包括OC超頻版之類),即可繼續選用Voodoo系列優化,可正常開機
-->/system corruption依然存在
(第三招)用SpeedMod作者的第三招-先備份再還原(有點繁複)
<單獨格式化/system磁區>
全程不需要進入2.2 Froyo,只要在Odin與Recovery mode操作
1. 先用K8刷過之後,進入recovery mode,先用ULK將/system備份起來
(Using K8/older ULK kernel, boot to Recovery CWM and backup /system)
2.再刷K9之後,進入recovery mode
( Flash K9, boot to Recovery CWM.)
3. 在Recovery選單裡,將/system 卸載後,格式化/system,然後重新掛載/system,再將/system還原回去
(Umount /system --> format /system --> mount /system -->advance restore /system)
4. 一樣是在Recovery選單裡,清除dalvik-cache
(Clear dalvik-cache)
5. Reboot and hope it works!
如果還沒效的話,就要重刷整個ROM
@@@假如要一勞永逸,解決愛用Voodoo而不再corruption,就在下次刷完新的ROM之後,刷有Voodoo修正的優化核心。至於沒在用Voodoo的人,就不用理會@@@
voodoo-system-rfs-fixer-kernel.tar(第二版) 下載連結
voodoo-system-rfs-fixer-kernel.tar_Multiupload(第二版)下載連結
***其他lagfix選項,則不會有問題***
<以下內容如無興趣,可忽略不看。如看完看不懂的話,也別放在心上>
@(1123)有關Universal Lagfix Kernel 之/system r/o之始末
(1124)補充說明:整個過程之概要說明
這篇是Voodoo作者supercurio這邊的說明,你現在看到的已經被整理成FAQ形式
本篇我是參考Voodoo作者、SpeedMod及ULK作者的看法,綜合起來整理的
- 一開始傳出來的時候的確像是指令的問題
- 後來是因為SpeedMod作者跟ULK作者提到這件事,接著釐清問題到底出在那一段
- 最後才弄清楚是在Voodoo這段與三星預設的順序上有了一點小小的出入
- 而在Voodoo作者弄出修正版之前,SpeedMod作者便先推出了K9版
- 事實上,其他三版的作者也正在檢視自己的程式碼,或許會推出自己該版的修正版本
起因:
有一位Voodoo作者發現到在/system掛載 RFS 檔案格式 filesystem 下了指令[without check=no]時,會有corruption發生。導致部分檔案名稱被改成大寫、檔案無法讀取或目錄無法列出、產生user.log等等的情況,遂深入探討:
發生原因:
- 會發生在file system有rfs格式時,有時候會產生無法正常掛載(mount),導致之前有人使用Voodoo Lagfix(因為Voodoo選項,有保留使用rfs格式)時會有進不了系統的狀況。
- 而有趣的是,這樣的情況往往發生在使用Voodoo Lagfix且重複刷過其他ULK核心的情況,但包括ULK原作者在內的幾位開發者都沒有發生這類情形,是因為rfs格式filesystem曾經下過[without check=no]掛載之後,持續這狀態而沒有重新掛載時,都不會有問題的,但一般使用者在重複刷ULK核心時,就會產生再次以[without check=no]指令重新掛載,便導致corruption發生
- 那為何原廠設定不會發生這種情況?因為原廠就是使用rfs格式,當然指令要掛載在rfs時,也不會出錯。
- 目前可以確定的是Voodoo的code有狀況,而不是ULK的code出錯
- 那為何平常使用Voodoo選項時,不會當掉?因為這問題只有在掛載時,偶爾會發生。
進一步消息就是.....
-------------------------------------
ULK原作者sztupy的回應:
1.三星預設掛載/system時,就是r/o,而且當完成寫入/system partition之後,就是預設[check=no]
2.而三星的 init script (exdecuted on the line exec apply_disk_policy)
3.換言之, 倘若corruption是真實存在且發生在"exec apply_disk_policy",那麼corruption才會真的發生
抑或 在我的預設設定裡,從未將/system掛載之後還去檢查是否為[check=no]之原因,導致當掛載/system為r/o之後,再去檢查是否為[check=no]而出現問題?
試想,三星怎會在/system 設定為r/o之後,還用init來寫入/system呢?
事實上,我的sciprt之再掛載/system r/o都是在init已經啟動之後,而不是init啟動前
-------------------------------------
(1124)Voodoo原作者supercurio 的回應:
1.為了避免上述狀況再次發生,最新版的Voodoo版本在/system將改成ext4格式
2.Voodoo修正核心刷機到開機的時間約3分鐘,期間會有兩段以英語發音的過程成功與否之語音提示,請耐心等待
3.除了要繼續用Lagfix-Voodoo選項時,才需要刷此Voodoo修正核心,其他則不需要。
4.此Voodoo修正核心之解決方法,並非修理已經發生corruption,而是避免以後發生此類之/system掛載出錯的corruption
5.作者的第一版連結移除,是因為修正了一些log的bug後,推出第二版,故目前下載連結已經換成第二版。
------------------------------------
(11.24)更深入的內情...(看不看都沒關係)
其實前述幾位xda作者各自講的片段,都是正確的,並沒有各執一詞,僵持不下的情形。
況且不論是ULK將各方高手的程式碼整合進來、或是其他作者將ULK整合到自己的程式碼中,也是徵求過原作者的同意,差別只有在新舊版。整個故事如全篇登載的話,會有許多專用術語要解釋說明,會顯得很繁複,讓其他網友更弄不清楚怎麼回事(光是刷機的順序都容易弄混,更何況這些高來高去的指令)。
例如,後來作為修補之用的程式碼(-o check=no)要在既然要掛載rfs的同時,還去check=no及為何會導致currption,要理解的話,需要邏輯夠強...
有興趣的,可以看Voodoo作者自己怎麼說
---------------------------------------------------------
僅節錄Voodoo作者在xda的FAQ
Lots of things are strange about RFS and i hit several bugs during Voodoo 5 development, which is able to converts /system back to RFS
This is just another example of an RFS inconsistency. Why the hell should all filesystem be mounted only with -o check=no ?
Good question, this is absurd ^^
However, a RFS filesystem mounted without check=no stay usable as long as you continue to mount it without check=no. This is why sztupy and a lot of people didn't noticed it.
But I'm sure a few people had the issue after re-flashing another kernel and thought they made a mistake.
Official Samsung kernel don't boot, or boot but the /system has errors. Missing media files (sound?) or binary ? Yes, this is the cause.
---------------------------------------------------------
- 所以我選擇花點時間,精簡出最後的結論,而不是全篇登載。
總體而言,我是同意ULK作者sztupy的看法,這件事是一個inti.階段順序上的小問題,會發生currption的原因,便是在順序上出了錯。而出事的程式片段,並不是每次都會發生,而且是出在/system掛載在rfs格式 filesystem上,也就是選用voodoo 選項。
所以Voodoo作者最後決定也放棄/system的rfs格式,改用ext4格式,也是這個原因。
像我沒用Voodoo選項,就從沒發生過這樣的currption,直到刷K9版才卡住
而且還是今日重新刷ROM之後,刷K8-500版(選項7)之後才去刷K9版...
後來就是服用Voodoo解藥後,再刷K9版,才解決的。
在K8版以前,怎麼刷一直以來也沒有問題。
所以儘管沒用voodoo選項,但對於刷K9版 vs 刷其他版的衝突性,還是真的存在
因此要怎麼作簡單的說明並協助大家順利刷成功,還真不容易
......說了這麼多,就是告訴大家,關於這件事不是出在ULK核心上
......顯然是有用到rfs格式的lagfix,在第一時間就先將/system給r/o了
簡單的說,當用了lagfix選項裡有包括到rfs格式filesystem時,會重複設定/system r/o而導致三星預設之init script無法寫入,所以會困在「S」進不了系統
----------------------------------------
相信版上一堆人還是弄不清楚上述講的是什麼意思
沒關係!請參照最前面的解決方法
1. 若是未做Lagfix or Lagfix-Option2 or Lagfix-Option3的人,因為系統有保留RFS的格式~
所以若是刷了優化核心(D大提了四項),就有機會造成系統無法開機的可能。
2. 目前看來只有Speedmod Froyo 341MB RAM中的K9已經有針對這個問題處理,
其他的優化如果遇到第一點的三種狀況,還是有一定機會造成系統的問題。
3. 綜合以上兩點,
(1)如果需要優化,又要做Lagfix就是建議避開Option2跟Option3。
(2)或者優化一定要採用Speedmod Froyo 341MB RAM的K9的優化核心,
就可以不必在乎使用哪種Lagfix了。
D大,這樣的理解,不曉得是不是正確呢?麻煩一下。謝謝!
威廉華勒斯 wrote:
作者哪邊的下載點是不是收了?
點進去出現not found.
到這個討論串的第二篇裡有。
http://forum.xda-developers.com/showthread.php?t=848471