Vấn đề về sử dụng bộ nhớ thiết bị (Storage) của Cydia - semi untethered jailbreak.

phamtuananh2085
18/8/2016 9:22Phản hồi: 710
Vấn đề về sử dụng bộ nhớ thiết bị (Storage) của Cydia - semi untethered jailbreak.
Cập nhật ngày 20/09/2016: Không xóa hoặc đổi tên file .cydia_no_stashing trên semi untethered jailbreak như trong bài viết. Cách tối ưu nhất đã được cập nhật cuối bài.

Khi đọc các bài viết cũng như các comment trên diễn đàn, mình nhận thấy rằng rất nhiều người, trong đó có cả mình đã có vài sự nhầm lẫn khi nói tới các vấn đề về việc sử dụng bộ nhớ thiết bị của Cydia, trong phiên bản Semi - Untethered jailbreak. Có thể là do chưa hiểu rõ được cách hoạt động của nó nên đôi khi sự nhầm lẫn này cũng dẫn tới sai lệch trong việc "chuẩn đoán" và khắc phục các lỗi liên quan quan tới nó. Vì thế mình viết bài này, cũng xem như là vừa "nghiên cứu" để chia sẻ với mọi người, vừa học hỏi đối với những ai rành về lĩnh vực này. Cũng xin nói trước là trong bài viết này mình chỉ trình bày theo một cách "dân dã" thông thường để cho dễ hiểu nhất thông qua các ví dụ thực tiễn và cũng xin bỏ qua tất cả các vấn đề "sâu xa" và các khái niệm chuyên môn trong lĩnh vực Storage, chỉ chủ yếu xem nó hoạt động như thế nào.


Trước tiên ta sơ lược qua về bộ nhớ của thiết bị, trong ví dụ minh họa là iPhone 6s plus 64GB.

1. Bộ nhớ lưu trữ ROM:


Bỏ qua cái khái niệm ROM là gì nhé. Chỉ cần biết là nếu tôi có con iPhone 64GB thì tôi đang có bộ nhớ lưu trữ dữ liệu trong máy khoảng 64GB vậy thôi. Vì thế, IOS cũng chỉ cho ta biết nhưng thông tin cơ bản như thế trong mục Cài đặt chung => Dung lượng & Sử dụng iCloud => chọn phần Quản lý Dung lượng của phần Dung lượng (không nói đến "thằng" iCloud nhé) :


storage1.png storage2.png

Ta vào AppStore cài ứng dụng Lirum Info vào để tìm hiểu sâu thêm một chút nhé:

storage3.png
Như vậy là IOS đã chia cái bộ nhớ ROM của ta ra thành nhiều phần cho các chức năng riêng biệt và quản lý rất chặt chẽ các phần này. Ta tạm thời chia nó thành hai phần cơ bản để cho dễ nhớ và dễ hiểu là Vùng dữ liệu hệ thống, và Vùng dữ liệu người dùng.

Vùng dữ liệu hệ thống (Phân vùng System):
  • Nhìn hình trên ta có thể thấy rằng trong tổng dung lượng ROM, Apple sẽ dành ra khoản gần 4GB để sử dụng cho việc lưu trữ OS và cài đặt các ứng dụng mặc định (Stock app) và lẽ dĩ nhiên vùng dữ liệu này ta không có quyền can thiệp trực tiếp lên nó, mọi tác vụ lưu trữ, thêm, sửa ,xóa đều phải thông qua OS với những phương thức riêng biệt.
Vùng dữ liệu người dùng (Phân vùng User):
  • Trên thiết bị 64GB ROM, Apple đã dùng gần 56GB vào các việc như cài đặt các ứng dụng của bên thứ 3, lưu trữ dữ liệu của các ứng dụng (dữ liệu của cả ứng dụng mặc định lẫn ứng dụng bên thứ 3 luôn) và lưu trữ dữ liệu của người dùng. Đương nhiên rằng việc lưu trữ dữ liệu lên vùng này cũng được IOS quản lý chặt chẽ thông qua các phương thức của riêng từng ứng dụng, chứ không phải muốn lưu ở đâu cũng được.
Để kiểm chứng cách lưu trữ như trên cũng khá đơn giản, ta thấy rằng khi cài ứng dụng Lirum Info, vốn là một ứng dụng của nhà phát triển bên thứ 3 được tải về thông qua App Store, thì dung lượng của ứng dụng được cộng dồn vào vùng dữ liệu người dùng, các dữ liệu của các ứng dụng mặc định như hình ảnh, mail, danh bạ,... cũng được cộng dồn vào vùng dữ liệu người dùng. Vùng dữ liệu hệ thống hoàn toàn không bị thay đổi.

Nếu là một người dùng bình thường thì ta chỉ cần biết tới đây là xong, cứ thế mà sử dụng, IOS sẽ tự sắp xếp, tự quản lý các dữ liệu theo cách "tối ưu" nhất, ta không cần phải bận tâm (mà có quan tâm thì cũng chẳng làm gì được vì IOS nó cấp "quyền" cho ta chỉ có thế và đổi lại sử "ổn định và an toàn" cho ta). Chính vì IOS sẽ thực hiện tất cả các công việc quản lý, tối ưu trên hệ thống nên ta cũng đừng quá "cầu toàn" trong việc theo dõi cũng như tìm cách "tiết kiệm" bộ nhớ vì điều này kết quả cuối cùng sẽ là "mệt" cho bản thân. Khi theo dõi thường xuyên mức sử dụng bộ nhớ của IOS ta nhận thấy đôi khi dù không làm gì nhưng dung lượng bộ nhớ sẽ có lúc tăng, lúc giảm, ví dụ như khi chạy nhiều ứng dụng trong thời gian kéo dài mà không thoát hẳn hoặc những lúc thiết bị cài đặt, đồng bộ dữ liệu, tải cập nhật ... dung lượng bộ nhớ sẽ "tăng" nhưng sau đó, khi reboot lại thiết bị dung lượng sẽ giảm vì IOS có thể dùng một phần nào của bộ nhớ để lưu trữ các dữ liệu "tạm thời" trong khi thực hiện các tác vụ và sẽ "dọn dẹp" nó vào một thời điểm thích hợp.

2. Cách sử dụng bộ nhớ thiết bị của Cydia - bản semi untethered khi ta tiến hành jailbroken thiết bị
Có nhiều cách thức, phương thức tiến hành jailbroken hệ thống tùy theo từng phiên bản của jajlbreak tool, ta sẽ lấy tool mới nhất của PanGu để làm ví dụ trên phiên bản IOS 9.3.3 (cũng chỉ có mỗi tool này trong thời điểm này thôi, he he)

Quảng cáo


IOS 9.3.3 ở trạng thái mới được restore thông thường sẽ chỉ còn khoảng 600MB (chính xác 602.3MB) trên vùng dữ liệu hệ thống:
storage4.png
Ta tiến hành cài đặt gói ứng dụng Pangu vào thiết bị bằng cách chạy file NvwaStone_1.1.ipa thông qua công cụ Impactor trên máy tính. Khi mới được cài đặt vào thiết bị, ứng dụng Pangu bản chất vẫn còn là một dạng "gói cài đặt" có dung lượng tương đương dung lượng với file NvwaStone_1.1.ipa và được IOS lưu trữ trên phân vùng user.
storage5.png
Chỉ khi ta chạy nó trên thiết bị thì "gói" này mới được "bung" ra cài đặt thành hai phần: app Pangu và app Cydia. Lúc này app Pangu được xem như một ứng dụng bên thứ 3 được lưu trên phân vùng user, và app Cydia là một ứng dụng hệ thống lưu trên phân vùng system. Ta có thể xóa app Pangu bằng cách truyền thống là nhấn giữ lâu vào icon của nó trên màn hình Springboard nhưng không thể xóa app Cydia bằng cách này được. Và vì app Cydia được lưu trữ trên phân vùng system nên dung lượng lưu trữ của vùng này sẽ giảm xuống chỉ còn 582,2MB.

storage6.png storage7.png
Bây giờ thiết bị của ta đã ở trạng thái được jailbreak, và sẽ chẳng có vần đề gì nếu như Cydia không cài đặt và lưu trữ tiếp tục các tweak lên phân vùng system vốn đã "chật hẹp". Việc cài đặt và lưu trữ dữ liệu trực tiếp lên phân vùng system của Cydia sẽ làm cho phân vùng này sẽ dần "nhỏ hẹp" sẽ làm phát sinh ra một số lỗi không mong muốn trong quá trình hoạt động của thiết bị như báo lỗi, không cài đặt thêm được, và đôi khi tự reboot máy...

