💡 Полезные Советы
Что такое Pi-Apps и как его установить на Raspberry Pi
Если вы используете свой Raspberry Pi 5 в качестве настольного компьютера, ретро-консоли или медиацентра, вы наверняка сталкивались с тем, что установка некоторых программ в Linux требует поиска сложных команд и ручной компиляции кода. Именно эту проблему решает Pi-Apps.
Что такое Pi-Apps?

Pi-Apps - это бесплатный магазин приложений с открытым исходным кодом, созданный специально для Raspberry Pi (и других устройств на базе ARM/x86 Linux).
Главная его цель - максимально упростить процесс установки софта. По сути, это набор скриптов, упакованных в удобный графический интерфейс. С помощью Pi-Apps вы можете скачивать, обновлять и удалять десятки популярных программ буквально в пару кликов, без необходимости лезть в командную строку.
Что можно установить через Pi-Apps?

- Браузеры: Chromium (с поддержкой Widevine для Netflix/Spotify), Firefox, Tor и так далее
- Мессенджеры: Telegram, Discord, Skype.
- Разработка: Visual Studio Code, Arduino IDE, Android Studio.
- Игры: Minecraft, Doom, эмуляторы Box86/Box64 для запуска Windows-игр,.
- Утилиты: GIMP, OBS Studio, TeamViewer.
Как установить Pi-Apps на Raspberry Pi
Процесс установки невероятно прост и занимает всего пару минут. Все, что вам нужно - это доступ к интернету и открытый терминал.
***
Перед установкой любого нового софта рекомендуется обновить систему. Это поможет избежать конфликтов версий.
- Откройте терминал
(сочетание клавиш Ctrl + Alt + T). Введите следующую команду и нажмите Enter:
sudo apt update && sudo apt upgrade -y- Дождитесь завершения процесса обновления.
Установка Pi-Apps
Разработчик Pi-Apps (Botspot) подготовил удобный скрипт автоматической установки. В том же терминале введите одну простенькую команду:
wget -qO- https://raw.githubusercontent.com/Botspot/pi-apps/master/install | bashЗавершение и запуск
Скрипт автоматически скачает необходимые файлы, установит зависимости и создаст ярлыки. Процесс полностью автоматизирован.
Как только в терминале появится сообщение об успешной установке, вы можете его закрыть.
Где найти Pi-Apps?
На вашем рабочем столе появится иконка Pi-Apps.
Также программу можно найти в главном меню Raspberry Pi OS в разделе "Стандартные" (Accessories).
Как пользоваться Pi-Apps
Интерфейс программы интуитивно понятен:
- Запустите Pi-Apps.
- Перед вами появится окно с категориями (Games, Internet, Tools и т.д.).
- Выберите нужную категорию или воспользуйтесь кнопкой Search (Поиск), чтобы найти конкретное приложение.
- Выберите программу и нажмите кнопку Install (Установить).
- После этого откроется окно терминала, где вы сможете наблюдать за процессом установки. Как только он завершится, программа будет готова к использованию!
Для кого это решение:
Идеально подходит тем, у кого дома нет публичного/статического ("белого") IP-адреса, чтобы напрямую открыть порты, но есть любой недорогой VPS-сервер. В данном руководстве для примера, мы используем сервер игры Counter-Strike 1.6.
Как работает эта архитектура:
Мы превращаем VPS сервер в публичную "витрину" для домашнего железа, связывая их через неблокируемый VPN-туннель.
- VPS (Внешний шлюз): Смотрит в интернет своим реальным IP-адресом и принимает подключения игроков. Внутри туннеля AmneziaWG он получает адрес 10.8.0.1.
- Raspberry Pi 5 (Домашний сервер): Спокойно стоит за провайдерским NAT. Она сама инициирует подключение к VPS, пробивая туннель, и получает внутренний адрес 10.8.0.2.
- Магия маршрутизации: Мы берем внешний игровой порт (27015 UDP/TCP) на VPS и прозрачно пробрасываем его сквозь туннель прямо на вашу домашнюю "малинку", ну или linux сервер.
Главный плюс: мы буквально "вытягиваем" Raspberry Pi в глобальную сеть, не ломая то, что уже работает. Порт-форвардинг настраивается настолько ювелирно, что крутящиеся на VPS сайты, веб-сервисы и боты даже не заметят соседства с игровым сервером.
1. Установка AmneziaWG
На сервере VPS (Ubuntu/Debian):
sudo add-apt-repository ppa:amnezia/ppa
sudo apt update
sudo apt install amneziawg-tools amneziawg-dkms -yНа Raspberry Pi 5 (Особый способ установки ключей, обходящий блокировки):
sudo apt update
sudo apt install -y gnupg2 curl linux-headers-$(uname -r)
# Скачиваем ключ через 80 порт
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 57290828
gpg --export 57290828 | sudo tee /usr/share/keyrings/amnezia.gpg > /dev/null
# Добавляем репозиторий
echo "deb [signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/amneziawg.list
sudo apt update
sudo apt install -y amneziawg-tools amneziawg-dkms2. Генерация ключей
Все ключи для удобства генерируем на VPS, чтобы потом просто скопировать их в конфиги.
Выполняем на VPS:
mkdir -p ~/awg-keys && cd ~/awg-keys
awg genkey | tee server_private | awg pubkey > server_public
awg genkey | tee client_private | awg pubkey > client_public
# Выводим на экран и копируем в блокнот:
cat server_private && cat server_public
cat client_private && cat client_public3. Настройка VPS (Сервер)
Включаем маршрутизацию (форвардинг) в ядре:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -pСоздаем конфигурационный файл:
sudo nano /etc/amnezia/amneziawg/awg0.confВставляем настройки (замените ключи на сгенерированные). Внимание: если ваш основной сетевой интерфейс называется не eth0, а ens3 - измените его в правилах PostUp/PostDown.
[Interface] PrivateKey = <server_private> Address = 10.8.0.1/24 ListenPort = 51820 # Магические параметры Amnezia Jc = 4 Jmin = 40 Jmax = 70 S1 = 29 S2 = 15 H1 = 2021056581 H2 = 641527027 H3 = 1018901243 H4 = 301646271 # Маскарадинг для выхода туннеля в сеть PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE [Peer] PublicKey = <client_public> AllowedIPs = 10.8.0.2/32Открываем порт в фаерволе (если используете UFW) и запускаем туннель:
sudo ufw allow 51820/udp sudo systemctl enable --now awg-quick@awg0
4. Настройка Raspberry Pi 5 (Клиент)
Создаем конфигурационный файл:
sudo nano /etc/amnezia/amneziawg/awg0.confВставляем настройки. Важно: Обязательно проверьте наличие заголовка
[Peer], без него парсер выдаст ошибкуLine unrecognized[Interface] PrivateKey = <client_private> Address = 10.8.0.2/24 Jc = 4 Jmin = 40 Jmax = 70 S1 = 29 S2 = 15 H1 = 2021056581 H2 = 641527027 H3 = 1018901243 H4 = 301646271 [Peer] PublicKey = <server_public> Endpoint = IP_ВАШЕГО_VPS:51820 AllowedIPs = 10.8.0.0/24 PersistentKeepalive = 25Запускаем туннель и проверяем пинг до VPS:
sudo systemctl enable --now awg-quick@awg0 ping -c 4 10.8.0.1
5. Настройка проброса портов (NAT и UFW) на VPS
Чтобы внешний трафик, приходящий на публичный IP VPS по порту 27015, улетал на домашнюю малинку, выполняем на VPS:
Открываем нужные порты для входящих подключений:
sudo ufw allow 27015/udp sudo ufw allow 27015/tcpКритически важный шаг: Разрешаем транзитный (FORWARD) трафик в UFW, иначе фаервол молча убьет пакеты, идущие сквозь сервер в туннель:
sudo ufw route allow proto udp to 10.8.0.2 port 27015 sudo ufw route allow proto tcp to 10.8.0.2 port 27015Прописываем правила
iptablesдля перенаправления (DNAT) и обратной подмены адреса (SNAT/MASQUERADE):# Перенаправление внутрь туннеля sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 10.8.0.2:27015 sudo iptables -t nat -A PREROUTING -p tcp --dport 27015 -j DNAT --to-destination 10.8.0.2:27015 # Обратный маскарадинг sudo iptables -t nat -A POSTROUTING -d 10.8.0.2 -p udp --dport 27015 -j MASQUERADE sudo iptables -t nat -A POSTROUTING -d 10.8.0.2 -p tcp --dport 27015 -j MASQUERADEСохраняем правила iptables, чтобы они пережили перезагрузку сервера:
sudo apt install iptables-persistent -y sudo netfilter-persistent save
Вывод:
Сервер работает стабильно, трафик полностью скрыт от DPI, а игровой сервер светит в мир с выделенного IP-адреса.
Что такое MTProto FakeTLS и как настроить свой прокси для Telegram?
В этой статье подробно разберем, как работает технология MTProto FakeTLS, почему она так эффективна для Telegram, и пошагово настроим собственный неуязвимый прокси-сервер.
Что такое MTProto?
MTProto - это специализированный криптографический протокол, разработанный командой Telegram для безопасной передачи данных. Благодаря ему все ваши переписки надежно зашифрованы (как в прочном сейфе), и никто не может прочитать их содержимое. Однако обычный MTProto-прокси легко обнаруживается провайдерами: они не могут прочитать трафик, но видят его специфическую структуру и просто блокируют соединение.
Что такое FakeTLS?
Чтобы обмануть DPI, была придумана надстройка FakeTLS. Её задача - маскировка.
FakeTLS берет зашифрованный трафик Telegram и оборачивает его так, чтобы внешне он выглядел как абсолютно стандартное, безопасное HTTPS-соединение с популярным сайтом (например, с серверами Google, Microsoft или Apple).
Представьте, что вы отправляете секретный документ (ваше сообщение). Обычный прокси - это прозрачный конверт: почтальон (провайдер) не может прочесть текст, но видит, что письмо адресовано в Telegram, и выбрасывает его.
С FakeTLS вы кладете документ в стандартную коробку из-под популярного интернет-магазина. Почтальон видит обычную посылку, ничего не подозревает и свободно пропускает её.
Ограничения: почему не работают звонки?
Важно понимать, что MTProto идеально подходит для передачи текста, фото, видео и кружочков (используется надежный протокол TCP).
Однако голосовые и видеозвонки в Telegram требуют максимальной скорости без задержек, поэтому для них используется протокол UDP. MTProto-прокси не умеет маршрутизировать UDP-трафик. При попытке позвонить приложение попытается установить прямое соединение в обход прокси, и провайдер его заблокирует. (Для звонков лучше использовать полноценные VPN-решения, такие как Outline или WireGuard).

