Инструкции по сборке Android из исходников

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Adb & fastboot для Linux
Код:
sudo apt-get install android-tools-adb
sudo apt-get install android-tools-fastboot
Выбираем свою версию и меняем цифру в команде установки
Android 4.4 - Java 6
Android 5.x-6.x - Java 7
Android 7.x - Java 8
Код:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
Выбираем на нужную версию Toolchain, например и загружаем в нужную вам директорию:
Код:
cd ~/Android/utility
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
cd ~/
Всё, наш Toolchain установился в ~/Android/utility/arm-eabi-4.6
Код:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc

Если вы на Ubuntu 10.10 выполните:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

Если вы на Ubuntu 11.10 установите:

sudo apt-get install libx11-dev:i386
Код:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

После этого выполните:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Код:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip imagemagick
> >











В процессе наполнения
 
Последнее редактирование:

Acid_Witch

Токсичный Ведьмак
17.12.2018
44
77
45
Нова Луна
Устройство
Xiaomi Mi A1
Сборка под Archlinux на примере LineageOS 15.1
Для начала желательно поставить пакет для работы с AUR ( , или что-то подобное), ибо с AUR будет качаться много пакетов, а это не совсем удобно
Открывает от рута файл /etc/pacman.conf и убираем # с этих строк
Код:
[multilib]
Include = /etc/pacman.d/mirrorlist
Обновляем репозитории
sudo pacman -Sy
Устанавливаем мета-пакет multilib-devel и jdk9-openjdk
sudo pacman -S multilib-devel jdk8-openjdk
После этого устанавливаем все нужные пакеты, установив всего-лишь один мета-пакет lineageos-devel с AUR (я использую yay)
yay -S lineageos-devel
Создаем в корневом каталоге папку lineageos и переходим в неё
mkdir ~/lineageos && cd ~/lineageos
Логинимся в Git (если вы ничего не хотите пушить туда, тогда можно написать любую фигню, в ином случае прийдется зарегестрироваться на github.com или аналогичном)
git config --global user.email "Akko@novaluna.com" - почта, на которую зарегестрирован аккаунт
git config --global user.name "Atsuko_Kagari" - юзернейм, который зарегестрирован на гите
Инициализируем репозиторий
repo init -u git://github.com/LineageOS/android.git -b lineage-15.1
И начинаем скачивание исходников
repo sync
Для начала следует скачать исходники вашего устройства (Device, Vendor, Kernel) и расспаковать по нужным папкам
Создаем виртуальное окружение с python 2.7, иначе будет ошибка при компиляции (связанно это с тем, что при компиляции идёт обращение к пакету python, который на Debian-base дистрибутивах версии 2.7, в то время как в Archlinux он уже 3.6)
virtualenv2 venv
Переключаемся в это виртуальное окружение
source venv/bin/activate
После вводим
source build/envsetup.sh
Выбираем свое устройство
lunch lineage_codenamedevice-userdebug
Вводим export LC_ALL=C, иначе при компиляции может выскачить ошибка, вроде как связанная с переменными типа unsigned int

И начинаем компиляцию
mka -jx otapackage | tee build.log
Где x - кол-во потоков (к примеру у меня mka -j8), tee build.log - запись лога сборки в файл build.log
 
Последнее редактирование:
  • Спасибо
Благодарности: Spilex, Акелла и Bodya-Kolibass

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Краткий мануал по сборке 7-8 Android на Ubuntu 16.04-18.04+/Mint 18-19+​

Что для этого нужно:
  1. Ubuntu или Mint.
  2. HDD на 250 ГБ, чтобы с запасом.
  3. От 8 ГБ RAM
  4. Руки
  5. Терпение
  6. Время

Работаем с пакетами:
  1. Обновляем уже имеющиеся пакеты в системе:
    Код:
    sudo apt-get update && sudo apt-get dist-upgrade
  2. Ставим нужные нам для сборки:
    Код:
    sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip bc ccache git imagemagick lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 lzop pngcrush rsync schedtool squashfs-tools openjdk-8-jdk p7zip-full meld brotli qt4-qmake qt5-qmake android-tools-adb android-tools-fastboot python-networkx python-pip texinfo maven