Để kiểm chứng ta vấn đề trên cài đặt thử một tweak vào theo dõi. Vào Cydia tải và cài đặt tweak iFile:

storage8.png storage9.png
Bản thân tweak iFile sẽ có dung lượng khoảng 20MB nhưng để hoạt động được nó cũng cần thêm một số gói điều khiển để hỗ trợ vì thế nếu trong thiết bị chưa có các gói điều khiển tương ứng nó sẽ tự động tìm và tải về cài đặt chung với iFile và sẽ được lưu trữ trên phân vùng system. Như vậy tổng các source để tải sẽ có dung lượng khoản 11,4 MB, lưu ý rằng source cài đặt là các tập tin đã được đóng gói và mã hóa nên tổng dung lượng của nó nhỏ hơn dung lượng thực tế sau khi cài đặt của ứng dụng là chuyện bình thường và các tập tin này trong quá trình được tải về và thực thi, "bung" nén sẽ được lưu trên bộ nhớ tạm (RAM), nó sẽ được OS "thanh trừ" trong một thời điểm thích hợp nào đó.

Quảng cáo


storage10.png storage11.png
Như vậy sau khi cài đặt xong, tweak iFile cùng các gói điều khiển kèm theo lại "ngốn" mất thêm một phần dung lượng phân vùng system của ta, giờ lại giảm chỉ còn 556,4 MB. iFile được xem như là một ứng dụng hệ thống nên được lưu trữ trong đường dẫn /Application và chiếm gần 20MB (18,866,901 Bytes) như đã được thông báo.

Tới đây ta có thể nhận thấy một vần đề là càng cài đặt nhiều tweak và các gói điều khiển thì sẽ càng làm thu hẹp phân vùng system. Đến một lúc nào đó khi tới "hạn mức" được cho phép thì OS sẽ thông báo lỗi và sẽ không cho một thực thi một số hoạt động cũng như sẽ phát sinh một số lỗi "tiềm ẩn" trong quá trình thực thi code của OS.

Ta sẽ làm một "thí nghiệm" nhỏ cố tình tạo nên lỗi để thấy được hoạt động của IOS trong vấn đề này:
Vào Cydia tải và cài đặt Apple File Conduit "2" trên thiết bị rồi kết nối với máy tính dùng itools chép một file có dung lượng lớn vừa đủ để làm đầy phân vùng system, chép ngay đường dẫn "/" (thư mục gốc của phân vùng này). Trong quá trình đang ghi dữ liệu (đang chép file sang iphone) diễn ra, khi dữ liệu được ghi tới một mức "nào đó" (cụ thể là còn trống bao nhiêu MB cũng không biết vì không để ý) OS sẽ lập tức hiện các cảnh báo cho ta về dung lượng của thiết bị.

storage12.png storage13.png
Vẫn tiếp tục cố gắng "làm đầy" hết phần dung lượng trống của phân vùng system, cho đến khi phân vùng này chỉ còn trống khoảng trên dưới 1MB thì ta không thể chép thêm bằng itools được nữa. Quay vào cydia tiếp tục "làm đầy" bằng cách tải và cài đặt thêm một số tweak nữa và kết quả là Cydia sẽ báo lỗi khi mà phân vùng này đầy "thực sự", lúc này thông số Free của phân vùng này sẽ là 0% - 0 bytes.

storage14.png
storage15.png

Như vậy, khi phân vùng system không còn dung lượng thì IOS sẽ cảnh báo vào sẽ không thể thực hiện các tác vụ lưu trữ thêm nữa khi nó thực sự đầy, Cydia báo lỗi, và dĩ nhiên tweak sẽ không cài đặt được nữa. Lúc này, ngoại trừ việc xóa bớt dữ liệu của phân vùng system thì không còn cách nào khác kể cả việc cài cố cài tweak Stashing for ios 9.2-9.3.3 (mà hết dung lượng kiểu này có cài cũng có được đâu), hay chỉnh tham số UserHighWaterMark của hệ thống cũng không thay đổi được gì. Các phương thức đó chỉ để phòng ngừa, hạn chế lỗi trên chứ không phải khắc phục lúc nó đã xảy ra cũng như không thể nào bị HIV rồi mà dùng B thì có thể hết được.

Có một điều nếu để ý thì ta sẽ thấy, khi phân vùng system thật sự đầy, mặc dù tweak không được cài đặt vì không còn chỗ ghi dữ liệu lên nữa, nhưng quá trình tải file source và quá trình "bung" giải nén file source vẫn được thực thi, chứng tỏ dữ liệu "tạm thời" phục vụ cho các tác vụ này được lưu trữ trên một phân vùng khác, và chắc một điều rằng RAM và phân vùng user không bị ảnh hưởng gì trong trường hợp này. Cụ thể là các thông số RAM ở thời điểm này đều bình thường, IOS vẫn hoạt động trơn tru, mượt mà, vào app store tải và cài đặt các ứng dụng trong đó về vẫn chạy "ầm ầm", tin nhắn, mail vẫn nhận bình thường vì các dữ liệu đó được lưu trữ trên phân vùng user mà. Nhưng những tác vụ liên quan tới dữ liệu hệ thống thì sẽ lỗi nhé ví dụ như các tác vụ ghi log hệ thống, cập nhật OS, ...

*Như vậy tóm lại lỗi này không phải do RAM.* (nhận định này còn cần phải xem xét lại!)

2. Phương thức Stashing của Cydia và tweak Stashing for ios 9.2-9.3.3.

Nhận thấy những vần đề bất cập về việc lưu trữ trong phân vùng system, tác giả đã đưa vào Cydia phương thức "stash" để giải quyết vấn đề mở rộng thêm không gian lưu trữ ngay trên vùng nhớ system.

Giải thích nôm na cho dễ hiểu là phương thức stash này sẽ làm thay đổi vị trí một số dữ liệu sang một phân vùng khác giúp tạo thêm "khoảng trổng" cho phân vùng đang cần, nhưng vẫn đảm bảo sự liên kết đường dẫn giữa các thành phần với nhau để hệ thống được hoạt động tốt như cũ. Ở đây, do không phải "chuyên môn" nên ta không bàn đến cách thực hiện để làm nên phương thức này ra sao mà chỉ theo dõi nó hoạt động như thế nào và ta được lợi ích gì từ nó thôi nhé.
  • Stash trong Cydia.
Chuyện kể rằng, từ thời "xa xưa", cái thời mà các phiên bản jailbroken untethered được phát triển và hoạt động ổn định trên nền IOS, để tạo thêm "không gian" cho việc lưu trữ trên phân vùng hệ thống, khi mà phân vùng này không thể mở rộng thêm về phương diện vật lý, người ta đã đưa phương thức stash vào Cydia để stash bớt một số dữ liệu hệ thống của chính hệ điều hành IOS sang phân vùng khác nhưng vẫn đảm bảo sự gắn kết giữa các thành phần thư mục, tập tin hệ thống với nhau bởi các "đường dẫn link". Phương thức này tỏ ra rất hiệu quả để giải quyết được vần đề lưu trữ, sau khi stash bớt một thành phần thì phân vùng hệ thống sẽ tăng lên "đáng kể" về không gian (có thể trống thêm hơn 1GB), và nó hoạt động tốt trên môi trường untethered vì trên môi trường này việc jailbroken trở thành "xuyên suốt", gắn kết luôn với hệ điều hành.

Nhưng cho đến "nay", khi mà jailbroken chỉ hoạt động trên môi trường semi - bán tháo, thì việc stash các thành phần hệ thống đi chỗ khác sẽ trở thành một mối nguy hiểm "tiềm ẩn" bởi khi reboot, thiết bị sẽ trở lại trạng thái unjailbreak và sẽ có thể không nhận biết các liên kết giữa các thành phần hệ thống và gây ra các lỗi khi có tác vụ cần truy cập vào các thành phần này. Chính vì thế Cydia "ngày nay" đang tạm thời được disable phương thức stash bằng một tập tin rỗng có tên là ".cydia_no_stash" có chức năng Flag (cờ báo hiệu) được lưu trữ ngay thư mục gốc của phân vùng hệ thống (đường dẫn "/", và tập tin này được ẩn đi, nên muốn thấy nó phải mở chức năng "Hiện tập tin ẩn" của trình quản lý file).

