Лонгрід про роботу Атмосфери, Кефір, сток та семі-сток
Відмова від відповідальності
Я не несу відповідальності за ваші консолі і не претендую на абсолютну достовірність у всіх дрібницях у викладеному нижче. Всі технічні моменти максимально спрощені для простоти викладу та сприйняття. Якщо після прочитання тексту у вас залишилися питання, підіть попийте чаю і прочитайте текст ще раз. Не потрібно після кожного речення бігти по чатах з криками “мені не зрозуміло”. Прочитайте текст повністю, хоча б двічі, тільки потім задавайте питання. Дякую.
Що таке Atmosphere?
Це кастомна прошивка, яка завантажується з карти пам’яті в оперативну пам’ять приставки. Вона не змінює жодних файлів у внутрішній пам’яті консолі, тільки в оперативній пам’яті. Її автор, SciresM, проти піратства і створював цю прошивку не для запуску будь-якого ПЗ з порушенням захисту (тобто для запуску піратки).
Як Atmosphere запускає піратку? Що таке сігпатчі (sigpatches).
Atmosphere — потужний інструмент, і завдяки тому, що вона підтримує IPS-патчі, умільці знайшли, в якому місці в оперативній пам’яті консолі знаходиться перевірка запуску неліцензійного ПЗ, відключивши її. Ці патчі називаються ‘signature patches’, тобто патчі, які обходять перевірку підпису (сигнатур) додатків та перевірки сертифікатів.
Узагальнюючи, сігпатчі потрібні для обходу перевірок безпеки, для запуску саморобних та/або непідписаних додатків. Це можуть бути як піратські ігри, так і homebrew-додатки, що запускаються через HBL. Для перших потрібні ES-патчі, вони обходять перевірку тікета: куплена чи ні гра, та FS-патчі, вони потрібні для обходу перевірки сертифіката та підпису в NCA, щоб запускалися сконвертовані з картриджа дампи. Для запуску хомбрю потрібні loader-патчі, у кефірі вони активовані на рівні Atmosphere.
Раніше сігпатчі можна було легко завантажити з інтернету, але віднедавна Nintendo закрила багато джерел, які їх розповсюджували, і патчі тепер можна зробити самостійно. Більшість AiO (All-in-One, все в одному) збірок, наприклад, той самий кефір, вже мають у своєму складі сігпатчі, тому вам не потрібно турбуватися про їх наявність. Актуальний спосіб патчити систему в більшості збірок наразі є модуль sys-patch, який автоматично знаходить та патчить на льоту необхідні ділянки в пам’яті консолі, вимикаючі перевірки.
То навіщо ж потрібна Atmosphere, якщо не для піратки?
Atmosphere створювалася саме як заміна прошивки Nintendo Switch - Horizon OS (HOS). На даний момент Atmosphere все ще знаходиться в процесі тривалої розробки і не може працювати як самостійна ОС; саме тому вона підміняє файли та виклики офіційної HOS на свої. Поки що повністю, з нуля переписані не всі компоненти HOS, але в кінцевому підсумку саме такий стан речей є метою автора прошивки.
SciresM — величезний фанат покемонів, можна сказати, він почав писати Atmosphere в тому числі і для того, щоб мати більше можливостей колупатися у своїх улюблених іграх. Так, за допомогою Atmosphere можна встановлювати на Switch-ігри переклади та модифікації, суттєво розширюючи початкові можливості ігор, отримати доступ до пам’яті консолі, займатися дата-майнінгом, писати ігрові чити та інше-інше-інше.
Що таке сертифікат, ключі, тікети, логи? Трохи інформації про захист консолі.
У Tegra, центрального процесора Nintendo Switch, дуже багато ступенів захисту. Дані у внутрішній пам’яті консолі, встановлені ігри та інше, зберігаються в консолі в повністю зашифрованому вигляді. У кожен випущений процесор ще на заводі вшивається унікальний ключ, і з його допомогою все шифрується. Саме цей ключ (ключі, їх там багато) ми дампимо в процесі створення бекапа внутрішньої пам’яті консолі. Крім ключа, у кожної консолі є і унікальний ідентифікатор, серійник та сертифікат. Коли ви заходите в eShop — сервери Nintendo отримують ваш ідентифікатор і пов’язують його з вашим сертифікатом безпеки. Так сервер знає, хто саме на ньому залогінився (яка саме консоль), і надалі зіставляє сертифікат саме з вашою консоллю, з певним ID та серійним номером.
Коли ви встановлюєте ту чи іншу гру, крім неї ви отримуєте ще й тікет, спеціальний файл, який ‘говорить’ серверу, чи маєте ви право на володіння цією грою, чи куплена вона (тоді дається personalized ticket), чи це завантажена безкоштовна демка (видається common ticket). Якщо буде виявлено фейковий тікет або personalized ticket від гри, про купівлю якої в базі даних на серверах Nintendo немає записів, ви неминуче отримаєте бан. Про бани буде нижче.
Логи. На кожен чих, виліт та будь-яку іншу подію консоль збирає інформацію у своїх логах. Це робиться для того, щоб відловлювати помилки в системі та вносити до неї виправлення, проте ніхто з упевненістю не знає, чи може Nintendo за аналізом логів дізнаватися, чи запускалося на консолі щось піратське, чи все ж таки ні.
Що таке LayeredFS, і як працюють модифікації для ігор?
LFS — це самописна (homebrew) віртуальна файлова система, що існує в оперативній пам’яті. При запуску гри її вміст знаходиться в оперативній пам’яті вже в розшифрованому вигляді, готовому для роботи, отже, з цим вмістом можна легко взаємодіяти. У кожної гри, DLC та оновлення є свій унікальний ідентифікатор - TitleID. При запуску гри Atmosphere дивиться, чи є на карті пам’яті в папці /atmosphere/contents папка з TitleID, який збігається з TitleID запущеної базової гри. Якщо це так, то всі файли, що знаходяться в папці TitleID, замінять відповідні файли та папки в оперативній пам’яті. Тим самим простою заміною файлів на карті пам’яті можна оперативно впливати на файли, які будуть запускатися в самій грі. Варто при цьому розуміти, що якщо ви таким чином взаємодієте з онлайн-грою, є шанс, що у неї можуть бути свої додаткові перевірки на подібні підміни: наприклад, можуть порівнюватися хеші файлів у пам’яті з еталонними, щоб уникнути нечесної гри. Для офлайн-ігор такі перевірки зазвичай ніколи не проводяться.
Модулі, Tesla Overlay System та інше.
Atmosphere вміє працювати з модулями, які розширюють її можливості. Керування модулями відбувається через спеціальне меню - Tesla Overlay Menu. Його можна запустити, одночасно натиснувши (L) + хрестовина вниз + (R3). Через це меню можна вмикати, вимикати та використовувати модулі. Частина модулів може виводити інформацію про систему, частина дозволяє використовувати сторонні контролери по дроту та без нього, є модулі для керування розгоном та заданого перемикання режиму роботи консолі в портативний режим або в режим док-станції. Є модулі для емуляції роботи Amiibo, є модуль для керування читами. Використання модулів, як правило, безпечне навіть при грі онлайн, тому що вони зазвичай не роблять нічого понад те, що вміє робити сама система. Наприклад, модуль підтримки сторонніх контролерів перехоплює натискання підключеного контролера і каже системі, що це натискання зробив звичайний Pro Controller, підключений таким-то користувачем. Тобто система думає, що підключений простий прокон замість, наприклад, дуалсенса. Нічого незвичайного. Модуль розгону просто керує частотами, замінюючи собою системний модуль з цією ж функцією, модуль перемикання режиму роботи програмно перемикає консоль на режим роботи в док-станції і назад. І так по кожному модулю, крім модуля читів. Чи варто говорити, що чити в онлайні неприпустимі, легко зчитуються і призводять до бану?
Оновлення системного ПЗ через налаштування або через Daybreak
Atmosphere у своєму складі має окрему утиліту для оновлення системного ПЗ, яка працює точно так само, як і офіційне оновлення через налаштування. Як саме оновлювати ПЗ у стоці із запущеною Atmosphere — виключно справа смаку. Окремо варто згадати, що на приставці із затертим серійним номером або з баном за сертифікатом ПЗ через налаштування оновити не вийде.
Що таке EmuNAND?
EmuNAND — це повна побайтова копія внутрішньої пам’яті консолі, що знаходиться на карті пам’яті, microSD, а Atmosphere прозоро для користувача робить так, щоб HOS працювала з системою на карті пам’яті замість системи на eMMC (внутрішній пам’яті) консолі. Виходить, що у вас у консолі є дві (можливо і більше) незалежних систем. Одна — EmuNAND — на карті пам’яті в папці emuMMC, а інша, Сток (сиснанд, sysNAND) — знаходиться у внутрішній пам’яті консолі, eMMC.
Коли ви завантажуєтеся в EmuNAND, все, що ви робите з вашою консоллю, ніяк не відбивається на її внутрішній пам’яті. Коли ви запускаєте сток, все, що ви робите з консоллю, не відбивається на емунанді.
Логічно, що при створенні емунанда на карті пам’яті буде зайнято кількість вільного місця, рівна розміру внутрішньої пам’яті консолі (32 або 64 ГБ, якщо консоль OLED). Вас може ввести в оману те, що в самій системі при завантаженому EmuNAND вона бачиться як внутрішня пам’ять консолі, проте фізично він все одно продовжує залишатися на карті пам’яті. Потрібно зрозуміти цю концепцію, щоб не шукати з калькулятором, куди поділися 30, а то й 60 ГБ на карті пам’яті.
Уявімо, що наша внутрішня пам’ять і карта пам’яті — це коробки А і Б, об’ємом 25 і 100 одиниць відповідно. Коли ми створюємо емунанд, ми клонуємо нашу коробку А і кладемо її клон у коробку Б. У підсумку ми маємо три коробки — А - наша внутрішня пам’ять, А1 - клон коробки ‘А’, Б - велика коробка (це наша карта пам’яті). Причому коробка А лежить окремо, а коробка А1 лежить всередині коробки Б.