Работаем с исходниками:
  1. Ставим repo:
    Код:
    mkdir ~/bin && PATH=~/bin:$PATH && curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
  2. Даём git о нас знать:
    Код:
    git config --global user.name "Имя" && git config --global user.email "Почта"
  3. Создаём папку под исходники:
    Код:
    mkdir sources && cd sources
  4. Скачиваем исходники на примере LineageOS 15.1, можно взять :
    Код:
    repo init -u git://github.com/LineageOS/android.git -b lineage-15.1 && repo sync

Начинаем собирать:
  1. Ищем на github/bitbucket/gitlab и т.д. исходники для своего устройства. Если не нашли - не беда, берём похожее и переделываем под себя.
  2. Кладём найденное "добро" по своим местам:
    1. device tree (дерево) в device/ПРОИЗВОДИТЕЛЬ/УСТРОЙСТВО
    2. vendor (вендор) в vendor/ПРОИЗВОДИТЕЛЬ/УСТРОЙСТВО
    3. Исходники ядра в kernel/ПРОИЗВОДИТЕЛЬ/КАМЕНЬ
    Или же просто смотрим пути расположения исходников в device.mk и BoardConfig.mk
  3. Запускаем подгрузку конфигов:
    Код:
    . build/envsetup.sh
  4. Смотрим в список устройств и выбираем своё:
    Код:
    lunch
  5. Запускаем сборку:
    Код:
    mka bacon
    И ждём несколько часов попутно фикся ошибки при сборке если они есть.

Удачи! ;)​
 
  • Спасибо
Благодарности: Spilex, Lord_X, hyperion70 и 3 других

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Как собрать FlymeOS5/6

Требования для сборки:
  1. CM12.1/LineageOS 5.1.1 как база или 13.0 для 6.0.1
  2. OpenJDK7/8
  3. Коммиты от других сборщиков для старта прошивки (хотя возможно и с первого раза запустится)
  4. Прямые руки
  5. Огромное терпение

Стартуем!

1. Заходим в ветку своего устройства и ставим СМ12.1/13.0
2. Заранее включаем отладку по USB, подключение по MTP, также даём root в настройках разработчика для ADB и Приложений (Ну или просто для ADB)
3. Создаём папку под флайм
Код:
mkdir flyme
3.1 Входим в папку:
Код:
cd flyme
4. Синхронизируем исходники командой:
Код:
repo init -u https://github.com/FlymeOS/manifest.git -b lollipop-5.1 &&  repo sync -c -f -j4
или
Код:
repo init -u https://github.com/FlymeOS/manifest.git -b marshmallow-6.0 &&  repo sync -c -f -j4
5. После того как скачало исходники, скачиваем base-cm
Код:
cd devices && git clone https://github.com/FlymeOS/devices-base_cm.git --single-branch -b lollipop-5.1 base_cm
или
Код:
cd devices && git clone https://github.com/FlymeOS/devices-base_cm.git --single-branch -b marshmallow-6.0 base_cm
5.1. Выходим из devices
Код:
cd ..
6. После того как скачало и цианобазу пишем:
Код:
source build/envsetup.sh
7. Затем создаём папку под своё устройство:
Код:
cd devices&&mkdir %устройствонэйм%&&cd %устройствонэйм%
8. Подключаем телефон по ADB к ПК
9. Пишем команду для создания конфига:
Код:
flyme config
9.1. Если будет ошибка что, мол, невозможно слить boot, то берем ядро, recovery.fstab и образ TWRP и закидываем их в папку для %устройствонэйм%
9.2 Открываем сгенерированый Makefile и смотрим на BASE :=, если написано BASE := base, то приводим к такому виду: BASE := base_cm, т.к у нас база циан (пример моего )
9.2.1 Смотрим также на PRODUCE_BLOCK_BASED_OTA := , если стоит true, то изменяем на false, ибо соберёт в system.new.dat, а если у вас в телефоне /system <1GB, то будет ошибка сборки.
9.3 Следующим шагом будет запуск старта нового проекта:
Код:
flyme newproject
9.3.1 Займёт это дело около 10-15 минут
9.4 Когда стянуло всё, что нужно было переходим к самой сложной и геморной части, а именно запускаем патчинг!
Код:
flyme patchall
9.4.1 Естественно будут rejects. У каждого они свои и правятся по-разному.
9.4.2 Если Вы решили что реджекты пофикшены запустите ещё раз
Код:
flyme patchall
9.5 И вот, всё пропатчилось без ошибок, можно собирать в архив:
Код:
flyme fullota
9.5.1 Спустя 20-40 минут у вас на руках будет архив с возможно рабочим Flyme
9.6 Прошиваем архив с флаймом, и начинаем снимать лог по ADB и смотреть логи ошибок!
9.6.1 Тут-то нам и приходят на помощь коммиты забугорных патчромщиков, у которых, вполне вероятно что подобные ошибки были!
9.6.2 Заходим или и смотрим коммиты.
9.6.3 Если нашли решение своей проблемы, то применяете коммит и делаете заново:
Код:
flyme fullota
9.6.4 Затем смотрим в 9.6.1 и повторяем процедуру до того момента пока не запустится прошивка!
 
  • Спасибо