Việc này đã gây ra nhiều "tranh luận" cho các dev chia họ thành 2 nhóm, một nhóm ủng hộ việc tắt Flag bằng cách xóa hoặc đổi tên tập tin ".cydia_no_stash" để sử dụng phương thức stash trong cydia, một nhóm ủng hộ cho việc giữ lại tập tin để disable chức năng stash để cydia hoạt động ổn định hơn. Và như thế cũng có nghĩa là nếu enable hay disable stash trong cydia thì cydia cũng có thể hoạt động được. (Chúng ta cũng không nên "bàn cãi" về vấn để này như các dev vì ít ra họ cũng biết nhiều hơn ta)

Sau này khi cập nhật phiên bản mới của Cydia Substrate, anh Jay cũng có fix một số lỗi về vấn đề này, anh em nên cài vào cho an toàn.
(Thông tin về bản cập nhật này: https://cydia.saurik.com/package/mobilesubstrate/, anh em có thể tham khảo.)
Và vì tính quan trọng cũng như phức tạp của tweak này thì nếu có ý định cài nó (mà trước sau gì cũng phải cài ah, vì có khá nhiều tweak "đòi hỏi" phải có mặt nó mới chịu hoạt động ) thì nên cài đặt đầu tiên để hạn chế lỗi, đặc biệt là việc enable chức năng stash của cydia đã nói bên trên. Thêm một điều nữa là tweak này không cài thì thôi, đã cài thì đừng nên xóa, xóa là sẽ lỗi cydia ngay.

Xong phần kể chuyện, giờ tới phần thí nghiệm:

Restore mới về 9.3.3 (restore này chỉ để chắc rằng test máy cho kết quả đúng thôi nhé không nhất thiết phải làm ), jb máy, vào Cydia cài iFile. Thoát ra ngoài, tắt Cydia trong background, mở iFile lên, vào đường dẫn "/" đổi tên file ".cydia_no_stash" thành ".cydia_co_stash". Save lại. Mở Cydia lên lại.
storage16.png

Cydia, cập nhật lại hệ thống xong ok, chạy ngon lành, mọi thứ đều bình thường như chưa có gì xảy ra. Mở Lirum Info lên xem thử, wow kết quả thật bất ngờ:

storage17.png
Reboot lại máy, vẫn bình thường xem thử nào. Wow thật là bất ngờ:

storage18.png

Một giao diện rất "phẳng", không còn gì để "phẳng" hơn được nữa, nhưng thôi restore lại máy mới nghiên cứu tiếp được.
Như vậy nguy hiểm "tiềm ẩn" của việc xóa bỏ tập tin .cydia_no_stash đã "xuất hiện" trong trường hợp này. Nhưng qua tìm hiểu thì vẫn có rất nhiều trường hợp vẫn "tiềm ẩn" chưa "xuất hiện", vì thế mình không khẳng định nếu làm đúng như mình là sẽ 100% lỗi nhé.

.............................Chết cha, sắp tới giờ xổ số rồi, đi dò cái đã, còn nữa nhé các bạn, mình sẽ trở lại trong vòng ... nữa....

Qua tìm hiểu thì được biết phương thức stash của cydia sẽ hoạt động khá tốt trên các bản untethered jailbreak, như vậy mình "đoán" rằng trên các phiên bản ios cũ được jb sẽ không có tập tin .cydia_no_stash này. Đáng tiếc đây chỉ là dự đoán vì thời "xưa", khi còn đang ở 9.0.1 và 9.0.2 jailbreak máy không để ý đến vấn đề này nên cũng không nhớ là có hay không, nhưng sau một vòng "rình" xem lại từng "tấc" phim của các video clip jaibreak của các phiên bản jailbreak cũ trên youtube thì mình thấy trong thư mục gốc của các bản này không có tập tin .cydia_no_stash, để chắc chắn về thông tin này thì mong anh em nào đang dùng phiên bản cũ có "ghé" qua check lại dùm. Thanks.
  • Tweak Stashing for iOS 9.2 - 9.3.3
Với "môi trường" semi thì phương thức stash của cydia không còn hiệu quả nữa, nên vấn đề về thiếu dung lượng lưu trữ lại quay trở lại và là một nỗi "ám ảnh" đối với các fan "sưu tầm" tweak. May sao, có anh Coolstar lại cho ra một tweak Stashing với phương thức stash có thể tương thích trên môi trường này, vì thế chắc các bạn cũng đã hiểu vì sao cái tên của tweak lại là "... for iOS 9.2 - 9.3.3" và cũng vì dài quá nên từ đây ta chỉ gọi ngắn là Stashing thôi nhé.
Anh CoolStar này không chọn cách stash các thành phần hệ thống của iOS như Cydia mà chơi "chiêu" là stash chính các tweak của Cydia khi được cài đặt trên hệ thống (ngoài lề một chút: hình như chính "chiêu này" mà có vẻ như các "fan ruột" của Saurik không ưu anh này lắm, hi hi ).

Dù rằng thời gian đầu tweak này cũng có khá nhiều bug nhưng cũng đã dần được fix qua các version mới, phiên bản mới nhất 1.4.3 từ nguồn coolstar.org/publicrepo, hoạt động khá tốt trên môi trường semi. Tuy tweak của CoolStar không cho ta "không gian" rộng hơn cydia nhưng cũng phần nào "hạn chế" được dung lượng ghi lên phân vùng system, giúp ta tiết kiệm hơn và ở thời điểm hiện tại thì nó cũng được xem là một trong những giải pháp đáng quan tâm trong vấn đề này.

Nói nhiều quá, thôi restore máy để test xem hoạt động ra sao:

Restore thiết bị xong, tiến hành jailbreak máy, vào cydia add nguồn coolstar.org/publicrepo, cài đặt Stashing for iOS 9.2-9.3.3 đầu tiên:
storage20.png
storage21.png
storage22.png
Tweak này cũng tải kèm theo các gói điều khiển cần thiết. Qua màn hình thông báo của cydia ta thấy rằng ngay khi được cài đặt xong, tweak này tự động quét hệ thống và tiến hành "stash" một số thành phần, và nó cũng thông báo rằng có những thành phần chưa được hỗ trợ nên việc stash sẽ không thực hiện được. Dung lượng trống của phân vùng system lúc này là 574,9 MB so với 582,2 MB trống khi mới chỉ cài đặt app Cydia như đã trình bày ở phần đầu bài viết, vậy tweak Stashing và các gói điều khiển hỗ trợ kèm chiếm khoảng 7MB.

Tiếp tục tiến hành cài iFile. Ở đây ta cũng nhận thấy rằng trong các gói điều khiển mà iFile cần để hỗ trợ thì sẽ có gói trùng với gói mà Stashing đã cài trước đó, vì vậy quá trình cài sẽ chỉ tiếp tục tải kèm những gói nào chưa có, và đây cũng là lúc tweak Stashing hoạt động đúng với chức năng của nó.
storage23.png
storage24.png
Phân vùng hệ thống lúc này còn trống là 567 MB. Như vậy với Tweak Stashing + iFile + các gói điều khiển cho cả 2 tweak thì trống 567 MB so với iFile + các gói điều khiển của chỉ mỗi iFile (không có Stash) mà trống có 556,4 MB như trường hợp ở đầu bài, rõ ràng việc có Stashing sẽ giúp cho ta tiết kiệm được khoảng 10 MB. 10 MB, nghe nhỏ bé quá nhỉ, nhưng đừng coi thường nó, khi cài càng nhiều tweak thì con số tiết kiệm được sẽ càng lớn, điều này sẽ hạn chế việc đầy bộ nhớ gấp nhiều lần khi không dùng stashing.

Vậy, "nếu như tôi mới vừa biết được công dụng của tweak Stashing và muốn sử dụng nó, nhưng trên hệ thống, tôi đã cài đặt một đống tweak khác trước nó rồi giờ chẳng lẽ phải xóa sạch hết rồi cài Stashing trước xong lại phải cài lại các tweak từ đầu mới được ah?".

Xin thưa là không cần thiết phải như thế, như đã trình bày ở trên, sau khi được cài, Stashing sẽ ngay lập tức scan hệ thống và tiến hành "stash" những thành phần được hỗ trợ. Để kiểm chứng điều này mình đã xóa sạch những gì vừa mới cài đặt trong cydia (iFile + các gói điều khiển và cả tweak Stashing) trả về 582,2 MB dung lượng trống như trạng thái lúc đầu rồi lại cài lại iFile trước xong mới cài Stashing sau, hệ thống vẫn cho kết quả như cũ (trống 567MB). Về lý thuyết, Stashing sẽ stash được những gì cài đặt trước nó nên việc cài nó trước hoặc sau không quan trọng. Thực tế, qua tìm hiểu trong các cuộc trao đổi giữa các dev với nhau thì có ý kiến cho rằng với một số lượng tweak nhất định được cài đặt trước nó, Stashing sẽ thực hiện được đúng chức năng của nó và cho kết quả tốt, nhưng nếu một số lượng tweak "quá nhiều" thì quá trình này có thể sẽ cho kết quả khác vì khi xử lý quá nhiều có thể vượt quá "giới hạn" của phần cứng, chẳng hạn như tràn bộ nhớ "tạm" khi lưu trữ cho quá trình xử lý stash, nhưng cũng chưa ai có số lượng "quá nhiều" tweak như thế để kiểm chứng được nên các bạn cứ việc yên tâm. Nhưng để tối ưu nhất thì nên cài nó trước.

"Stashing nó sẽ stash các thành phần đó đi đâu?"


Nó sẽ stash dữ liệu vào trong đường dẫn /var/stash. Mặc định Cydia no stash (tạm thời cứ gọi Cydia phiên bản mới như vậy đi, vì nó không dùng stash) sẽ không có thư mục stash, thư mục này chỉ xuất hiện khi có một tweak nào đó có nhu cầu sử dụng phương thức stash tạo nên nó (chẳng hạn như Cydia Substrate khi cài vào cũng tự tạo ra thư mục stash này để stash một số thành phần vào đó sử dụng cho nhu cầu của riêng nó). Khi dùng Stashing thì nó cũng sẽ tự tạo thư mục appsstash bên trong thư mục stash này để lưu trữ các tweak của Cydia vào đây.

storage25.png storage26.png
Thư mục stash và đường dẫn gốc của nó khi được "link" đến.

storage27.png storage28.png
iFile được stash vào thư mục appsstash và dung lượng của nó.

storage29.png
Như vậy sau khi được stash, iFile chỉ còn khoảng 325,199 Bytes trong thư mục Applications
"Stashing đã thực hiện tốt chức năng của nó khi các tweak của Cydia được cài đặt vào. Vậy vấn đề gì sẽ xảy ra nếu khi xóa các tweak và thậm chí là xóa Stashing trước khi xóa các tweak khác?"

Đương nhiên Stashing thực hiện "di dời" các tweak của Cydia kia cài đặt mới thì khi xóa các tweak, nó cũng phải thực hiện việc "dọn dẹp" trả lại sự thống nhất cho hệ thống.
storage30.png storage31.png
Khi xóa iFile, Stashing cũng tự kích hoạt và dọn dẹp các thành phần nó đã stash.
Đương nhiên iFile trong thư mục appsstash cũng sẽ được xóa đi.
Còn vấn đề nếu xóa Stashing trước khi xóa các tweak, thì về mặt lý thuyết cũng sẽ tương tự như trường hợp enable phương thức stash của Cydia trong môi trường semi, vì trong một gói ứng dụng Stashing có thể chỉ stash được một số thành phần mà nó được hỗ trợ, cũng sẽ có một số thành phần nó không stash được và việc "tồn tại" của nó là đảm bảo cho sự gắn kết giữa các thành phần stash và không stash giúp các thành phần này "hiểu" được lẫn nhau nên việc "tiêu diệt" có thể làm đứt đoạn sự liên kết này và gây ra một số nguy cơ "tiềm ẩn".

Tới đây chắc các bạn cũng thắc mắc rằng, tại sao mình cứ hay nói là "tiềm ẩn" ? Vâng, như các bạn cũng đã biết thì trong lĩnh vực "code" của phần mềm thì lúc nào cũng phát sinh những cái "tiềm ẩn" mà có thể sẽ không "bộc phát" ra hết được trong quá trình debug, và nhất là khi mình chỉ làm những "thí nghiệm" thực tiễn để test chứ không nắm được rõ nội dung của code trên iOS nó có những gì, nên những điều mình làm trên máy của mình chỉ để tham khảo, có thể trên máy khác, trên phiên bản khác, trong các điều kiện khác, các kết quả sẽ không đúng 100% như thế.

Trở lại vấn đề trên, khi test thực tiễn, mình đã xóa Stashing và giữ lại iFile để xem nó hoạt động thế nào. Kết quả là iFile và mọi thứ trên máy hoạt động bình thường, vẫn reboot lại máy và chạy app Pangu jailbreak lại để vào Cydia như cũ. Nhưng đây chỉ là kết quả trong việc test trong thời gian ngắn, công việc test là chỉ mở các ứng dụng lên xem có chạy được không, và trong hệ thống lúc này chỉ có mỗi Cydia, Stashing và iFile không cài thêm gì cả, thậm chí trên máy cũng chỉ mới có những stock app mặc định của iOS khi mới restore, chưa tinh chỉnh gì.

Tóm lại, để Cydia hoạt động tốt thì nên theo nguyên tắc "ngoại trừ những gì không thể xóa khi đã cài đặt thì cái gì cài đầu tiên thì xóa nó sau cùng"

3. Dùng iClean Pro để "thanh trừ" hệ thống

Ngoài các giải pháp trên, ta vẫn còn thêm một giải pháp dùng tweak iClean Pro để có thể tự tay "làm sạch" hệ thống theo ý của mình. Tweak này chắc không còn "xa lạ" gì với các bạn nên mình cũng xin trình bày ngắn gọn phần này.

Khi dùng ta có thể xóa bớt một số thành phần hệ thống của iOS được cho là "không dùng đến", như các app, các gói ngôn ngữ, các kiểu bàn phím, hình nền mặc định... Việc xóa những thành phần này cũng mang lại cho ta thêm kha khá dung lượng trống trên phân vùng hệ thống. Ví dụ như sau khi kết hợp nó với Stashing và dùng nó để xóa hết các ngôn ngữ (chỉ chừa lại ngôn ngữ japanese và tiếng việt), xóa hết các hình nền mặc định thì nó cho thêm khoảng 300MB dung lượng trống nữa (lúc này là chỉ xóa ngôn ngữ và hình nền mặc định thôi nhé, không xóa thêm gì nữa)

storage32.png
Nhưng trong quá trình hoạt động trên môi trường semi jailbreak mình nhận thấy nó vẫn chưa được hỗ trợ tương thích lắm, đôi khi nó gây ra lỗi cho cydia và cho cả app Pangu nhất là khi "đụng chạm" tới các daemons điều khiển của hệ thống. Mình đã từng 4 lần phải restore lại máy vì nó và cũng không biết vì một lý do nào đó, trong một thời điểm bất kỳ nó đã "giết" chết thằng app Pangu sau khi reboot máy.

Chính vì thế, mình chỉ khuyên là nên dùng nó để xóa bớt dữ liệu không cần thiết của hệ thống thôi, xong rồi xóa nó luôn và cũng nên nhớ là xóa mất một thành phần nào đó của hệ thống thì cũng có nghĩa là tạo thêm một nguy cơ "tiềm ẩn" trong hệ thống (mới có di dời, chuyển qua chuyển lại thôi mà còn có nguy cơ huống chi xóa nó luôn phải không )

4. Các vấn đề còn tồn tại quanh thông báo lỗi của Cydia về vấn đề bộ nhớ :


Mục đích chính của bài này cuối cùng cũng chỉ để tìm ra phương án giải quyết vấn đề Cydia báo lỗi khi vùng nhớ hệ thống bị "đầy" không lưu trữ được nữa.

loicydia.png
Cũng có trường hợp phản ánh rằng: "tại sao máy tôi còn "trống" nhiều dung lượng nhưng lại vẫn bị báo lỗi này". Qua tìm hiểu thì mình nhận thấy có vài vấn đề nên làm rõ:
  1. Máy còn "trống" nhiều dung lượng nhưng dung lượng còn trống đó là dung lượng của vùng dữ liệu nào trên máy.
  2. Qua các cuộc trao đổi về phản ánh tương tự như trên, mình có nghe "phong phanh" rằng ở thời điểm đầu khi mới public tool jailbreak mới chạy trên môi trường semi thì vẫn còn tồn tại một số bug trong quá trình xử lý code của Cydia, và một trong các lỗi đó đôi lúc đã gây ra tình trạng sai lệch trong việc "nhận định" các đường dẫn đến nơi cần lưu trữ nên đã gây ra lỗi này. Nhưng thực tế thì trong quá trình dùng máy mình cũng chưa gặp được lỗi này ngoại trừ trường hợp "cố tình" tạo ra nó và hình như các bug đó cũng đã được khắc phục thông qua cydia substrate phiên bản mới.
Cũng có ý kiến cho rằng lỗi trên bị tràn bộ nhớ "tạm" cụ thể là không còn chỗ trống của phân vùng user trên RAM nên không thực hiện được thao tác ghi dữ liệu trong quá trình tải gói source về đề cài đặt trên thiết bị.

Vấn đề này thì tạm thời mình chưa thể làm rõ được, thường thì các thông báo lỗi liên quan đến vấn đề bộ nhớ (memory, buffer, write, ...) thì cũng có thể do RAM, nếu do RAM ta có thể khắc phục ngay được bằng các phương pháp làm sạch RAM, nhưng mình chưa kiểm chứng được vì mình không "tự" làm tràn bộ nhớ RAM của iPhone được.

Lỗi này có làm cho máy tự khởi động lại vào một lúc nào đó không?

Cái này thì chưa test, mà cũng không biết test làm sao, nhưng mình nghĩ chắc là không vì đâu có liên quan gì tới việc làm "quá tải" quá trình xử lý trừ khi apple nó cũng trích một phần trong vùng này ra để làm gì đó hỗ trợ cho quá trình xử lý của chip.

5. Tường thuật quá trình "thí nghiệm" để lựa chọn một phương án tối ưu nhất.

Như vậy qua các giải pháp ta đã phân tích và thí nghiệm thì mọi người có thể tự chọn mình một giải pháp phù hợp nhất để hạn chế các trường hợp lỗi về vấn đề này. Riêng mình, mình chọn phương án là kết hợp tất cả các giải pháp . (Chọn vậy thôi chứ cũng chẳng biết làm quái gì để dùng hết phần dung lượng trống nữa. )

Trong nhiều lần test để áp dụng phương thức stash của Cydia trên môi trường semi mình nhận thấy rằng phương thức này rất kỵ Cydia substrate, khi enable nó lên trước và cài Cydia substrate sau là lỗi giao diện "phẳng" như trên liền (kết quả test 5 lần như 1). Và nó hoạt động bình thường nếu thực hiện nó sau khi đã cài các tweak và các gói điều khiển cơ bản. Quá trình test hoạt động bình thường khi mình cài theo trình tự sau:
  1. Cydia substrate cài đầu tiên, luôn ưu tiên thằng này, thường thì mình sẽ cài Appl File Conduit "2" trước vì trong gói này cũng bắt buộc cài Cydia Substrate, và có thể có ý kiến không cần dùng đến nó cài làm gì, cái này thì tùy sở thích của từng người thôi, nhưng chắc chắn một điều rằng nếu enable chế độ stash của Cydia lên thì lúc cần sẽ không cài Cydia Substrate được nữa. Mà ác cái là thằng Cydia Substrate này nhiều tweak đòi hỏi có nó thì mới chạy.
  2. Cài Stashing for iOS 9.2 - 9.3.3iFile, hai thằng này thằng nào cài trước cũng được, chủ yếu là lấy các gói điều khiển kém theo nó.
  3. Tiến hành sửa tên file .cydia_no_stash trong thư mục gốc của phân vùng hệ thống để kích hoạt phương thức stash của Cydia. Lưu ý là nên đổi tên nó thôi nhé phòng khi chạy Cydia Eraser để gỡ unjailbreak hệ thống báo lỗi thì trả về nguyên bản. (Ai lỡ xóa thì khi Cydia Eraser báo lỗi liên quan đến file này hãy trình quản lý file tạo ra một file rỗng mang tên .cydia_no_stash ngay trên thư mục gốc nhé). Ngoài lề chút xíu: mới hôm qua test thử, sửa tên nó thành ".cydia_no_stash" (thêm dấu " vào đầu đuôi) test mọi thứ xong xuôi, ngon lành, lúc chạy thử Cydia Eraser nghĩ nó sẽ lỗi để chụp hình lại, ai ngờ nó chạy được luôn làm máy restore lại "sạch sẽ" ngồi cài lại từ đầu, hài thiệt.
  4. Cài iClean Pro vào xóa tất tần tật mọi thứ có thể. (cái ai này thìch thì làm không thích thì thôi nhé, không chịu trách nhiệm)
Quy trình đúng y như trên thì cho kết quả như sau:
storage33.png
Hiện tại máy đang đúng trạng thái này, mọi thứ đều ok, đang test thử chạy Cydia Eraser lại được giống hôm qua không vậy mà nó cứ chạy hoài chạy mãi rồi tắt ứng dụng. Mọi thứ đều ok như cũ không có gì xảy ra hết. Hài dai thiệt.

Cập nhật các kết quả nhận được trong quá trình máy hoạt động khi cài đặt theo quy trình trên:
  • Khi ở trạng thái unjailbreak (reboot lại máy và không chạy app PanGu để jailbreak lại máy), phần lớn các chức năng "zin" của iOS không hoạt động được nữa mặc dù biểu hiện "mặc ngoài" là bình thường, chỉ khi chạy app để jailbreak lại máy thì tất cả mới trở lại bình thường. Cái này là sự "bộc phát" của quá trình stash hệ thống của iOS đi chỗ khác, nhưng đây là kết quả chấp nhận được vì một khi đã jailbreak máy chẳng lẽ ta lại sử dụng máy với trạng thái unjailbreak.
  • Khi chạy thử Cydia Eraser thì tweak này vẫn chạy, nhưng chạy hoài chạy mãi, tới lúc chạy xong thì chẳng có gì thay đổi cả, máy vẫn hoạt động bình thường, jailbroken không được gỡ, máy không được restore mới. Đây chắc là hậu quả của việc "đuổi" một số "thành viên" được cho là không "cần thiết" của iOS ra khỏi chính "ngôi nhà" của nó với sự tiếp tay của anh iClean Pro. Kết quả này sẽ không sao đối với những người không cần gỡ jailbreak ra khỏi máy, jailbreak hư thì restore bằng itunes lại, phiên bản cũ bị khóa thì lên phiên bản mới. No problem!
storage34.png
Đáng lẽ Cydia Eraser phải nhận diện ra tập tin .cydia_no_stash tại dòng chấm hỏi. Nếu không nhận được thì phải "báo" chứ. Why???
Dự tính của "tác giả" trước các kết quả trên: lại tiếp tục tiến hành "thanh trừ" bớt một số thành phần sau khi restore lại máy để nghiên cứu tiếp.:p

Cập nhật ngày 20/08/2016:
Sau khi restore, jailbreak lại hệ thống, vì lý do "cáp quang" nên sau mười mấy giờ "mời mọc" chỉ mới "rủ" được các "anh" sau về theo trình tự:

  • Mời anh Apple File Conduit "2" vào nhà trước vì anh ấy sẽ rủ thêm anh Cydia Substrate và anh Cydia Substrate Safemode vào nhà cùng luôn.
  • Tiếp đến là anh iFile và anh ấy cũng sẽ mang theo một số "đồ nghề" (các gói điều khiển) để hỗ trợ cho việc tinh chỉnh thực thi thi code trong Cydia.
Hết rồi. Cũng có ý định mời thêm anh Stashing for iOS 9.2-9.3.3 nhưng anh bảo "mạng cuối tuần đông quá không chen chân vào được", thôi tạm thời nghỉ chơi với anh này. Tiến hành sửa tên file .cydia_no_stash, lần này cũng vẫn "ngoan cố" sửa y như cũ xem sao. Sửa .cydia_no_stash thành ."cydia_no_stash" (nhớ đúng nguyên văn là: thêm 2 dấu ngoặc kép vào tên file, dấu đầu tiên nằm sau dấu chấm, dấu thứ hai đặt ở cuối cùng). Và để cho chuẩn ở bước này thì trước khi đổi tên nhớ tắt hẳn Cydia ở background không cho chạy ngầm luôn, đổi tên xong mới mở cydia lên lại cho anh này tự tinh chỉnh lại hệ thống.

Mọi việc xong xuôi thì vào cydia mời thêm anh Cydia Eraser về chơi.

Xin dừng lại ở đây một chút: không biết trong quá trình debug mình bị "tẩu hỏa" hay sao mà ở bước này chợt "lóe" lên một suy nghĩ hết sức buồn cười là ngay khi cài đặt Cydia Eraser không biết nó có scan liền trong hệ thống không? Nếu có thì việc đổi tên file trước và sau khi cài đặt nó kết quả sẽ có chút khác khác trong quá trình chạy phục hồi hệ thống. Nhưng chắc không đâu, dù sao thì cũng lỡ sửa tên file trước khi cài nó rồi.


Chạy Cydia Eraser. Rõ ràng khi không xóa các thành phần hệ thống bằng iClean Pro thì kết quả đã khác đi, và Eraser nhận ra ngay luôn file ."cydia_no_stash" mà không cần đổi tên lên như cũ (cái này thì việc đặt dấu ngoặc kép đặt khác vị trí thì không biết ah, vì cũng đã có cmt rằng dấu ngoặc kép đặt trước dấu chấm thì vẫn báo lỗi).
esraser1.png esraser2.png
Esaser chạy xong, kết quả là được một stock iOS 9.3.3 sạch sẽ và "nguyên bản"
Đáng tiếc là vì lỗi server của các source nên không test được cài đặt Stashing for ios 9.2-9.3.3 sau khi enable stash của Cydia thì kết quả như thế nào. Bạn nào có cơ hội thì test thử nhé.

Cydia Eraser chạy thành công xong vào lại máy, tất cả bình thường như "mới". Tiến hành jailbreal lại máy, vừa chạy app Pangu trên máy thì nhận ngay thông báo "Dung lượng bộ nhớ sắp đầy" khi app đang cài Cydia vào phân vùng hệ thống ?????
storage35.png
Chuyện gì đã xảy ra??? Tưởng cydia Eraser chạy là máy sẽ được restore sạch sẽ chứ.
Cập nhật ngày 20/08/2016:

Tức mình, vào iFile mò thử xem nó sau khi chạy Eraser nó còn cái gì trong phân vùng hệ thống mà mất đi tới 300MB dung lượng trống so với khi restore bằng itunes vậy, ... và kết quả là .... "chịu", trong cái đám "rừng" đó chẳng biết cái nào là mình cần tìm nữa, nó restore xong ghi đè dữ liệu mới lên, chẳng biết cái nào là cũ, cái nào là mới, cái nào cần, cái nào không cần nữa. Có mò được cái file restore log mà sau này cũng chẳng nhớ là tìm thấy nó ở mục nào nữa, sẵn post lên luôn cho dev nào rành về code ios vào chỉ bảo.
storage36.png
Ehèm, dựa vào file log trên ta có thể thấy sự khác nhau trong việc kiểm tra về số dữ liệu của partition 1 và patition 2 nên ... he he mà thôi cho qua đi nhé, kẻo phán bậy các dev ios vào chém chết.

Giờ thử đổi tên file cho nó stash lần nữa xem được gì không
storage37.png
Vâng, 888MB trống so với 1GB trống ở lần đầu tiên đổi tên file.
Như vậy tổng kết lại là sau khi Cydia stash hệ thống lần đầu tiên nếu chạy Eraser vẫn thành công nhưng trong quá trình phục hồi về "nguyên bản" có thể do Eraser "không hiểu" rõ được hết các đường dẫn "link" liên kết các thành phần hệ thống mà quá trình stash đã di dời sang phân vùng khác dẫn đến kết quả là cuộc "thanh trừ" không được "sạch sẽ" cho lắm, một số thành phần vẫn còn tồn tại, không được xóa trên phân vùng hệ thống. Nhưng vì trên một hệ thống mới được restore, với các đường dẫn mới các thành cũ này không còn liên quan gì nữa, nên mặc dù vẫn còn tồn tại nhưng các thành phần này không làm ảnh hưởng gì đến hệ thống "mới", hệ thống vẫn hoạt động bình thường, ổn định như một iphone mới được restore, chỉ có điều nó lại chiếm thêm kha khá dung lượng trên phân vùng hệ thống của thiết bị.

Điều này sẽ không ảnh hưởng nếu trên một thiết bị có dung lượng lưu trữ lớn (6s Plus 64GB) nhưng sẽ có vấn đề trên một thiết bị có dung lượng bộ nhớ nhỏ hơn (ví dụ như 5s 16GB chẳng hạn). Cụ thể là trong quá trình viết bài qua trao đổi với thành viên anhlavodoi1103 (thiết bị 5s 16GB), thì bạn này cũng làm y như qui trình của mình nhưng khi chạy Eraser ngay lần đầu tiên đã bị báo lỗi utility.cpp:159 short write .... và không chạy được.

Khi tìm hiểu về lỗi trên thì được biết lỗi này có liên quan đến việc kiểm tra và ghi dữ liệu vào vùng nhớ hệ thống (chính saurik đã có cmt về lỗi này trong phần cuối của topic sau: https://www.reddit.com/r/jailbreak/comments/4xmy75/question_cydia_eraser_error_help/ ) và như thế có nghĩa là Erase báo lỗi này vì phân vùng hệ thống không đủ dung lượng để chứa cả các thành phần mới và các thành phần cũ khi không được xóa đi.

Xem ra để áp dụng được các phương án này hoàn chỉnh để vừa tối ưu cho việc sử dụng dung lượng lưu trữ trên phân vùng hệ thống khi jailbreak vừa đề phòng trường hợp lỗi máy trong quá trình hoạt động khi Apple khóa sign các ios 9, thì công cuộc "nghiên cứu" này chưa dừng ở đây được rồi.

Cập nhật ngày 25/08/2016:
Ngày hôm nay, Apple đã chính thức khóa sign 9.3.2 và 9.3.3 nên để an toàn cho việc sử dụng jailbreak mình sẽ tổng kết lại phương án tối ưu nhất cho các dòng máy trong việc tối ưu bộ nhớ phân vùng hệ thống khi jailbreak máy.
  • Phương án mở rộng thêm bộ nhớ cho phân vùng hệ thống để có thể cài đặt thêm tweak cũng như các gói điều khiển hỗ trợ trong Cydia chỉ là phương "bất đắc dĩ" áp dụng cho những dòng máy có dung lượng ROM khá nhỏ như các bản 16GB và 32GB. Không nên áp dụng trên những máy 64GB và 128GB vì mặc định dung lượng bộ nhớ mặc định của các bản này là từ "đủ" cho tới "dư" để cài đặt các tweak nên việc cố mở rộng thêm chỉ làm tăng nguy cơ rủi ro.
  • Hãy nhớ rằng các thông báo "Bộ nhớ sắp đầy" hoặc thậm chí báo lỗi buffer_write trong Cydia cũng chỉ là những "cảnh báo" mà thôi không gây hư hỏng cho Cydia và các hoạt động của máy, nên đối với những cảnh báo như vậy không nên "manh động" chỉ cần vài thao tác tinh chỉnh hoặc xóa bớt các tweak không cần thiết là máy đã trở lại bình thường. Trong thời gian thử nghiệm thì dù phân vùng hệ thống chỉ còn 1MB hoặc thậm chí "full" 0 bytes luôn, máy mình vẫn hoạt động bình thường chỉ hay gặp thông báo và không cài thêm được nữa thôi, nên các bạn không cần phải lo lắng.
  • Đối với các máy 16GB và 32GB muốn mở rộng thêm phân vùng hệ thống thì cách tối ưu nhất là:
    • Cài Cydia Substrate đầu tiên là bước quan trọng nhất để fix lỗi Cydia. Bạn chưa cài thì nên cài vào và không bao giờ được xóa nó nếu còn muốn sử dụng Cydia.
    • Chỉ cài các Tweak cần thiết và có sự kiểm chứng "chắc ăn" của những người "đi trước".
    • Nếu cần tiết kiệm bộ nhớ thì có thể cài thêm Stashing for iOS 9.2-9.3.3.
    • Nếu cần thiết phải mở rộng thêm bộ nhớ phân vùng hệ thống thì dùng 1 trình quản lý file nào đó như iFile hoặc Filza File Manager, hoặc để tiết kiệm hơn nữa vì các trình quản lý file trong cydia thường có dung lượng hơn 20MB thì dùng chính itools trên PC vào các thư mục sau: /Library/Wallpaper/iPhone/Library/Wallpaper/Motion/iPhone cut hết các file trong đây, giữ lại file hình nền mặc định đang làm hình nền hiện hành trong hệ thống (nhớ là chỉ cut các file không đụng gì tới thư mục nhé, giữ nguyên cấu trúc của thư mục) qua lưu trữ bên pc (lưu trữ sao tùy các bạn miễn là khi cần khôi phục lại thì có thể chép lại đúng vị trí ban đầu là được). Vào /Library/Ringtones cut hết các file giữ lại nhạc chuông mặc định (Openning.m4r). Xong, như thế là các bạn đã trống thêm từ 150MB -300MB tùy theo từ dòng máy. Dừng tại đây chừng nào dùng hết dung lượng lại tính tiếp.
  • Trong quá trình sử dụng đôi lúc ta cũng có nhu cầu phục hồi lại trạng thái ban đầu của thiết bị bằng tweak Cydia Eraser vì thế cũng xin nói một chút về quá trình này để tránh bớt các rủi ro. Trừ các trường hợp thiết bị bị crash "bất thình lình", hư hỏng cydia không hoạt động được (cái này thì chịu rồi, phải dùng đến các công cụ của các dev hoặc phục hồi sửa lỗi "thủ công" thôi) thì dùng Cydia Eraser cũng sẽ có thể trả lại trạng thái stock ban đầu của OS khi chưa jailbreak. Nhưng các phương thức phục hồi chỉ nên làm khi "thực sự cần thiết" vì cũng mang tính chất "hên xui" nhiều nên nếu có cái ý nghĩ là dùng máy một thời gian, máy đang bình thường tự nhiên lại lôi Eraser phục hồi lại cho máy "nhẹ" bớt thì làm ơn hãy từ bỏ ý định đó đi.
  • Các việc cần thiết khi sử dụng Cydia Eraser:
    • Việc đầu tiên cần làm nhất là nên tìm hiểu, xác định chính xác các thông tin về phiên bản của thiết bị cũng như phiên bản OS đang dùng xem có được hỗ trợ trên trang web chứa các source để phục hồi cho máy đã jailbreak không. Bạn có thể lên đây để tìm thông tin: https://www.theiphonewiki.com/wiki/OTA_Updates. Nếu trên đó không hỗ trợ đầy đủ phiên bản của thiết bị của bạn thì sẽ không thể phục hồi, đã có rất nhiều trường hợp bị báo lỗi xxx_assert(ota.findxxxx là vì thế. Ví dụ như nếu báo lỗi error: eraser.cpp:1410_assert(ota.find({"iPhone4,1",'A',452})), thì có nghĩa là cái phiên bản "iPhone4,1",'A',452" không được web hỗ trợ source để phục hồi, và cũng có thể có nhưng không phù hợp khi chạy ở phiên bản Cydia Eraser hiện tại, bạn phải down xuống phiên bản thấp hơn để chạy. Lỗi này thường thấy ở các iphone chạy các phiên bản OS cũ, các máy 4,4s,5,5s, các máy lock, các bản nhà mạng dù đã lên world ...
    • Muốn chạy Eraser thành công cao thì nên giúp nó "giảm tải" công việc trong quá trình phục hồi bằng cách xóa thủ công bớt các tweak thông thường, nếu đã cài Stashing thì không xóa, nếu muốn xóa thì nên xóa sau cùng, giữ lại Cydia Substrate (thằng đặc biệt là không xóa trong mọi trường hợp nhé), giữ lại iFile và Apple File Conduit "2" để lỡ có lỗi trong quá trình phục hồi thì còn cái mà sửa lỗi, nếu có cut hoặc xóa cái gì của hệ thống thì nên chép lại đúng vị trí ban đầu. Giữ kết nối internet ổn định khi Eraser đang chạy (nên mở cả 3G và wifi, mở luôn chức năng Wi-Fi Assist trong phần Di động để thiết bị tự động chuyển đổi qua lại giữa 3G và wifi). Trước khi chạy Eraser nên tắt hết các app chạy trong backgound, reboot lại thiết bị nếu có thể để làm sạch RAM, và đặc biệt là khi Eraser chạy rồi thì đừng động tới máy nữa, dù có chạy lâu cỡ nào thì cũng để nó chạy xong rồi tính, nó mà dừng giữa chừng thì nguy cơ hỏng hệ thống là rất cao.
Các bạn thận trọng nhé, 9.3.3 và 9.3.2 đã chính thức khóa sign từ ngày 25/08/2016, mọi thứ trong bài này giờ chỉ còn mang tính chất tham khảo thôi không nên "thử" nếu chưa chắc!

Tổng kết phương án sử dụng an toàn và phòng ngừa:

  • Phiên bản 64GB trở lên: không cần dùng các phương án stash vì bộ nhớ phân vùng hệ thống từ đủ cho tới dư khi jailbreak.
  • Phiên bản 32 và 16 GB: sử dụng stashing for iOS 9.2-9.3.3 để "tiết kiệm" và phòng ngừa lỗi đầy bộ nhớ.
  • Những máy bị đầy bộ nhớ khi đã cài đặt stashing for iOS 9.2-9.3.3, hoặc vì bị đầy mà không cài đặt nó được thì buộc phài xóa bớt tweak. Nếu muốn dùng tiếp khi đã đầy bộ nhớ thì phải xóa có chọn lọc hình nền và nhạc chuông mặc định để tạo không gian thêm và phải trả lại như cũ trước khi chạy Cydia Eraser để tránh các trường hợp lỗi đáng tiếc.
  • Không dùng cách xóa hoặc đổi tên file .cydia_no_stash để enabled phương thức stash của Cydia vì như thế sẽ rất khó phục hồi khi gặp sự cố
  • Lưu ý rằng nếu chạy Cydia Eraser thì lượng dung lượng trống cần thiết của phân vùng hệ thống phải tối thiểu từ 50MB trở lên trong trường hợp không xóa mất các thành phần hệ thống. Nếu đã xóa mất thì cần phải hơn nữa vì Cydia Eraser phải tải nhiều dung lượng về chép vào phân vùng này, lúc này thì phải cần xóa thủ công tất cả các tweak đã cài đặt trừ Cydia Substrate (không xóa trong mọi trường hợp) trước khi chạy Cydia Eraser

Ghi chú đặc biệt: Chống chỉ định đọc bài này trên thiết bị nhỏ hơn 5 inch nhé. Nếu không sẽ có "khuynh hướng" tự làm hỏng thiết bị khi thực hiện thao tác cuộn màn hình.
710 bình luận
Chia sẻ

Xu hướng

Bài phân tích mổ xẻ của bạn rất hay, tối vào đọc tiếp - chúc bạn may mắn trúng giải đặc biệt 😃
tonglidaopho
ĐẠI BÀNG
8 năm
Đọc từ đầu tới cuối thấy b viết bài rất hay và lôi cuốn ;))
Vậy là nếu là JBU thì có thể xài cái stash này để tăng dung lượng system mà k sợ lỗi gì đúng k, còn JBT thì gặp lỗi phẳng lì kia à ;))
toan233897
TÍCH CỰC
8 năm
Mình thấy chỉ cần cái iclean pro về xóa mấy cái ngôn ngữ ko cần thiết hay xóa hình nền mặc định của máy là nó cho gần 500mb hệ thống . Tha hồ mà cài
@toan233897 Nếu bạn sử dụng icleaner pro để xóa ngôn ngữ thì sẽ ko sử dụng được cydia eraser nhé,cái gì cũng có cái giá của nó nhỉ😁
toan233897
TÍCH CỰC
8 năm
@ljttle_chjcken Để mình test thử dùng cydia eraser khi có xoá ngôn ngữ coi có bị lỗi ko 😃
@toan233897 Test thử rồi cho mọi người biết nhé bạn. Giờ Apple vẫn chưa khoá Sign tranh thủ làm chuột bạch chi anh em nhé. Chứ xoá mà không dùng được Cydia eraser thì cũng căng
toan233897
TÍCH CỰC
8 năm
@thanhtuan1980 Đã test, đang chạy 1/4 chặn đường xong bị out ra khỏi cydia eraser. Đã thử 2 lần nhưng vẫn vậy. AE nên bỏ thằng iclean pro đi 😔
Hóng xem phương án của tác giả ra sao.
Rất hay, ủng hộ nghiên cứu tiếp 😃
tigerii
TÍCH CỰC
8 năm
vậy phương án tối ưu cuối cùng trên 9.3 jb terthered là.
+ cài stashing ios 9.2-9.3.
+ sửa tên file ".cydia_no_stash".
xong rồi sài thôi phải ko add.
cần làm gì nữa ko.
máy m 5s 32gb ma trống có 100mb ah.
@tigerii
  • Cài Cydia substrate trước tiên sau khi cydia được cài vào máy. (Thằng này quan trọng nhất)
  • Cài Stashing iOS 9.2-9.3.3
