Необходимые ресурсы: RAM >8GB, HDD >100GB, ядер (kernel) чем больше тем лучше.
Предполагается, что у вас уже установлена Gentoo с профилем hardened/linux/amd64 или default/linux/amd64/13.0 (главное чтобы не nomultilib, нам нужны пакеты 32 и 64 битности одновременно). На удалённом хосте или в чруте на локальной машине. Компилить в основной системе не рекомендую, дабы не засорять её.
Перед компиляцией, необходимо поставить следующие пакеты, предварительно задав USE-флаги. Для этого создадим файл /etc/portage/package.use/my со следующим содержимым:
sys-libs/ncurses:0 tinfo abi_x86_32
sys-libs/ncurses:5 tinfo abi_x86_32
sys-libs/readline abi_x86_32
sys-libs/zlib abi_x86_32
app-arch/lz4 abi_x86_32
x11-libs/pango X
x11-libs/cairo X
dev-java/icedtea:8 headless-awt -alsa -cups -gtk
После, собственно ставим:
emerge -av dev-util/android-tools sys-devel/bc net-misc/curl dev-vcs/git media-gfx/imagemagick sys-libs/ncurses:0 sys-libs/ncurses:5 sys-libs/readline sys-libs/zlib app-arch/lz4 media-libs/libsdl x11-libs/wxGTK:3.0 x11-libs/pango x11-libs/cairo app-arch/lzop media-gfx/pngcrush sys-process/schedtool sys-fs/squashfs-tools app-arch/zip dev-java/icedtea:8
После установки, выберем необходимую версию JDK и питона:
eselect java-vm set system icedtea-8
eselect python set python2.7
Создадим пользователя android (имя без разницы) в системе и зайдём под ним:
useradd -m android
su android
cd ~
Создадим необходимые папки:
mkdir -p ~/bin
mkdir -p ~/android/lineage
Добавим в ~/.bashrc этого пользователя:
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Применим эти строки:
source ~/.bashrc
Скачаем и сделаем исполнимой утилиту для работы с исходниками от Google:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Подготовим локальный реп:
cd ~/android/lineage
repo init --config-name -u https://github.com/LineageOS/android.git -b cm-14.1
Здесь вместо https://github.com/LineageOS/android.git можно использовать любой другой манифест для инициализации (например https://github.com/droncheg-los/sony-los.git). Через манифест удобно добавлять свои пакеты и производить тонкую настройку сборки.
Далее, собственно скачиваем все исходники объявленные в манифесте:
repo sync
После этой команды можно идти отдыхать, т.к. оно потянет порядка 50GB c интернета. Как докачается, продолжим:
source build/envsetup.sh
breakfast nicki
Оно ругнётся на отсутствие файлов для сборки нашего телефона. Для этого надо считать их с текущей прошивки. Надо запустить adb-демона на машине, к которой по USB подключен телефон с включенной отладкой (ADB):
а) если сервер далеко
adb start-server && ssh -R 5037:localhost:5037 <ip-адрес удалённой машины>
б) если сервер в chroot:
adb start-server
Вовзращаемся на билд систему и извлекаем нужные файлы:
cd ~/android/lineage/device/sony/nicki
./extract-files.sh
Собственно, собираем прошивку:
cd ~/android/lineage
breakfast nicki
croot
brunch nicki
Сборка процесс не быстрый и весьма ресурсоёмкий.
Итог будет лежать в android/lineage/out/target/product/nicki
Иногда, на некоторых типах процов, вываливается с ошибкой на pentium-m (или подобное) при попытке сборки kati - добрые разработчики Google решили компилировать с привязкой к процу, а не для всех. Надо всего лишь закоментировать строку #KATI_CXXFLAGS += -march=native в файле android/lineage/build/kati/Makefile.ckati
Также смотрите на настройки ядра (sysctl), в частности:
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
Отличные от этих могут приводить к нехватке памяти при сборке.
Полученная прошивка несовместима с официальной и должна ставится предварительно с полным вайпом. Основано на этом мануале. Финальный размер на диске, после сборки, всего lineageos - порядка 70GB.
Предполагается, что у вас уже установлена Gentoo с профилем hardened/linux/amd64 или default/linux/amd64/13.0 (главное чтобы не nomultilib, нам нужны пакеты 32 и 64 битности одновременно). На удалённом хосте или в чруте на локальной машине. Компилить в основной системе не рекомендую, дабы не засорять её.
Перед компиляцией, необходимо поставить следующие пакеты, предварительно задав USE-флаги. Для этого создадим файл /etc/portage/package.use/my со следующим содержимым:
sys-libs/ncurses:0 tinfo abi_x86_32
sys-libs/ncurses:5 tinfo abi_x86_32
sys-libs/readline abi_x86_32
sys-libs/zlib abi_x86_32
app-arch/lz4 abi_x86_32
x11-libs/pango X
x11-libs/cairo X
dev-java/icedtea:8 headless-awt -alsa -cups -gtk
После, собственно ставим:
emerge -av dev-util/android-tools sys-devel/bc net-misc/curl dev-vcs/git media-gfx/imagemagick sys-libs/ncurses:0 sys-libs/ncurses:5 sys-libs/readline sys-libs/zlib app-arch/lz4 media-libs/libsdl x11-libs/wxGTK:3.0 x11-libs/pango x11-libs/cairo app-arch/lzop media-gfx/pngcrush sys-process/schedtool sys-fs/squashfs-tools app-arch/zip dev-java/icedtea:8
После установки, выберем необходимую версию JDK и питона:
eselect java-vm set system icedtea-8
eselect python set python2.7
Создадим пользователя android (имя без разницы) в системе и зайдём под ним:
useradd -m android
su android
cd ~
Создадим необходимые папки:
mkdir -p ~/bin
mkdir -p ~/android/lineage
Добавим в ~/.bashrc этого пользователя:
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Применим эти строки:
source ~/.bashrc
Скачаем и сделаем исполнимой утилиту для работы с исходниками от Google:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
Подготовим локальный реп:
cd ~/android/lineage
repo init --config-name -u https://github.com/LineageOS/android.git -b cm-14.1
Здесь вместо https://github.com/LineageOS/android.git можно использовать любой другой манифест для инициализации (например https://github.com/droncheg-los/sony-los.git). Через манифест удобно добавлять свои пакеты и производить тонкую настройку сборки.
Далее, собственно скачиваем все исходники объявленные в манифесте:
repo sync
После этой команды можно идти отдыхать, т.к. оно потянет порядка 50GB c интернета. Как докачается, продолжим:
source build/envsetup.sh
breakfast nicki
Оно ругнётся на отсутствие файлов для сборки нашего телефона. Для этого надо считать их с текущей прошивки. Надо запустить adb-демона на машине, к которой по USB подключен телефон с включенной отладкой (ADB):
а) если сервер далеко
adb start-server && ssh -R 5037:localhost:5037 <ip-адрес удалённой машины>
б) если сервер в chroot:
adb start-server
Вовзращаемся на билд систему и извлекаем нужные файлы:
cd ~/android/lineage/device/sony/nicki
./extract-files.sh
Собственно, собираем прошивку:
cd ~/android/lineage
breakfast nicki
croot
brunch nicki
Сборка процесс не быстрый и весьма ресурсоёмкий.
Итог будет лежать в android/lineage/out/target/product/nicki
Иногда, на некоторых типах процов, вываливается с ошибкой на pentium-m (или подобное) при попытке сборки kati - добрые разработчики Google решили компилировать с привязкой к процу, а не для всех. Надо всего лишь закоментировать строку #KATI_CXXFLAGS += -march=native в файле android/lineage/build/kati/Makefile.ckati
Также смотрите на настройки ядра (sysctl), в частности:
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
Отличные от этих могут приводить к нехватке памяти при сборке.
Полученная прошивка несовместима с официальной и должна ставится предварительно с полным вайпом. Основано на этом мануале. Финальный размер на диске, после сборки, всего lineageos - порядка 70GB.
Комментариев нет:
Отправить комментарий