Gemma 4 на Android в proot: оффлайн AI для shell-команд | AiManual
AiManual Logo Ai / Manual.
12 Апр 2026 Гайд

Как запустить Gemma 4 на Android в proot Linux для выполнения shell-команд оффлайн: полный гайд

Подробный гайд по запуску Gemma 4 на Android внутри proot Linux. Настройка автономного AI-ассистента для терминала без интернета.

Shell-команды с AI в кармане: когда интернет — роскошь

Представьте: вы в серверной без интернета, или в поезде, или просто не хотите светить свои данные в облако. Нужно быстро сгенерировать команду find для поиска логов, или понять, что делает скрипт на bash, который вы только что получили. Облачные AI вроде Gemini или ChatGPT не помогут. Приложение Off Grid для чата — отлично, но оно не интегрировано с вашим терминалом. Решение? Засунуть полновесную Gemma 4 прямо в proot-окружение на Android и научить её разговаривать на языке bash.

На 12 апреля 2026 года Gemma 4 — это уже не просто текстовая модель. Это мультимодальный движок с поддержкой 128К контекста, но для наших целей нам нужна именно её способность понимать и генерировать код. Мы будем использовать квантованную версию, чтобы она влезла в память телефона.

Что мы строим и почему это сложно

Цель: внутри Termux поднимаем proot с легким дистрибутивом Linux (Alpine или Ubuntu minimal). Внутри него ставим Python, инференс-движок (мы возьмем llama.cpp — он самый стабильный для ARM), загружаем квантованную модель Gemma 4 и настраиваем простой CLI-интерфейс. Вы вводите запрос на естественном языке, модель выдает готовую shell-команду с пояснениями.

Сложность в трех вещах: память, процессор и терпение. Современные флагманы на Snapdragon 8 Gen 4 справятся, но на среднебюджетном телефоне с 6-8 ГБ ОЗУ придется танцевать с бубном. Если ваш девайс слабоват, сначала прочтите наш гайд по оптимизации LLM на Android.

1Подготовка поля боя: Termux и proot

Первым делом нужно получить работающий Linux. На Android без рута это делается через proot. Устанавливаем Termux из F-Droid (версия из Google Play часто устаревшая и ломаная).

pkg update -y && pkg upgrade -y
pkg install proot-distro -y

Теперь выбираем дистрибутив. Alpine — легче, но могут быть проблемы с совместимостью библиотек. Ubuntu — тяжелее, но знакомее. Для Gemma 4 и llama.cpp нужны glibc и нормальный Python, так что берем Ubuntu.

proot-distro install ubuntu
💡
Если у вас мало места, посмотрите на Alpine: proot-distro install alpine. Но потом придется вручную ставить python3, pip и компилировать зависимости. Это для мазохистов.

2Вход в Linux и базовая настройка

Заходим в нашу Ubuntu:

proot-distro login ubuntu

Вы внутри. Первым делом — обновляем пакеты и ставим необходимый минимум.

apt update && apt upgrade -y
apt install -y python3 python3-pip git build-essential cmake wget curl

Проверяем версию Python. На апрель 2026 в репозиториях Ubuntu, скорее всего, Python 3.12 или 3.13. Если ниже 3.10 — придется собирать из исходников, но такое маловероятно.

3Сборка llama.cpp под ARM

llama.cpp — наш инференс-движок. Он написан на C++ и оптимизирован под разные архитектуры, включая ARM. Клонируем репозиторий (убедитесь, что внутри proot есть интернет — на этом этапе он нужен).

cd ~
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

Собираем с поддержкой GPU через Vulkan (если ваш телефон поддерживает). Это ускорит инференс в 2-3 раза.

mkdir build && cd build
cmake .. -DLLAMA_VULKAN=ON
make -j4

Флаг -j4 указывает на количество ядер для компиляции. Не ставьте больше, чем ядер у вашего процессора, иначе система может зависнуть. Большинство современных Android-чипов имеют 8 ядер, но в proot видно меньше. Безопаснее использовать 2 или 4.