Đó là cách tối ưu nhất để máy hoạt động bình thường.

Với máy của bạn chỉ còn trống 100MB thì sẽ khá vất vả trong việc "tiết kiệm". Bạn có thể chọn tiếp tục cách phương án tiếp theo:
  • Sửa tên file .cydia_no_stash thành ."cydia_no_stash" hoặc thành một tên bất kỳ nào đấy, chỉ đừng có xóa nó để sẽ đổi lại như cũ nếu sau này chạy Cydia Esrase báo lỗi về file này (còn nó không báo lỗi thì thôi càng tốt). Khi đổi xong thì tắt Cydia trong background đi rồi mới mở nó lên lại cho nó tinh chỉnh lại hệ thống. Nhược điểm là máy sẽ bị "khùng khùng" khi ở trạng thái unjailbreak sẽ bình thường trở lại khi ở trạng thái jailbreak.
  • Dùng iclean xóa bớt dữ liệu hệ thống. Nhược điểm là sẽ khó phục hồi khi muốn gỡ jailbreak cụ thể là chạy Cydia Esrase không có kết quả.

Nếu có thể, bạn hãy chụp hình dung lượng hệ thống của bạn lên xem, mình cũng muốn biết 5s 32GB thì Apple nó phân bổ các phân vùng như thế nào.
tigerii
TÍCH CỰC
8 năm
mà cái lirum info là sao vào dc như hình vậy add.
ko tìm thây giống vậy dc.hix
@tigerii Chọn như sau:
lirum1.png lirum2.png
lirum4.png lirum3.png
đã sủa file theo giống chủ topic vẫn lỗi sửa tên file ".cydia_no_stash". CPP 159 :| trước đổi file dấu - cũng lỗi 😁
@anhlavodoi1103 Trong bài viết thì mình tường thuật lại ngày hôm qua mình đổi thành tên ."cydia_no_stash" (dấu ngoặc kép đứng đằng sau dấu chấm) thì hên sao vẫn chạy ngon lành, Esraser vẫn nhận hẳn đường dẫn ./."cydia_no_stash". khi scan file này, mình đã đoán là có thể cơ chế code của bỏ qua ký tự " nên không báo lỗi, còn hôm nay đối với bạn thì ký tự chấm đứng sau ký tự " thì không biết nó hiểu như thế nào nữa. Nhưng trường hợp đúng nhất thì nên để lại tên y như cũ của nó vì cydia chỉ tiến hành enable stash chỉ có một lần thôi và không cơ chế "dời" dữ liệu lại như cũ, nên sửa lại tên file như cũ sau khi đã enable cũng không ảnh hưởng gì tới cydia chỉ ảnh hưởng đến quá trình scan file này khi chạy Cydia Esraser thôi.
Chờ mấy huynh tàu khựa ra bản terthered JB vậy .
kuongli
TÍCH CỰC
8 năm
Ios 9.0.2 ip6s có cần phải cài cái sta... Gì đó ko mấy bác .buổi đêm có mấy lần mình bắt gặp nó khởi động lại.thanks các bác đã xem qua
@kuongli Chào bạn.
Vấn đề máy tự khởi động lại có thể còn liên quan tới vấn để khác, mình cũng đang tìm hiểu. Tạm thời bạn có thể khắc phục bằng cách tắt bớt app ở background vào những lúc máy "rảnh" có ít nhất ngày 1 lần trước khi đi ngủ chẳng hạn, và bạn cũng có thể tham khảo thêm cách vào đường dẫn /System/Library/LaunchDaemons/com.apple.jetsamproperties.NXX.plist. Nhấn vào file đó => Root => Version4 => System => Overide => Global=>UserHighWaterMark, tăng giá trị mặc định (500) lên nhưng phải thấp hơn hoặc bằng dung lượng ram của thiết bị (ví dụ ip6s ram 2GB bạn có thể tăng lên thành 1024 và không được tăng quá 2050), Save lại.