Благодарности: Lord_X

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Как исправлять ошибки при патчинге FlymeOS

Почему?​
Ибо как говорится в манифесте:
Автоматический патчинг может вызывать ошибки. Разработчики должны пофиксить эти ошибки в своих файлах.

Как исправлять ошибки?
Ошибки правятся очень легко. Схема вывода ошибки:
Код:
<<<<<<< VENDOR 
      original code block 
    ======= 
      Flyme code block 
    >>>>>>> BOSP
____________________
<<<<<<< VENDOR 
     Оригинальный кусок кода 
    ======= 
      Флаймовский кусок кода
    >>>>>>> BOSP

Например, подобная ошибка:
Код:
<<<<<<< VENDOR #Conflict 1
    new-instance v79, Lcom/android/server/LockSettingsService;
======= #@.method private startOtherServices@
    new-instance v77, Lcom/android/server/FlymeExtLockSettingsService;
>>>>>>> BOSP #Conflict 1
Собственно, назрел вопрос, а как же его фиксить?

Всё просто!

Нам нужно заменить:
Код:
Lcom/android/server/LockSettingsService;
В строке:
Код:
new-instance v79, Lcom/android/server/LockSettingsService;
На:
Код:
Lcom/android/server/FlymeExtLockSettingsService;
Исправленный участок выглядит так:
Код:
new-instance v79, Lcom/android/server/FlymeExtLockSettingsService;

ВАЖНО!
Никогда не заменяйте регистры (vxx) и метки ( :xxx_try_xxx_xxx ) на левые во время правки ошибок!!!​


Эй, у меня множественная ошибка, что делать?

Тут уже будет сложнее, в большинстве случаев ошибки появляются в services.jar.out, так что читаем внимательно!

Например, такая ошибка:
Код:
<<<<<<< VENDOR #Conflict 3
    .local v84, "mmsService":Lcom/android/server/MmsServiceBroker;
    :try_start_3d
    invoke-static/range {v67 .. v67}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
======= #@.method private startOtherServices@
    .local v82, "mmsService":Lcom/android/server/MmsServiceBroker;

    move-object/from16 v0, p0

    move-object/from16 v3, v111

    move-object/from16 v4, v108

    invoke-static {v0, v3, v4}, Lcom/android/server/SystemServer$FlymeInjector;->addFlymeServices(Lcom/android/server/SystemServer;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wallpaper/WallpaperManagerService;)V

    :try_start_3b
    invoke-static/range {v65 .. v65}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
>>>>>>> BOSP #Conflict 3
Сложновато, не правда ли?
Нам нужно заменить это:
Код:
.local v84, "mmsService":Lcom/android/server/MmsServiceBroker;
На:
Код:
.local v82, "mmsService":Lcom/android/server/MmsServiceBroker;