Пошаговая настройка сервера VPS/VDS
Для настройки нам понадобится виртуальный сервер (VPS/VDS) с установленной ОС Linux (рекомендуется Ubuntu) и доступом по SSH. Мы будем использовать современный и легковесный сервер mtg версии 2, работающий через Docker.
1. Подготовка сервера и установка Docker
Подключитесь к вашему серверу по SSH. Для маскировки под HTTPS-трафик нам обязательно нужен свободный порт 443. Проверим, не занят ли он:
ss -tulnp | grep :443Если вывод пустой - порт свободен.
Установим Docker одной командой (если он еще не установлен):
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh2. Генерация криптографического ключа (FakeTLS)
Нам нужно создать специальный секрет, который заставит наш прокси притворяться сервером Google (dl.google.com). Выполните команду:
docker run --rm nineseconds/mtg:2 generate-secret --hex dl.google.comВ терминале появится длинная строка, начинающаяся с букв ee (например: ee123456789...dl.google.com). Скопируйте и сохраните её! Это ваш секретный ключ.
3. Создание файла конфигурации
Современная версия mtg требует отдельного файла настроек. Создадим его. Скопируйте приведенный ниже блок целиком, заменив ВАШ_СЕКРЕТ_ИЗ_ШАГА_2 на скопированный ранее длинный ключ (кавычки вокруг ключа нужно оставить!):
cat <<EOF > config.toml
secret = "ВАШ_СЕКРЕТ_ИЗ_ШАГА_2"
bind-to = "0.0.0.0:3128"
EOFНажмите Enter. Файл config.toml успешно создан в вашей текущей директории.
4. Запуск прокси-сервера
Теперь запустим сам сервер в фоновом режиме. Команда пробросит нужные порты и применит наш файл настроек:
docker run -d --name mtproto-proxy \
-p 443:3128 \
-v $(pwd)/config.toml:/config.toml \
--restart unless-stopped \
nineseconds/mtg:2 run /config.tomlЧтобы убедиться, что всё запустилось без ошибок, проверьте логи:
docker logs mtproto-proxyЕсли вы не видите сообщений об ошибках, значит сервер успешно работает!
5. Настройка Firewall (UFW)
Обязательно нужно разрешить входящий трафик на наш порт маскировки.
Внимание: Если вы используете UFW, сначала обязательно разрешите порт SSH (22), чтобы не потерять доступ к серверу!
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enable(Нажмите y, если система предупредит о возможном разрыве SSH-соединения).
Подключение в Telegram
Ваш сервер готов! Осталось только сформировать ссылку для себя и своих друзей/клиентов.
Шаблон ссылки выглядит так:tg://proxy?server=IP_АДРЕС_СЕРВЕРА&port=443&secret=ВАШ_СЕКРЕТ
- Замените
IP_АДРЕС_СЕРВЕРАна реальный IP вашего сервера. - Вместо
ВАШ_СЕКРЕТвставьте ту самую длинную строку, начинающуюся наee. - Отправьте эту ссылку себе в "Избранное" в Telegram.
- Нажмите на нее и выберите "Подключить прокси".
В верхней части экрана Telegram появится значок щита с галочкой. Поздравляем, теперь ваш трафик надежно замаскирован, а блокировки остались в прошлом!
P.S: Не забудьте обезопасить сервер и другими полезными вещами, например fail2ban, доступ по ssh ключам и т.д.
Многие владельцы Nintendo Switch столкнулись с неприятной проблемой: eShop перестал открываться даже при смене региона аккаунта, выдавая глухую ошибку подключения. Причина кроется не только в прошлых ограничениях самой Nintendo, но и в недавних массовых блокировках инфраструктуры Cloudflare со стороны Роскомнадзора. Пытаясь заблокировать технологию шифрования ECH (Encrypted Client Hello) и другие сервисы, под блокировку попали целые подсети IP-адресов, на которых работают серверы цифрового магазина Nintendo.
Nintendo Switch не поддерживает установку VPN‑клиентов. На консоль нельзя поставить приложение, которое бы шифровало трафик или меняло IP‑адрес. Поэтому единственный рабочий способ - дать консоли доступ к интернету, который уже проходит через VPN.
И здесь появляется Android‑смартфон: он умеет подключаться к VPN, а с помощью приложения Every Proxy может "раздавать" этот VPN‑трафик другим устройствам в локальной сети.
Почему чужие прокси небезопасны, а локальный прокси через телефон - безопасен.
Публичный прокси - это как попросить незнакомца из подворотни(гетто) отправить вашу почту.
Локальный прокси - это как передать письмо самому себе в соседнюю комнату.
Когда люди слышат слово "прокси", они часто представляют себе сомнительные публичные сервера, где непонятно кто сидит по ту сторону. И это справедливо: чужие прокси действительно могут быть опасны! Но локальный прокси, который работает на вашем собственном телефоне, - это совершенно другая история.
Почему публичные или "чужие" прокси небезопасны.
Когда вы подключаетесь к прокси, который принадлежит неизвестному человеку или компании, вы фактически отдаёте им весь свой интернет‑трафик. Это значит, что владелец прокси может:
• перехватывать незашифрованные данные (логины, пароли, токены, куки);
• подменять ответы сайтов (фишинг, реклама, вредоносные скрипты);
• собирать историю посещений;
• встраивать трекинг;
• вмешиваться в трафик игр и сервисов.
Публичные прокси - это чёрный ящик. Вы не знаете, кто их контролирует, что они логируют и какие цели преследуют.
Почему локальный прокси на Android безопасен
1. Вы контролируете устройство - прокси работает на вашем телефоне.
Никто, кроме вас, не имеет к нему доступа.
2. Трафик не выходит наружу - Switch -> ваш телефон -> VPN -> интернет. Никаких сторонних серверов между вами и VPN нет.
3. Прокси не шифрует и не расшифровывает данные - он просто пересылает трафик дальше. HTTPS‑сайты шифруются TLS, VPN шифрует весь трафик телефона, прокси не может "подглядывать" внутрь пакетов.
4. Прокси работает только в вашей Wi‑Fi сети.
5. Every Proxy не имеет доступа к вашему трафику