Sẵn đây, bạn đang dùng 9.0.2 thì bạn có thể kiểm tra giúp mình ở thư mục gốc của phân vùng hệ thống trên máy bạn có file .cydia_no_stash không? Và dung lượng trống của phân vùng hệ thống máy bạn là bao nhiêu. Nếu có thể chụp hình lên thì tốt quá. Thanks.

Với thời điểm này, khi apple ra mắt "dồn dập" các bản beta 10, và cũng đã có rất nhiều phản ánh tích cực về ios 10 chắc có lẽ 9.3.3 sắp khóa sign rồi, công cuộc "nghiên cứu" cũng thêm nhiều phần khó khăn thêm
tigerii
TÍCH CỰC
8 năm
Của m 5s 32gb nè add.
Cài stash vào thì trống thêm dc 30mb.
Giờ lên thành 130mb rui.
image.png
@tigerii Có file .cydia_no_stash trong thư mục gốc không bạn?
Mình không bỏ qua từ nào luôn. Cám ơn bác, bài viết rất hay, dễ hiểu và hữu ích.
tigerii
TÍCH CỰC
8 năm
có add ơi.
m vừa đổi tên xong..
vào lại cydia như add nói.
sau khi cydia chạy xong thì lên dc 392 mb rùi.hihi
@tigerii có ah??? 9.0.2 của bạn jb bằng tool nào thế? Reboot lại có phải jb lại không? Và Bác vào cydia kéo xuống dưới cùng xem cydia của bạn là phiên bản bao nhiêu? Hừ, giá mà có máy 9.0.2 như bác để xem nhỉ, còn rất nhiều điều khuất mắt.
tigerii
TÍCH CỰC
8 năm
Vào cydia lại nó hiện thông báo này add ơi.
Chọn cái nào giờ.
image.png
@tigerii chọn dòng cuối đi, bạn mới xóa 1 nguồn nào đó trong cydia phải không?
tigerii
TÍCH CỰC
8 năm
mà của m đâu phải 9.0.2.
lên 9.3.3 rùi.
mà 9.0.2 jb unterthered mà add..bằng pangu lun.
@tigerii Đang nói chuyện với bác kia nên em nhầm bác với bác kia. Sorry
Như vậy là trên 5s 32GB apple nó chỉ cho phân vùng hệ thống khoảng 3GB thôi, còn mọi thứ thì tương tự. Trên bản 63GB chắc sẽ được 4GB
tigerii
TÍCH CỰC
8 năm
ko có xóa add ơi.
chưa làm gì hết.
chỉ đổi tên thui ah.
@tigerii ah đọc nhầm, bạn đổi tên thì phải thoát hẳn cydia, tắt nó trong background (trong màn hình đa nhiệm đó) luôn rồi mới chạy lại nó
tigerii
TÍCH CỰC
8 năm
chọn dòng cuối nó kêu remove stash lun add ơi.
sao thế nhỉ
@tigerii Giờ sao rồi bác?
tigerii
TÍCH CỰC
8 năm
thì m chon dong dau.
bỏ qua.
chứ chõn dòng cuối.nó kêu xóa stash lun .
xóa rồi có bị lỗi gì ko vậy.
chưa dám làm.
@tigerii Unsafe không phải là xóa stash mà có nghĩa là chọn bước đó thì không an toàn. Nó chỉ cảnh báo vậy thôi. Chính xác là hệ thống đang thực hiện cài đặt một gói nào đó nhưng vì một lý do nào đó gói đó chưa được cài đặt hoàn chỉnh, có thể là do không kết nối được nữa, và gói đó chỉ mới được cài đặt phân nửa, vậy có muốn giữ lại phân nửa dữ liệu đó không hay là ép buộc xóa luôn. Thường thì em xóa luôn chứ giữ lại làm gì được đâu, tải lại vào lúc khác.
Mà người Việt sao không sử dụng tiếng Việt đi bác, để tiếng Anh đọc phát mệt ah.

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019