Если компиляция с Vulkan падает с ошибкой, собираем без GPU, только на CPU:

cmake .. && make -j4

После успешной сборки в папке build/bin появится бинарник main. Это наша рабочая лошадка.

4Загрузка модели Gemma 4: какая версия нам нужна

Оригинальная Gemma 4 весит десятки гигабайт. Нам нужна квантованная версия. Заходим на Hugging Face и ищем модель с тегом gemma-4b-it-GGUF или gemma-7b-it-GGUF. На апрель 2026 самая популярная ревизия — Gemma 4 7B Instruct Q4_K_M. Она балансирует между качеством и размером (~4.5 ГБ).

cd ~
wget https://huggingface.co/TheBloke/Gemma-4-7B-IT-GGUF/resolve/main/gemma-4-7b-it.Q4_K_M.gguf

Если ссылка устарела, ищите актуальную на странице модели. Модель в формате GGUF — это то, что понимает llama.cpp. Для задач shell-команд хватит и 4B-версии, если 7B не влезает в память. Сравнение моделей и квантований есть в нашем большом гайде по Gemma 4 локально.

5Создание обертки: Python-скрипт для диалога

Нам нужен скрипт, который принимает запрос, формирует промпт и запускает llama.cpp. Создадим файл gemma_shell.py.

#!/usr/bin/env python3
import subprocess
import sys
import os

MODEL_PATH = os.path.expanduser("~/gemma-4-7b-it.Q4_K_M.gguf")
LLAMA_CPP_BIN = os.path.expanduser("~/llama.cpp/build/bin/main")

SYSTEM_PROMPT = """Ты — опытный системный администратор. Пользователь просит помочь с shell-командами. Отвечай ТОЛЬКО готовой командой для bash, а после символов '#' давай краткое пояснение. Не пиши лишних слов. Если команда требует привилегий, добавь комментарий '# Требует sudo'. Если запрос непонятен, напиши '# Запрос неясен'.

Пример:
Запрос: найди все файлы .log в /var/log старше 7 дней и удали их
Ответ: find /var/log -name "*.log" -mtime +7 -delete # Удаляет логи старше недели
"""

def build_prompt(user_query):
    return f"""{SYSTEM_PROMPT}
Запрос: {user_query}
Ответ:"""

def run_llama(prompt):
    cmd = [
        LLAMA_CPP_BIN,
        "-m", MODEL_PATH,
        "-p", prompt,
        "-n", "256",           # Максимальное количество токенов в ответе
        "--temp", "0.2",       # Низкая температура для детерминированности
        "--ctx-size", "4096",   # Размер контекста
        "-ngl", "20"           # Слоев на GPU (если Vulkan работает)
    ]
    try:
        result = subprocess.run(cmd, capture_output=True, text=True, timeout=120)
        return result.stdout.strip()
    except subprocess.TimeoutExpired:
        return "# Ошибка: таймаут генерации"

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Использование: ./gemma_shell.py 'ваш запрос'")
        sys.exit(1)
    user_query = " ".join(sys.argv[1:])
    prompt = build_prompt(user_query)
    print(f"Запрос: {user_query}")
    print("Генерация...")
    output = run_llama(prompt)
    print(output)

Делаем скрипт исполняемым и запускаем первый тест.

chmod +x gemma_shell.py
python3 gemma_shell.py "покажи список запущенных процессов"

Первый запуск займет минуту-две — модель загружается в память. Если все хорошо, вы увидите что-то вроде: ps aux | grep -v grep # Показывает все процессы.

6Интеграция с Termux: создаем псевдоним

Чтобы не заходить каждый раз в proot, создадим скрипт-обертку в Termux, который будет запускать наш Python внутри Ubuntu. В Termux (не в proot) создаем файл ~/bin/gemma-shell.