Подготовка
- У Вас должен быть телефон OS Android (владельцы Iphone идут лесом), у Вас должен быть рабочий VPN
- Подключите оба устройства к одной сети. Ваш Android-смартфон и Nintendo Switch должны быть подключены к одной и той же Wi-Fi сети (к одному роутеру).
- Установите VPN на телефон. Скачайте и установите любой надежный VPN-сервис на ваш Android, если у вас его еще нет.
- Установите Every Proxy. Скачайте приложение Every Proxy из Google Play Market.
Настройка Android-устройства
- Откройте ваш VPN-клиент на телефоне.
- Выберите сервер в стране, где Nintendo eShop работает без ограничений (например, США, Великобритания, Польша и т.д.), и подключитесь к нему.
- Убедитесь, что VPN работает (обычно появляется значок ключика в верхней панели телефона).
Настройка приложения Every Proxy
- Откройте приложение Every Proxy на телефоне.
- В главном меню вы увидите переключатель HTTP/HTTPS. Переведите его во включенное положение.
- Ниже появятся данные вашего подключения:
IP Address (IP-адрес): Обычно выглядит как 192.168.X.X (выбирайте тот, который соответствует вашей локальной Wi-Fi сети, а не внутренний IP типа 10.X.X.X).

- Port (Порт): По умолчанию обычно 8080.
- Запишите или запомните эти две цифры - они понадобятся для консоли.
- Нажмите на три точки (Настройки) в правом верхнем углу Every Proxy и убедитесь, что в разделе настроек не стоят ограничения, мешающие раздаче интернета. (По умолчанию стандартных настроек достаточно).