move-object/from16 v0, p0

move-object/from16 v3, v111

move-object/from16 v4, v108
Но при этом сохраняя регистры и метки!

Собственно, заменяем:
Код:
v82
На:
Код:
v84
Чтобы совпал регистр.
И:

Код:
:try_start_3b
На:
Код:
:try_start_3d
Чтобы совпали метки.

Теперь самое сложное и интересное:
Нам нужно подправить регистры v108 и v111

Открываем флаймовский SystemServer.smali и ищем метод на который "плюётся" сборщик в
Код:
======= #@.method private startOtherServices@
И
Код:
.method private startOtherServices
И начинаем искать где определяются v111 и v108

Определялись они тут:
Код:
.local v111, "wm":Lcom/android/server/wm/WindowManagerService; (for v111)
.local v108, "wallpaper":Lcom/android/server/wallpaper/WallpaperManagerService; (v108)
И что теперь?
Мы должны найти регистры:

Код:
"wm":Lcom/android/server/wm/WindowManagerService;
И
Код:
"wallpaper":Lcom/android/server/wallpaper/WallpaperManagerService;
В своих файлах, которые берутся за основу.
Они были найдены в:
Код:
.local v110, "wallpaper":Lcom/android/server/wallpaper/WallpaperManagerService;
.local v113, "wm":Lcom/android/server/wm/WindowManagerService;
Мы должны заменить:
Код:
v111
На:
Код:
v108
И:

Код:
v113
На:

Код:
v110
Как результат мы получаем:
Код:
.local v84, "mmsService":Lcom/android/server/MmsServiceBroker;

move-object/from16 v0, p0

move-object/from16 v3, v108

move-object/from16 v4, v110
Теперь мы можем вставить:
Код:
invoke-static {v0, v3, v4}, Lcom/android/server/SystemServer$FlymeInjector;->addFlymeServices(Lcom/android/server/SystemServer;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wallpaper/WallpaperManagerService;)V

:try_start_3b
invoke-static/range {v65 .. v65}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
Где:
:try_start_3b
заменён на :try_start_3d
Финальный результат:
Код:
.local v84, "mmsService":Lcom/android/server/MmsServiceBroker;

move-object/from16 v0, p0

move-object/from16 v3, v108

move-object/from16 v4, v110

invoke-static {v0, v3, v4}, Lcom/android/server/SystemServer$FlymeInjector;->addFlymeServices(Lcom/android/server/SystemServer;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wallpaper/WallpaperManagerService;)V

:try_start_3d
invoke-static/range {v65 .. v65}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;

Не трудно, правда?

Теперь просто запускаем сборку флайма и наслаждаемся свежим билдом!
Код:
flyme fullota
 
  • Спасибо
Благодарности: hyperion70 и Bodya-Kolibass

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Сборка ядра с помощью clang
В BoardConfig.mk добавить:

Код:
TARGET_KERNEL_CLANG_COMPILE := true

TARGET_KERNEL_CLANG_VERSION := 7.0 (версия)

TARGET_KERNEL_CLANG_PATH := $(ANDROID_BUILD_TOP)/prebuilts/clang/host/$(HOST_OS)-x86/$(TARGET_KERNEL_CLANG_VERSION)/bin (путь)
 
  • Спасибо
Благодарности: Lord_X и hyperion70

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Парсинг логов для получения правил сеполиси

Код:
cd sources && export ANDROID_BUILD_TOP=$(pwd) && ./external/selinux/prebuilts/bin/audit2allow -p out/target/product/{devicename}/root/sepolicy < log.txt
где sources это ваша папка с исходниками
 
  • Спасибо
Благодарности: hyperion70

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Как добавить кастомные говерноры в ядро


Нам нужно:
1. Исходники своего ядра
2. Исходники говерноров (github никто не отменял!)
3. Если лень самому, то ищите на гитхабе нужный коммит.


Добавление говерноров:

1. На гитхабе находим нужный говернор
2. Скачиваем и кидаем в исходники_ядра./drivers/cpufreq
2.1 Переходим в исходники_ядра./drivers/cpufreq
3. Открываем Kconfig
4. В нём пишем такое:
Выбор самого говернора:
Код:
config CPU_FREQ_GOV_ИМЯВАШЕГОГОВЕРНОРА
  tristate " 'имявашегоговернора' cpufreq governor"
  depends on CPU_FREQ
  help
  'имявашегоговернора' - a custom governor!
Например, для smartassV2:
Код:
config CPU_FREQ_GOV_SMARTASS2
  tristate "'smartassV2' cpufreq governor"
  depends on CPU_FREQ
  help
  'smartassV2' - a "smart" optimized governor!
Также мы должны указать возможность выбора нашего говернора по умолчанию.
Код:
config CPU_FREQ_DEFAULT_GOV_ИМЯВАШЕГОГОВЕРНОРА
  bool "имянашегоговернора"
  select CPU_FREQ_GOV_ИМЯНАШЕГОГОВЕРНОРА
  help
  Use the CPUFreq governor 'имянашегоговернора' as default.
Например, для smartassV2:
Код:
config CPU_FREQ_DEFAULT_GOV_SMARTASS2
  bool "smartass2"
  select CPU_FREQ_GOV_SMARTASS2
  help
  Use the CPUFreq governor 'smartassV2' as default.
4.1. Не знаете где именно прописать?
Код:
Например, после CPU_FREQ_GOV_CONSERVATIVE и CPU_FREQ_DEFAULT_GOV_CONSERVATIVE соответсвенно.
5. Kconfig закончили, открываем Makefile и пишем:
Код:
obj-$(CONFIG_CPU_FREQ_GOV_ИМЯВАШЕГОГОВЕРНОРА)    += cpufreq_имявашегоговернора.o
Например, для smartassV2:
Код:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2)    += cpufreq_smartass2.o
6. Makefile закончен. Переходим в исходники_ядра./include/linux
6.1 Открываем cpufreq.h
6.1.1 Листаем вниз, пока не увидим что-то похожее:
Код:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND)
 extern struct cpufreq_governor cpufreq_gov_ondemand;
 #define CPUFREQ_DEFAULT_GOVERNOR    (&cpufreq_gov_ondemand)
6.1.2 Пишем в него:
Код:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ИМЯНАШЕГОГОВЕРНОРА)
 extern struct cpufreq_governor cpufreq_gov_имянашегоговернора;
 #define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_имянашегоговернора)
Например, для smartassV2:
Код:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS2)
 extern struct cpufreq_governor cpufreq_gov_smartass2;
 #define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass2)
6.1.3 Сохраняем и закрываем его.
6.2 Открываем свой дефконфиг и пишем:
Код:
CONFIG_CPU_FREQ_GOV_ИМЯВАШЕГОГОВЕРНОРА=y
Например, для smartassV2:
Код:
CONFIG_CPU_FREQ_GOV_SMARTASS2=y
 
  • Спасибо
Благодарности: Lord_X, Beatboxer и hyperion70

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Добавление I/O в ядро:

1. Заходим на гитхаб и ищем нужный нам I/O
1.1 Скачиваем и кидаем в исхиядра/block
1.2 В этой же папке открываем Kconfig.iosched и пишем:
Например, для SIO
Код:
config IOSCHED_SIO
        tristate "Simple I/O scheduler"
        default n
        ---help---
          The Simple I/O scheduler is an extremely simple scheduler,
          based on noop and deadline, that relies on deadlines to
          ensure fairness. The algorithm does not do any sorting but
          basic merging, trying to keep a minimum overhead. It is aimed
          mainly for aleatory access devices (eg: flash devices).
Код:
config DEFAULT_SIO
                bool "SIO" if IOSCHED_SIO=y
Код:
default "sio" if DEFAULT_SIO
1.3. Не знаете где именно прописать?
Код:
Например, после config IOSCHED_NOOP, config DEFAULT_NOOP, default "noop" if DEFAULT_NOOP соответсвенно.
2. Открываем Makefile и пишем:
Например, для SIO
Код:
obj-$(CONFIG_IOSCHED_SIO)       += sio-iosched.o
 
  • Спасибо