Рисунок 1 - загальний вигляд карти пам’яті та внутрішньої пам’яті після створення емунанда.
Якщо ми запускаємо сток, то він вантажиться з коробки А; при цьому ми можемо класти ігри як у цю коробку, так і в коробку Б. Коробка А1 продовжує лежати в коробці Б, але вона залишається закритою (незавантаженою), і ми поки не можемо користуватися її об’ємом.
Нам доступно 100 одиниць об’єму: 25 з коробки А і 75 з коробки Б (25 з коробки А1 не доступні).

Рисунок 2 - завантажений сток, доступу в коробку А1, у файли емунанда, ми не маємо. Файли емунанда розташовані на карті пам’яті, всередині коробки Б.
Коли ми завантажуємося в емунанд, то замість коробки А використовується коробка А1, і тепер коробка А залишається закритою, і ми не маємо до неї доступу. Виходять ті ж 100 одиниць об’єму, 25 з коробки А1 і 75 з коробки Б (25 з коробки А недоступні).

Рисунок 3 - завантажений емунанд, доступу в коробку А, у файли внутрішньої пам’яті, ми не маємо. Файли внутрішньої пам’яті розташовані в чіпі eMMC, встановленому на платі консолі.
Коли ми робимо щось у коробці А, це ніяк не відбивається на вмісті коробки А1, і навпаки.
Тобто при завантаженні в сток ми можемо користуватися всім об’ємом коробки А — 25 одиниць, і вільним місцем коробки Б, а це 75 одиниць, оскільки 25 одиниць зарезервувала для себе коробка А1, фізично розташована в коробці Б (зі стоку ми можемо бачити саму цю коробку (файли в папці emuMMC), але до самих файлів ми не маємо доступу, коробка-то закрита).
Схожа ситуація буде при завантаженні в EmuNAND — ми можемо користуватися всім об’ємом коробки А1 — 25 одиниць і вільним місцем коробки Б, це 75 одиниць. Тобто фактично весь розмір коробки Б (100 одиниць) буде нам доступний, а коробка А не буде доступна взагалі, вона знаходиться на окремому носії і навіть не буде видна з системи, на відміну від самої коробки А1, яку ми так само можемо спостерігати в папці emuMMC.
В обох випадках коробка А і А1 будуть показані в системі як внутрішня пам’ять, проте при завантаженні в EmuNAND внутрішня пам’ять фізично продовжуватиме перебувати на нашій карті пам’яті microSD.
Окремо зазначу, що встановлюючи ігри в емунанді у внутрішню пам’ять, ми фактично все одно будемо ставити їх на карту пам’яті, тому що наша коробка А1 фізично знаходиться на карті, тобто всередині коробки Б.
Емунанд можна зменшувати, але в цьому немає жодного сенсу, адже немає ніякої різниці, чи буде коробка А1 займати 25 чи 5 одиниць, коли сумарно нам буде все одно доступно не більше об’єму нашої карти пам’яті, тобто всього об’єму коробки Б.
Перечитайте цю ахінею стільки разів, скільки знадобиться для повного розуміння.
Навіщо взагалі нам EmuNAND? Робота EmuNAND у KEFIR.
Чому саме в KEFIR? Тому що налаштування конкретно кефіру можуть відрізнятися від налаштувань в інших збірках, і точно відрізняються від налаштування ванільної Atmosphere. Про це і поговоримо.
У більшості випадків емунанд потрібен для гри в піратку таким чином, щоб не залишати слідів на стоці. Про які сліди йдеться? В першу чергу це тікети та логи. У кефірі логи здебільшого відключені, а ті, що не відключені (таких бути не повинно, але мало що), загорнуті та зберігаються на карті пам’яті. Звичайно, вони нікуди не відправляються. У ванільній атмосфері всі логи складаються у відповідні папки на карті пам’яті.
Так само в кефірі прихований серійник, тому навіть при наполегливих спробах консолі не вдасться підключитися до серверів Nintendo. Використовуючи захисні механізми Atmosphere (приховання серійника та/або сертифіката), консоль більше не може бути ідентифікована серверами Nintendo. Сервер бачить консоль, але не може зіставити її з її ID/сертифікатом/серійником, тому і не пускає. Грубо кажучи, ви перебуваєте в тій же ситуації, що і забанений користувач, але робите це усвідомлено і контрольовано. Серійник прихований тільки для EmuNAND, при завантаженні в сток приховання серійника не потрібне, там приховання автоматично вимикається.
Тобто емунанд кефіру не тільки ізольований від стоку, але ще й надійно захований від серверів Nintendo. При цьому сам доступ в інтернет продовжує працювати, і ним можна сміливо користуватися для перегляду відео, завантаження в tinfoil, ланплея або чого вам там ще спаде на думку.
Сток: Full Stock, Semi-stock, методи запуску всього перерахованого на консолях з різними типами зламу.
У загальному випадку стоком називається завантаження з NAND консолі. Тобто НЕ з емунанда. Однак у сток завантажитися можна кількома різними способами. Найпростіший спосіб завантаження у сток — це запуск приставки взагалі без зламу. Його підтримують приставки з програмним зламом та чіповані консолі з чіпом, прошитим на китайську версію Spacecraft (версії r031 і старше). У перших для завантаження достатньо вимкнути AutoRCM, якщо він був увімкнений, і просто запустити приставку. У других слід увімкнути приставку, утримуючи кнопку зниження гучності. В обох випадках приставка пропустить сам злам і завантажиться у сток. При цьому методі запуску стоку використовується рідний завантажувач консолі.
Другий спосіб завантаження у сток застосовувався в кефірі до версії 647, починаючи з версії 648 він був прибраний. Цей метод використовує Гекату як завантажувач, в іншому він не відрізняється від попереднього. Знаходився в меню Launch -> Full Stock, що призводило до купи зайвих питань у новачків та до випадкового скидання AutoRCM при оновленні або скиданні прошивки у бідолах з тимчасовою прошивкою на консолях першої ревізії із закритою вразливістю, тому і був прибраний.
Третій спосіб (використовується в кефірі) ідентичний першому, крім того, що він запускається з Гекати, з головної сторінки кнопкою Reboot -> OFW. Після натискання на неї геката запускає офіційний завантажувач, потім йде завантаження, ідентичне першому методу. Якщо у вас при цьому стоїть AutoRCM, доведеться прокинути пейлоад для запуску стоку (за ідеєю, після прокидання відразу піде завантаження стоку). Незручно. Але ж вам все одно доведеться прокидати пейлоад для запуску EmuNAND. Нічого незвичного.
Останній спосіб (використовується в кефірі) — Semi-stock. Найнеоднозначніший і тому найцікавіший. Він є рекомендованим способом запуску стоку за замовчуванням для кефіру. При цьому сток працює через запущену Атмосферу, що обов’язково вимагає певної усвідомленості при його використанні.
Semi-Stock
Семісток гарний тим, що працює з-під атмосфери. Цим же він і поганий.
Плюси:
- Дозволяє швидко перезавантажуватися, не втрачаючи зламу на приставках першої ревізії. Для сумних бідолах з тимчасовим зламом це також єдина можливість використовувати сток
- Оновлення прошивки без втрати AutoRCM
- Не відправляє логи в Nintendo і не створює нові
- Дозволяє користуватися плюсами кастомної прошивки на стоці, як-от: хомбрю, модулі, переклади, розгін, резервне копіювання збережень, теми та ін.
Мінуси:
- При невмілому використанні та зловживанні може призвести до бану (але тут треба постаратися)
Цей спосіб є рекомендованим для більшості користувачів! Якщо ви впевнені, що цей метод вам не підходить, використовуйте Reboot -> OFW для гекати!
У семістоці відключені сігпатчі, так що ви не зможете ні встановлювати, ні запускати на ньому піратку. Нагадаю, що спочатку Atmosphere створювалася в розрахунку саме на таке використання.
Варто також згадати і про LayeredFS. Оскільки Atmosphere не розрізняє, запущена вона зі стоку чи емунанда, у семістоці LFS також працює. Тому якщо у вас в емунанді встановлена тема, у семістоці вона теж буде відображатися. Якщо у вас в емунанді увімкнено модуль розгону, він так само запуститься у семістоці з налаштуваннями за замовчуванням. Це стосується взагалі всього, у чого є налаштування за замовчуванням.
Сторонні контролери також будуть працювати, поки запущені модулі для їх підтримки. З Tesla Overlay вас теж ніхто не забанить. Як і за Emuiibo, якщо вже так прямо треба їх використовувати. Все це безпечно, оскільки просто змінює та покращує відповідні можливості самої HOS!
Але якщо використовуєте чити в грі в емунанді, і вона ж стоїть у семістоці, готуйтеся до того, що чити можуть запуститися і там. Автоматично в кефірі чити не запустить. Ви повинні будете запустити та активувати їх вручну! Просто не робіть цього і все. Чити неможливо запустити випадково!
Якщо вам не потрібен онлайн у грі, просто не запускайте цю гру на семістоці. Можна, звичайно, але навіщо?
Хоумбрю на семістоці теж будуть працювати, і їх теж цілком безпечно використовувати, наприклад, якщо ви не збираєтеся піратствувати взагалі, але бажаєте використовувати Ретроарч, семісток вам цілком підходить.
Бан та методи захисту від бану.
Бан — неможливість отримати доступ до серверів Nintendo, а отже, грати онлайн офіційно та купувати ігри. Бан буває як акаунта, так і консолі. У разі бану акаунта ви не зможете використовувати акаунт ні на цій, ні на будь-якій іншій консолі. Інші акаунти та сама консоль будуть працювати. У разі бану консолі доступ стане неможливим з будь-яким акаунтом саме на забаненій консолі. На інших консолях ці акаунти будуть працювати і їх використання безпечне.
Як же користуватися семістоком, щоб не отримати бан?
Дуже просто, насправді. Не робіть нічого такого, за що б вас забанили. За чити буде бан. За аб’юз збережень буде бан. За піратку в семістоці буде бан. Все інше, за ідеєю, дозволено. Найкраще застосування семістока — це просто грати в куплені або безкоштовні ігри. Якщо ви станете використовувати його виключно для цього, то шанс бану завжди залишатиметься дуже низьким.
Не використовуйте модифікації для онлайн-ігор, у тому числі переклади. За це теж може прилетіти. Наче нічого складного.
У кефірі за замовчуванням все налаштовано так, щоб ваш досвід використання семістока був максимально безпечним.
Чистий сток
Це такий сток, на якому ніколи не запускали піратку. У ряді випадків користувачі ігнорують необхідність створювати емунанд і запускають піратку прямо зі стоку. Зрозуміло, при підключенні до інтернету без приховання серійника, наприклад, завантажившись у семісток, а не в Atmosphere з кефіру, такі користувачі отримують бан. Перевірити, є бан чи ні без очищення стоку неможливо. У таких ситуаціях зазвичай з брудного стоку знімають емунанд, чистять сток через TegraExplorer -> wipesystem.te -> Wipe Stock і перевіряють, є бан чи ні. Якщо бан є, то можна сміливо відновлювати емунанд у систему, оскільки користі від нього на приставці з баном небагато.
Завантаження системи в кефірі
Як завантажувач у кефірі використовується Hekate. Щоб потрапити до неї, потрібно затиснути кнопку зниження гучності на заставці кефіру. Тут ви можете вибирати, як завантажуватиметься ваша система. Доступні такі варіанти:
- Reboot -> OFW - завантаження у сток через офіційний завантажувач. Для параноїків. Найчистіший варіант завантаження консолі. Рівносильний варіанту завантаження без зламу. Не використовуйте, якщо у вас стоїть тимчасова прошивка, інакше злам злетить! Найкраще працює для користувачів з чіпами, в іншому випадку вимагатиме додаткових прокидань пейлоада для перезавантаження назад у прошивку або для завантаження в OFW, якщо стоїть AutoRCM. Для розуміння: якщо у вас на консолі стоїть AutoRCM, прокиньте пейлоад після активації завантаження цим методом!
- Launch -> Atmosphere - запускає атмосферу з патчами для піратки. Якщо є Емунанд, то завантажиться він, якщо його немає або він відключений, запуститься сток з патчами. При виборі цього пункту серійник приставки буде прихований, і доступ до серверів Nintendo неможливий.
- Launch -> Semi Stock - запуск стоку з патчами атмосфери, але без FS- та ES-патчів і без приховання серійника консолі. Доступ до eShop можливий. Детальніше про семісток читайте вище.
Узагальнюючи все вищесказане та розбір конкретних прикладів
- Sys-con, Mission Control, emuiibo, модулі статистики, розгін, теми в семістоці використовувати безпечно
- Якщо на семістоці будуть користуватися ТІЛЬКИ купленими офіційно іграми онлайн, типу танків, Animal Crossing, Splatoon, то шанс бану мінімальний
- Якщо ви використовуєте в емунанді модифікації для Animal Crossing, вони автоматично підхопляться і при грі в AC у семістоці. За що можна отримати бан від Nintendo
- Якщо ви переносите збереження з емунанда на іншій консолі на семісток, за це теж можете отримати бан. Деякі ігри вміють це відстежувати
- Чити в онлайні — бан
- При використанні розгону та збереженні пресета розгону за замовчуванням, цей пресет також спрацює і в семістоці, врахуйте.
Чому мені просто не використовувати Reboot -> OFW?
Ви можете використовувати те, що Вам зручно і те, що Вам подобається. Кефір створений бути найбільш універсальним рішенням для найбільшої кількості користувачів, тому саме Семісток був обраний рішенням за замовчуванням. Що і як використовувати — вирішувати вам.