Настройка Nintendo Switch
- Включите Nintendo Switch и зайдите в Настройки системы (иконка шестеренки на главном экране).
- Перейдите в раздел Интернет -> Настройки интернета.
- Консоль начнет поиск сетей. Выберите вашу домашнюю Wi-Fi сеть (к которой уже подключен телефон).
- Нажмите Изменить настройки.
- Прокрутите вниз до пункта Прокси-сервер и измените его значение на Вкл.
- В появившихся полях введите данные из Every Proxy:
- В поле Сервер введите IP-адрес из приложения (например, 192.168.1.149).
- В поле Порт введите порт из приложения (например, 8080).
- Сохраните изменения и нажмите Подключиться к этой сети.
- Консоль проверит подключение. Если все сделано верно, тест пройдет успешно.
💡 Для особо одаренных.
Регион аккаунта: Чтобы зайти в зарубежный eShop, регион вашей учетной записи Nintendo (Nintendo Account) должен быть регионом, который не находиться под санкциями. Регион аккаунта меняется через браузер на официальном сайте Nintendo (в настройках профиля), а не на самой консоли!
Спящий режим: Когда вы переводите телефон в спящий режим, система Android может "убивать" фоновые процессы для экономии батареи, включая Every Proxy или VPN. Если интернет на Switch пропал, проверьте телефон - возможно, нужно отключить оптимизацию батареи для этих двух приложений.
Отключение: Когда вы закончите скачивать игры и захотите играть по обычной сети, не забудьте зайти в настройки интернета на Switch и выключить Прокси-сервер.
Часто используемые команды Linux: быстрый справочник
📂 File and Directory Management (Управление файлами и папками)
Эти команды используются для навигации по файловой системе и работы с файлами.
ls(List): Выводит список файлов и папок в текущей директории.pwd(Print Working Directory): Показывает полный путь к папке, в которой вы сейчас находитесь.cd(Change Directory): Используется для перехода в другую папку.mkdir(Make Directory): Создает новую папку.rmdir(Remove Directory): Удаляет пустую папку.touch: Создает пустой файл или обновляет время последнего изменения существующего файла.cp(Copy): Копирует файлы или папки.mv(Move): Перемещает файлы или папки (также используется для переименования).rm(Remove): Удаляет файлы (или папки с ключом-r).