Благодарности: Beatboxer, Lord_X и hyperion70

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Парсинг бинарников sepolicy и file_contexts.bin для получения стоковых правил

Что нам нужно для парсинга sepolicy:
  1. Исходники ОС
  1. Заходим в папку с исходниками:
    Код:
    cd sources
  2. Запускаем подгрузку конфигов:
    Код:
    . build/envsetup.sh
  3. Смотрим в список устройств и выбираем своё:
    Код:
    lunch
  4. Переходим в external/selinux/policycoreutils/audit2allow:
    Код:
    cd external/selinux/policycoreutils/audit2allow/
  5. Собираем:
    Код:
    make
  6. Парсим:
    Код:
    sesearch --all sepolicy
  7. Или в файл:
    Код:
    sesearch --all sepolicy > sepolicy.txt
И на выходе получаем стоковые правила сеполиси которых может не хватать при запуске чего-либо..

Что нам нужно для парсинга file_contexts.bin:
  1. Скрипт из аттача
  1. Качаем архив внизу поста
  2. Распаковываем архив
  3. Даём права на исполнение:
    Код:
    chmod a+x sefcontext
  4. Парсим:
    Код:
    ./sefcontext -o file_contexts file_contexts.bin
  5. Собираем обратно в бинарник:
    Код:
    chmod a+x sefcontext_compile && ./sefcontext_compile -o file_contexts.bin file_contexts
 

Вложения

  • sefcontext_v2.0_cofface_linux64bit.zip
    1.6 МБ · Просмотры: 0
  • Спасибо
Благодарности: Beatboxer, hyperion70 и Vasilich

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
A Acid_Witch, исходя из можно сделать вывод что bacon это тот же otapackage, но с более красивым именем архива на выходе + md5 если я не ошибаюсь
 
  • Спасибо
Благодарности: Dozerators

andrwgldmn

rm -rf /*
22.12.2018
100
194
100
23
Киев
github.com
Устройство
iPhone SE
Фикс *** Unknown ARM architecture version: armv8-a.

  1. В /build/core/combo/TARGET_linux-arm64.mk добавить:
    Код:
    ifeq ($(strip $(TARGET_ARCH_VARIANT)),)
    TARGET_ARCH_VARIANT := armv8-a
    endif
    
    TARGET_ARCH_SPECIFIC_MAKEFILE := $(BUILD_COMBOS)/arch/$(TARGET_ARCH)/$(TARGET_ARCH_VARIANT).mk
    ifeq ($(strip $(wildcard $(TARGET_ARCH_SPECIFIC_MAKEFILE))),)
    $(error Unknown ARM architecture version: $(TARGET_ARCH_VARIANT))
    endif
  2. Перезапустить сборку.
 
  • Спасибо
Благодарности: Lord_X и hyperion70

Lord_X

Стараюсь быть человеком
23.12.2018
444
653
166
47
Украина
Устройство
Xiaomi Redmi Note 7
Надеюсь темка для всех (уже боюсь писать, чтоб не выбросили :) )
Делаю первые шаги в портировании/сборке ядер-прошивок.
Огромнейшее желание научиться. Особая благодарность автору темки.
Надеюсь на помощь.
Сегодня подготовлю комп. 500 гиг винт и Linux Mint 19 x64.
Оперативки 8 гиг пока достаточно, думаю.
Хотя на праздники хочу еще 8 докупить.
Проц 4 ядра AMD
 

Lord_X

Стараюсь быть человеком
23.12.2018
444
653
166
47
Украина
Устройство
Xiaomi Redmi Note 7
Оперативы 16 уже ) Винт 500 гиг под Mint x64
Есть какие-то особенности по установке Линукса? Разбивка особая или нет?
Раздел подкачки нужен? При таком обьеме оперативы...
 

Lord_X

Стараюсь быть человеком
23.12.2018
444
653
166
47
Украина
Устройство
Xiaomi Redmi Note 7