#!/data/data/com.termux/files/usr/bin/bash
proot-distro login ubuntu --user root -- /bin/bash -c "cd /root && python3 /root/gemma_shell.py '$@'"

Делаем его исполняемым и добавляем ~/bin в PATH.

chmod +x ~/bin/gemma-shell
export PATH=$PATH:~/bin  # Добавьте эту строку в ~/.bashrc

Теперь из любого места в Termux можно писать gemma-shell "как проверить использование диска?" и получать ответ.

Где спрятаны грабли: ошибки и оптимизация

Все работает, но медленно? Или падает? Вот список типичных проблем.

Ошибка Причина Решение
Segmentation fault при загрузке модели Не хватает ОЗУ или модель битая Попробуйте модель меньшего размера (Q2_K) или увеличьте файл подкачки в Termux.
Генерация занимает больше 2 минут CPU без поддержки NEON или флаги компиляции Пересобирайте llama.cpp с флагом -DLLAMA_NEON=ON для ARM.
Ошибка Vulkan: No GPU found Драйверы или устройство не поддерживает Собирайте без Vulkan. На некоторых чипах MediaTek Vulkan работает криво.
Модель выдает бессмыслицу Сломанный промпт или температура высокая Понизьте --temp до 0.1 и проверьте системный промпт.
💡
Самая частая ошибка — нехватка памяти. Android убивает процессы, которые жрут больше половины доступной ОЗУ. Решение: используйте ulimit внутри proot, чтобы ограничить потребление, или поставьте задачу в фоновый режим с низким приоритетом. И да, зарядите телефон. Этот процесс сожрет батарею за час.

А дальше что? Куда развивать этот костыль

Вы получили работающую связку. Теперь можно ее улучшать:

  • Контекстная история: Модифицируйте скрипт, чтобы модель помнила предыдущие команды. Gemma 4 поддерживает 128К контекста, но упирайтесь в память телефона.
  • Автоисполнение: Опасная, но крутая фича — после вывода команды спрашивать "Выполнить? (y/n)". Если да, то запускать ее через subprocess.run. Я не советую, если не хотите случайно удалить всю систему.
  • RAG для мануалов: Загрузите в локальную базу знаний man-страницы и частые скрипты. Когда модель не знает ответ, она будет искать в этой базе. Про оффлайн RAG на Android у нас отдельный гайд.
  • Голосовой ввод: Используйте системное STT Android, чтобы говорить запросы. В Termux есть возможность вызывать API Android.

И последнее: эта связка — доказательство концепции. Она не заменит полноценный облачный AI, но даст вам независимость. В будущем, когда модели станут эффективнее, а телефоны мощнее, такое решение будет стандартом. Пока же вы — пионер, который запускает будущее на своем Snapdragon.

FAQ: коротко о главном

Можно ли запустить Gemma 4 128B на Android?

Нет. Даже с квантованием Q2 она займет 70+ ГБ. Такие модели требуют серверное железо. Для телефона максимум — 7B, а лучше 4B.

Зачем proot, если есть Termux? Там же есть bash.

В Termux нет нормального glibc и многих системных библиотек, которые нужны для llama.cpp и Python-пакетов. Proot дает полноценную Linux-среду.

Модель весит 4.5 ГБ. Как сэкономить место?

Используйте модель Gemma 4 4B в квантовании Q3_K_S (~2.8 ГБ). Качество упадет, но для простых команд сойдет. Или храните модель на SD-карте, смонтировав ее в proot.

Почему бы не использовать готовое приложение вроде Off Grid?

Off Grid — это чат. У него нет интеграции с терминалом и возможности автоматизации. Наше решение — инструмент для системного администратора, который работает в конвейере с другими утилитами.

Прогноз на конец 2026: Google выпустит Gemma 5 с архитектурой, оптимизированной для мобильных устройств. Размеры моделей уменьшатся в 2 раза при том же качестве. И тогда такой гайд станет в 10 раз проще. Но пока приходится выжимать железо по максимуму.

Подписаться на канал