📝 File Viewing and Editing (Просмотр и редактирование файлов)
Инструменты для чтения содержимого файлов и внесения изменений.
cat(Concatenate): Выводит содержимое файла на экран полностью.less: Позволяет просматривать длинные файлы постранично (можно листать вверх и вниз).more: Старая версияless, позволяет листать только вниз (в большинстве случаев).nano: Простой и понятный консольный текстовый редактор для новичков.vim: Мощный и сложный консольный редактор для продвинутых пользователей.gedit: Стандартный графический текстовый редактор (как Блокнот) для среды GNOME.
⚙️ Process Management (Управление процессами)
Команды для контроля запущенных программ и служб.
ps(Process Status): Показывает моментальный снимок текущих запущенных процессов.top: Показывает список процессов в реальном времени (нагрузка на CPU, память).kill: Завершает процесс по его идентификатору (PID).killall: Завершает все процессы с указанным именем.pstree: Показывает процессы в виде иерархического дерева (кто кого запустил).htop: Более удобная, цветная и интерактивная версияtop.
ℹ️ System Information (Информация о системе)
Диагностика ресурсов и параметров компьютера.
uname: Выводит информацию о системе (ядро, архитектура). Часто используютuname -a.df(Disk Free): Показывает количество свободного и занятого места на дисках.du(Disk Usage): Показывает размер папок и файлов.free: Показывает использование оперативной памяти (RAM) и файла подкачки (Swap).lscpu: Детальная информация о процессоре.lshw(List Hardware): Подробная информация обо всем оборудовании.lsblk(List Block Devices): Список всех подключенных накопителей и их разделов.
👤 User and Group Management (Управление пользователями и правами)
Администрирование учетных записей.
passwd: Смена пароля пользователя.useradd: Создание нового пользователя.userdel: Удаление пользователя.usermod: Изменение параметров пользователя (например, добавление в группу).groupadd: Создание новой группы пользователей.groupdel: Удаление группы.groups: Показывает, в каких группах состоит пользователь.id: Выводит цифровые идентификаторы пользователя (UID) и групп (GID).
🌐 Network Configuration and Monitoring (Сеть)
Настройка сети и диагностика подключений.
ifconfig: Старая команда для просмотра и настройки сетевых интерфейсов (IP, маска).ip: Современная и более мощная заменаifconfig.ping: Проверка доступности удаленного узла (сервера/сайта).netstat: Статистика сетевых подключений, портов и таблиц маршрутизации.ss: Современная и быстрая заменаnetstatдля просмотра сокетов.traceroute: Показывает маршрут (узлы), который проходит пакет до цели.ssh(Secure Shell): Безопасное подключение к удаленному компьютеру.nc(Netcat): "Швейцарский нож" для сети — умеет читать и писать данные в сетевые соединения (тестирование портов, передача файлов).
📦 Package Management (Управление пакетами)
Установка и удаление программ. Команды зависят от вашего дистрибутива Linux.
apt-get/apt: Используются в Debian, Ubuntu, Mint.apt— более современная и удобная версия.yum/dnf: Используются в RHEL, CentOS, Fedora.dnf— современная заменаyum.rpm: Низкоуровневый менеджер пакетов для Red Hat систем (установка .rpm файлов).dpkg: Низкоуровневый менеджер пакетов для Debian систем (установка .deb файлов).snap: Универсальный менеджер пакетов от Canonical (работает на большинстве дистрибутивов).zypper: Менеджер пакетов для openSUSE.
Как сбросить пароль Raspberry Pi оффлайн (через редактирование shadow)
С моей Raspberry Pi 5 всё не так, при добавлении init=/bin/sh в cmdline.txt на Raspberry Pi появляется чёрный экран и кулер работает на максимуме, явный симптом зависания и проблема глубже на уровне железа. Поэтому я заказал UART провод, скоро подключимся по COM порту с помощью PuTTy и посмотрим, какие проблемы при старте системы.
Раз init=/bin/sh ведёт себя нестабильно, можно сбросить пароль оффлайн, изменив shadow на карте памяти. Если у вас Windows, используйте виртуальную машину (VirtualBox/VMware) с любым Live-образом Linux (Ubuntu/Debian).
Шаг 1: Подготовка VirtualBox (если у вас Windows).
Проброс USB-картридера в виртуальную машину часто вызывает трудности, так как Windows "захватывает" устройство первой.
- Установите VirtualBox Extension Pack (обязательно для работы USB 2.0/3.0).
- Вставьте картридер с флешкой в ПК.
- В настройках машины: USB -> Поставьте галочку Включить контроллер USB -> Нажмите иконку с плюсом ("Добавить фильтр") -> Выберите ваш картридер (например, Generic Mass Storage).
- Важно: Теперь извлеките картридер из ПК. Запустите виртуальную машину.
- Когда Linux загрузится, вставьте картридер обратно в порт. Благодаря фильтру он сразу "пробросится" внутрь виртуальной машины.

Шаг 2: Монтирование файловой системы (выполняйте только если карта не смонтировалась автоматически - см. Бонус внизу)
- Узнайте имя вашего диска:
lsblk
- Обычно карта памяти видна как sdb или mmcblk0. На ней будет два раздела:
- маленький bootfs (FAT32)
- большой rootfs (EXT4) - он нам и нужен.
Смонтируйте раздел с системой (замените sdb2 на ваш раздел):
sudo mkdir -p /mnt/rpi sudo mount /dev/sdb2 /mnt/rpi
Шаг 3: Удаление пароля
Нам нужно отредактировать файл /etc/shadow, где хранятся хеши паролей.
Сделайте резервную копию на всякий случай:
sudo cp /mnt/rpi/etc/shadow /mnt/rpi/etc/shadow.bakОткройте файл в редакторе:
sudo nano /mnt/rpi/etc/shadowНайдите строку с вашим пользователем (обычно pi, root или ваш логин). Она выглядит примерно так:
user:$6$kH...поток_символов...:19000:0:99999:7:::- Что делать: Удалите всё, что находится между первым и вторым двоеточием.

- Было:
user:$6$aBcDeF...:12345:... - Стало:
user::12345:... - Примечание: Двоеточия должны остаться, между ними должно быть пусто. Это означает "пароль не задан".
- Было:
- Сохраните файл: Ctrl+O -> Enter -> Ctrl+X.
Шаг 4: Завершение
Размонтируйте диск перед извлечением, чтобы не повредить файловую систему:
sudo umount /mnt/rpi- Вставьте карту обратно в Raspberry Pi и включите его.
- Система пустит вас без пароля (или попросит логин - введите имя пользователя и нажмите Enter).
- Сразу же задайте новый пароль:
passwd
Бонус: если раздел уже смонтирован (пример с /run/media/...) [Как у меня]
Во многих десктоп‑дистрибутивах (KDE, GNOME, XFCE) флешки и SD‑карты автоматически монтируются файловым менеджером в /run/media/ИМЯ_ПОЛЬЗОВАТЕЛЯ/МЕТКА_НОСИТЕЛЯ.
Это значит, что вам может не понадобиться вручную монтировать раздел в /mnt - достаточно сразу отредактировать файл по уже существующему пути.
Например, если система смонтировала root‑раздел Raspberry Pi как /run/media/merion/rootfs, достаточно выполнить:
sudo nano /run/media/merion(ваше имя пользователя)/rootfs/etc/shadow
Дальнейшие действия те же: найти нужного пользователя и очистить поле с хешем пароля между первым и вторым двоеточием, сохранить файл и корректно размонтировать устройство.
Чем отличается /mnt от /run/media ?
/mnt - исторически "универсальная" точка для ручного временного монтирования, куда админ сам монтирует нужный раздел командой mount.
/media и /run/media - стандартные места для автоматического монтирования съёмных носителей (флешки, SD‑карты и т.п.) через udisks/desktop‑окружение, обычно подподкаталог /run/media/ПОЛЬЗОВАТЕЛЬ/….