В рамках сборки LineageOS for microG (https://lineage.microg.org/) подготовлен вариант платформы LineageOS (https://www.lineageos.org/) (продолжение развития CyanogenMod), в котором предлагается альтернативная свободная реализация сервисов Google, развиваемая проектом microG (https://microg.org/).
Приложения и библиотеки из набора microG позволяют получить функциональность, необходимую для использования API Google Play, Google Cloud Messaging и Google Maps, но без установки проприетарных компонентов Google. Для определения местоположения без GPS по Wi-Fi и базовым станциям вместо Google Network Location Provider предлагается прослойка для использования Mozilla Location Service (https://www.opennet.me/opennews/art.shtml?num=38287) или OpenStreetMap Nominatim (http://wiki.openstreetmap.org/wiki/Nominatim). По сравнению с оригинальными приложениями Google в microG существенно сокращёно потребление ресурсов, например, обособленный набор OpenGApps (https://github.com/opengapps) с приложениями Google занимает 125 Мб, а microG всего 4 Мб и заметно меньше нагружает CPU, что положительно сказывается на времени автономной работы.
Из особенностей прошивки также можно выделить встроенную поддержку каталога свободных Android-приложений F-Droid (https://f-droid.org/). В состав входит F-Droid Privileged Extension для обеспечения работы фоновой установки обновлений и Playmaker (https://github.com/NoMore201/playmaker) для установки приложений из Google Play (для доступа в Google Play также можно использовать GPlayWeb (https://github.com/matlink/gplayweb)).Прошивка основана на срезе кодовой базы LineageOS 14.1 по состоянию репозитория от 1 ноября, который в свою очередь построен на Android 7.1.2. Процесс установки и поддерживаемые устройства аналогичны (https://wiki.lineageos.org/devices/) LineageOS, но из-за других цифровых подписей LineageOS нельзя напрямую обновить до "LineageOS for microG" - требуется переустановка с выполнением операции wipe для Data, Cache и Dalvik. Для поддержания системы в актуальном виде ежедневно формируются OTA-обновления, переупаковываемые от LineageOS.
URL: https://news.ycombinator.com/item?id=15617615
Новость: http://www.opennet.me/opennews/art.shtml?num=47505
Звучит вкусно, надо попробовать.
Не проще KDE поставить?
Только MAGX, только хардкор и скрипты на баше.
Дааа, токо на shell, я тормозной bash не признаю.
> bash
> тормознойЛови наркомана!
Баш - тормоз. Пока загрузит bashrc 1000 лет пройдёт. sh грузится мгновенно.
Проапгрейдь свои счеты хотя-бы до арифмометра, да?
Просто сравни:
time sh -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'
с
time bash -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'
Токо перед этим убедись через readlink /bin/sh не ссылается ли в твоем дистрибутиве sh на bash.
А можешь рассказать, зачем кому-то моет спонадобиться выполнить баш миллион раз ПОДРЯД?
Это работает в 1 процесе, при милиону башей ОС бы лягла.
Shell намного больше умеет чем ты думаеш. Раньше вообще Linux дистрибутивы через него грузились (до systemD). Да и щас он везде используется почти, при той же подготовке к компиляции, где размер скрипта достигает сотни кб.Да и при обновлении думаю тоже он берет участие.
У меня например Shell автоматически управляет вентиляторами шас, для тишыны.
Замечательный язык програмирования для тех кому не нужен гуй.
> Shell намного больше умеет чем ты ДУМАЕШ. Раньше вообще Linux дистрибутивы через него грузились (до systemD).
> Да и щас он везде используется почти, при той же подготовке к компиляции, где размер скрипта ДОСТИГАЕТ СОТНИ КБ.
> Да и при обновлении ДУМАЮ тоже он берет участие.
> У меня например Shell автоматически управляет вентиляторами ШАС, для тиШЫны.
> Замечательный язык програМИрования для тех кому не нужен гуй.Это типа такой хитрый ход секты фанатов поттеринга?
Я на Shell пишу грамотнее чем на росийском. =D
>> Я на Shell пишу грамотнее чем на росийском. =D... хм, заинтригован, а какой индекс скажем на tiobe.com/tiobe-index/ занимает ентот замечательный 'езыкк' - "росийском" - что-то сложилось найти ?
Ну-ка, покажи-ка! Балаболить все горазды.
Ну вот из последнего: http://forum.motofan.ru/index.php?s=&showtopic=179276&view=f...
Или если интересно реальное применение то вот (tar.gz): http://forum.motofan.ru/index.php?act=Attach&type=post&id=27...
Хм, писать и правда умеешь. Только воспринимать это не легче того, что пытаешься изображать по-русски.
> Ну вот из последнего: http://forum.motofan.ru/index.php?s=&showtopic=179276&view=f...Слушай, я понимаю, что ты старался, но... Это жесть. Это самая натуральная "портянка".
Во-первых, вынеси переменные, которые будут конфигурируемы, в начало.
Во-вторых, чем передавать циферки в качестве аргументов, лучше используй какие-либо флаги. Разбор производи getopt-ом: по моему опыту, эта утилита есть самый простой сбособ разбора аргументов.
В-третьих, определять список файлов надо либо глобами (*), либо find-ом: ls с последующим sed-ом читать невозможно. Вот ты там хотел например sed-ом убрать директории и "."/".."... Но можно было бы, например, написать так: find . -mindepth 1 -maxdepth 1 -type f. Короче и понятнее.
Ну и, наконец, отступы. Не пренебрегай ими. Форматируй код.
>>Вот ты там хотел например sed-ом убрать директории и "."/".."... Но можно было бы, например, написать такЯ дал ссылку на последний пост темы, а ты по моему щас обсуждаеш самые первые версии (где я токо учился пользоваться shel'ом).
Вот прямая ссылка на мой последний код: http://forum.motofan.ru/index.php?act=Attach&type=post&id=27...
> обсуждаеш самые первые версии (где я токо учился пользоваться shel'ом).
> Вот прямая ссылка на мой последний код: http://forum.motofan.ru/index.php?act=Attach&type=post&id=27...Я скажу мягко, чтобы не обидеть: шелл-скрипты ты писать не умеешь, парень. Пожалуйста, не бросай своим творчеством тень на наше сообщество. Иди поучись. bash(1) ты уже походу хотя бы по диагонали прочитал, это хорошо. Теперь тебе надо его читать внимательно, долго и вдумчиво. Неплохо было бы ознакомиться с утилитами из пакета coreutils. Очень желательно почитать ABS.
Но вообще, претензия к этим скриптам не языковая вообще-то. У тебя собственно страдает организация кода. Ещё, скажем так, не развилось чувство правильной вещи. Для этого нужно время и общение с правильными людьми. Подпишись на какие-нибудь рассылки. На форумах нынче только молодёжь тусуется, а спецы -- это в рассылки да на фриноду.
Только упаси боже, прежде чем туда соваться, поправь язык и изучи сетикет.
Шо такое ABS? Дай пару примеров примерных скриптовых програм по твоему мнению.Правильно может писать и не умею, по стандартному, но научился оптимизировать програмы под использование минимальных ресурсов.
Вы, юниксоводы, привыкли писать с размахом, имея многогигагерцовые ЦП, вот и тормозного bash себе линуксоводы слепили - задержки не волнуют совсем.
А я пишу в основном под древний ARM и знаю шо sed быстрее grep в качестве фильтра, а read быстрее awk при разбитии строки.
ПК юзерам такое не нужно в масштабах 1 скрипта, но когда их количество доходит до сотен-тысяч начитаются тормоза ОС и возникают всякие system:D.
Вы настолько не замечаете задержек шо в coreutils просто отсутствует генератор интервалов (или может я ошыбаюсь и есть утилита через определенный интервал генерирующая формальный текст на вывод?).
Писал демон управления частотой ЦП, где цыкл много раз в секунду должен обновлять инфу на постоянку, и приходилось пользоваться usleep 100000, который на 133 МГц отьедал более 50% процесорного времени. Пришлось просить знакомого програмиста написать нативный генератор интервалов, дабы не спамить новыми процесами usleep, и подцепил его в конвеер к цыклу. Как результат демон стал занимать всего 2-3% процесорного времени на 133 МГц.
> Шо такое ABS?https://www.allacronyms.com/abs/Advanced_Bash_Scripting
> Вы настолько не замечаете задержек шо в coreutils просто отсутствует генератор интервалов
> (или может я ошыбаюсь и есть утилита через определенный интервал генерирующая
> формальный текст на вывод?).read -t 0.1
> Дай пару примеров примерных скриптовых програм по твоему мнению.Ну вот например можно посмотреть:
http://git.altlinux.org/people/ldv/packages/?p=gear.git;a=bl...
http://git.freehck.ru/freelancer-task-1.git/blob/master/scri...> Вы, юниксоводы
Так, а ты у нас тут кто?
> юниксоводы привыкли писать с размахом, имея многогигагерцовые ЦП,
> вот и тормозного bash себе линуксоводы слепили - задержки не волнуют
> совсемТам, где используются shell-скрипты, скорость как правило не является предметом первостепенной важности. Тут скорее вопрос о прозрачности работы и лёгкости модификации на конечной системе.
> научился оптимизировать програмы под использование минимальных ресурсов.
Вот на это обрати внимание особенно. Если у тебя сильно ограничены ресурсы, то очень вероятно, что shell в данном случае -- это не правильный инструмент.
> Вы настолько не замечаете задержек шо в coreutils просто отсутствует генератор интервалов
/bin/sleep -- это как раз coreutils
> Писал демон управления частотой ЦП, где цыкл много раз в секунду должен
> обновлять инфу на постоянку, и приходилось пользоваться usleep 100000, который на
> 133 МГц отьедал более 50% процесорного времени.
> Пришлось просить знакомого програмиста написать нативный генератор интервалов, дабы не спамить новыми процесами usleepНасколько мне известно, usleep -- это такая функция из unistd (если не путаю). Какие процессы, какие 50% CPU?
ОК.
>read -t 0.1Ну неплохая эмуляция sleep 0.1, жаль шо bash, а занчит в ash/dash не применима.
>Так, а ты у нас тут кто?Ну как видиш формально тоже, но по факту знакомился с миром unix от лица busybox и мобильного дистрибутива времен 2003-2005 года (на ядре Linux 2.6). По этому у меня другие взгляды. И да, там ОС запускается на скриптах. :)
>Вот на это обрати внимание особенно. Если у тебя сильно ограничены ресурсы, то очень вероятно, что shell в данном случае -- это не правильный инструмент.
Ну знаеш, есть фанаты питона, есть фанаты web, а есть фанаты shell. =)
Я понимаю шо C намного быстрее сам по себе, но зачем его долго изучать если shell полностью может выполнить задачу не хуже? Это отличный простой язык который в паре с утилитами бинарными может очень многое.
По моему лучше уж на shell писать, чем из тела бинарника C++ вызывать утилиты из /bin/.>/bin/sleep -- это как раз coreutils
Смотри, вот такой пример:
read A0 A1 A2 A3 A4 AA </proc/stat
zInterval 100 text | while read out
do
B4="$A4"
read A0 A1 A2 A3 A4 AA </proc/stat
CPUCONTROL
done
В нем функция CPUCONTROL вызывается каждые 0,1 с, а цыкл не плодит новых процесов постоянно, как было бы с sleep — это благодаря генератору интервалов zInterval который с паузой в 0,1 с просто печатает "text".>Какие процессы, какие 50% CPU?
Каждый вызов sleep или usleep (который щас не нужен из за возможности sleep 0.0001) запускает новый процес, и это создает реальную и ощутимую нагрузку на ЦП при зацыкливании и милисекундных паузах.
И если на мощных ЦП ПК это почти не ощущается, то PID запущеных програм вида 54643543428 очень трудно воспринимать.
Не знаю как на современном Linux, но на 2.6 ядре отщет новых PID начинался сначала через лимит max pid, то есть 4485 может быть запущеным после 491448, а 145 до.ПС: вот дефис на укр. раскладке, возьми: — :D
> Смотри, вот такой пример% cat /bin/zInterval
#!/bin/bash
while read -t $1 || :; do echo $2; done
%> Каждый вызов sleep или usleep...
Я о том, что ты sleep и usleep путаешь. sleep -- это утилита из coreutils. usleep -- это библиотечная функция.
>while read -t $1 || :; do echo $2; doneСпасиб[ао] за пример костылика. Правда если скрипт будет работать от /bin/bash то проще напрямую использовать:
while true; do read -t $TIME; DO_IT; done
Воспользуюсь на десктопном Linux управляя вентиляторами, все равно арчеводы упоролись и /bin/sh сделали симлинком на bash, а я продолжаю под sh писать по привычке.
Но я понял намек, правда огорчу тем шо старый bash (4.0.28) не работает так все равно. :D
Да и если на мощных ЦП разницы практически нет, то на 133 МГц ARM неповоротливость баша дает о себе знать, бинарная утилита от того и выгоднее.>Я о том, что ты sleep и usleep путаешь. sleep -- это утилита из coreutils. usleep -- это библиотечная функция.
На десктопном Linux usleep просто отсутствует. А в busybox это аналог sleep, токо в милисекундах. Ты наверно подумал о C++, но нет, я о утилите писал лежащей /bin/.
Чесно скажу: трудно после древнего мобильного линукса с ФС в RO перестраиваться под современные дистрибутивы, вот и мы вроде говорим о одном, а на самом деле о разном. :D
> Но я понял намек, правда огорчу тем шо старый bash (4.0.28) не работает так все равно.Хм. Я может слегка не в тему, но... Собери себе новый zsh. Раз уж всё равно занимаешься извращениями, можно и собственные утилиты в систему притащить. Он и быстрее bash, и отлов ошибок там лучше, и плагинов дофига. Чего тебе вклинились такие древности?
> Да и если на мощных ЦП разницы практически нет, то на 133 МГц ARM неповоротливость баша дает о себе знать, бинарная утилита от того и выгоднее.
Бинарная-то конечно всегда в плане производительности выгоднее, однако надо иметь в виду, что она всегда уступает скриптам в том, что её в случае чего невозможно модифицировать. И между прочим, в данном случае при использовании любого интерпретатора, затраты в цикле будут мизерны. Памяти, конечно, будет юзаться чуть больше...
> На десктопном Linux usleep просто отсутствует. А в busybox это аналог sleep, токо в милисекундах.
Стоп. Busybox тут прозвучал довольно неожиданно, но хочу заметить, что там вообще-то не usleep, а busybox usleep вызывается. А если ты вызываешь usleep, так это оттого лишь, что usleep -- это ссылка на busybox.
Если речь о busybox, то там не следует беспокоиться о новом процессе от слова совсем. Создание процесса busybox вообще говоря требует выделения всего одной страницы памяти, не больше. Это процесс довольно-таки быстрый, потому что:
$ busybox pmap $$
08048000 792K r-xp /bin/busybox
0810e000 4K rw-p /bin/busybox
...Так вот. Если я правильно тебя понял, ты утверждал парой сообщений выше, что вызов в скрипте usleep 100000, приводящий к обращению в busybox 10 раз в секунду, пожирал 50% процессорного времени?
Слушай... Не верю. Не должно такого быть. Надо смотреть на твою систему и анализировать. Может у тебя busybox был неправильный какой, может ядро древнее, собранное на коленке неизвестно кем неизвестно как...
> Ты наверно подумал о C++
Почему С++? usleep вполне себе сишная функция.
Кстати, в *микро*секундах.
> Собери себе новый zsh.Посмотрю, токо сомневаюся шо он быстрее ash. :)
>надо иметь в виду, что она всегда уступает скриптам в том, что её в случае чего невозможно модифицировать.По этому я и есть фанат shell. :)
>в данном случае при использовании любого интерпретатора, затраты в цикле будут мизерны.Не забывай шо read -t 0 это костыль, а не спец. команда, в быстром цыкле разница все равно будет.
Я б создателям утилит посоветовал команде yes добавить ключ задания пауз между каждой строчкой, может не такой бесполезной будет; если б это было просто.
>Стоп. Busybox тут прозвучал довольно неожиданно, но хочу заметить, что там вообще-то не usleep, а busybox usleep вызывается. А если ты вызываешь usleep, так это оттого лишь, что usleep -- это ссылка на busybox.Неужели есть разница отдельный бинарник или из под busybox? Да я знаю о симлинках, сам же их ставил в моде.
>Это процесс довольно-таки быстрыйБыстрый, но не мгновенный. Жаль шо новый процес запускается.
>вызов в скрипте usleep 100000, приводящий к обращению в busybox 10 раз в секунду, пожирал 50% процессорного времени?
>Слушай... Не верю. Не должно такого быть. Надо смотреть на твою систему и анализировать.Я извиняюся, ошыбся ноликом, реч о цыкле с usleep 10000, то есть 100 раз в секунду.
И на 133 МГц +55% в цыкле с usleep перед цыклом с нативным генератором пауз с тем же временем.
Интересно шо простое зацыкливание usleep дает уже +25%, то есть usleep не токо сам по себе обжора, но и тормозит видимо другие задачи. По крайней мере на моем ЦП i.MX31
>Может у тебя busybox был неправильный какой, может ядро древнее, собранное на коленке неизвестно кем неизвестно как...# uname -a
Linux (none) 2.6.10_dev armv6l unknown
# busybox
BusyBox v1.01 (---) multi-call binaryКажется мелочью эти все задержки, но потом это всё растет (речь о програмировании в общем) и програма когда то работавшая на 0,5 ГГц уже задыхается на 4 ГГц в новых версиях...
>> Собери себе новый zsh.
> Посмотрю, токо сомневаюся шо он быстрее ash. :)Ну я бы не вдавался в крайности. ash/dash как posix shell-ы конечно самые быстрые, но и не умеют ничего (потому что posix shell-ы); bash исторически самый распространённый, но при этом тормозилка та ещё, плюс дебаг на нём сложный. Zsh же -- вариант промежуточный. Многое может, но на порядок шустрее bash-а. Попробуй, может тебя устроит.
> Я б создателям утилит посоветовал команде yes добавить ключ задания пауз между
> каждой строчкой, может не такой бесполезной будет; если б это было
> просто.Вообще-то философия GNU предполагает, что ты не будешь изменять старую утилиту, а вместо этого напишешь новую. Что, кстати, идея. Почему мы не можем просто-напросто написать новую утилиту и добавить её в coreutils? Тем более, что у тебя код zinterval уже на руках есть.
>>вызов в скрипте usleep 100000, приводящий к обращению в busybox 10 раз в секунду, пожирал 50% процессорного времени?
>>Слушай... Не верю. Не должно такого быть. Надо смотреть на твою систему и анализировать.
> Я извиняюся, ошыбся ноликом, реч о цыкле с usleep 10000, то есть 100 раз в секунду.Всё равно не верю. Позволь поясню:
% /usr/bin/time -p dash -c "while true; do busybox usleep 10000; done"
real 179.48
user 0.16
sys 1.28За 3 минуты реального времени -- менее полутора секунд процессорного времени потрачено.
>>Может у тебя busybox был неправильный какой, может ядро древнее, собранное на коленке неизвестно кем неизвестно как...
> # uname -a
> Linux (none) 2.6.10_dev armv6l unknown
> # busybox
> BusyBox v1.01 (---) multi-call binaryВозможно, дело вот в этих вот самых древностях.
> Кажется мелочью эти все задержки, но потом это всё растет (речь о
> програмировании в общем) и програма когда то работавшая на 0,5 ГГц
> уже задыхается на 4 ГГц в новых версиях...Утилиты ис ОС GNU стабильны, как часы: они получают только багфиксы и изредка оптимизации.
>ash/dash как posix shell-ы конечно самые быстрыеК стати, я тут ВНЕЗАПНО обнаружыл шо let в busybox (на ПК так само) ash\sh есть, а на ПК в dash нет. То есть фактически там не posix shell?
> Вообще-то философия GNU предполагает, что ты не будешь изменять старую утилиту, а
> вместо этого напишешь новую.А разве Столман в известном фильме не топил за возможность изменения чужого кода и ее публикации (или информирование автора)? Или он имел в виду форки?
> Что, кстати, идея. Почему мы не можем
> просто-напросто написать новую утилиту и добавить её в coreutils? Тем более,
> что у тебя код zinterval уже на руках есть.Начнем с того шо я готовый код с трудом компилю, а делать с ним какие то манипутяции могу токо методом тыка. :)
Сам исходник вот: http://forum.motofan.ru/index.php?s=&showtopic=163337&view=f...> Всё равно не верю. Позволь поясню:
> % /usr/bin/time -p dash -c "while true; do busybox usleep 10000; done"
> real 179.48
> user 0.16
> sys 1.28
> За 3 минуты реального времени -- менее полутора секунд процессорного времени потрачено.Ну как видиш (родной BusyBox, скомпилированый Motoroloй)...
BusyBox v1.01
# time -p sh -c "while true; do busybox usleep 10000; done"
Command terminated by signal 2
real 182.14
user 9.45
sys 51.66> Возможно, дело вот в этих вот самых древностях.
Хм, похоже на то:
BusyBox v1.26.2
time -p /home/busybox sh -c "while true; do /home/busybox usleep 10000; done"
Command terminated by signal 2
real 179.89
user 0.14
sys 2.03Неужели 1й BusyBox настолько забагованый был, или компиляторы за 10 лет настолько продвинулись?
> К стати, я тут ВНЕЗАПНО обнаружыл шо let в busybox (на ПК так само) ash\sh есть, а на ПК в dash нет. То есть фактически там не posix shell?Ага. let -- это башизм. Вместо него надо использовать arithmetic expansion. То есть:
wrong: let a=a+1
right: a=$((a+1))> А разве Столман в известном фильме не топил за возможность изменения чужого кода и ее публикации (или информирование автора)?
Операционная система GNU и свободная лицензия GPL -- это две разные вещи. Изменять код конечно хорошо, но пользователям нужна стабильность. Поэтому правило, образно говоря, такое: хочешь исправить багу -- лицензия GPL тебе позволяет это сделать, система GNU поощряет твой вклад. Но вот хочешь перекромсать стабильно работающую утилиту -- GNU не примет твой патч, хотя GPL тебе естественно позволяет сделать форк, если тебе захочется.
> Неужели 1й BusyBox настолько забагованый был, или компиляторы за 10 лет настолько
> продвинулись?Не только в busybox дело, но и в ядре: sys же большую часть времени отожрал.
По-моему необходимость обновления налицо. И busybox обновить будет относительно просто, думаю, хотя в то же время с ядром могут быть проблемы: у вас же там какой-нибудь телефончик, небось проприетарные модули понапиханы производителем?
> Ага. let -- это башизм. Вместо него надо использовать arithmetic expansion.Не ну я теперь знаю, но шо башызм делает в ash? Просто я был уверен шо пишу posix совместимый код, ведь ash вроде posix, но тут такая подстава в busybox...
> Операционная система GNU и свободная лицензия GPL -- это две разные вещи.
> Изменять код конечно хорошо, но пользователям нужна стабильность. Поэтому правило,
> образно говоря, такое: хочешь исправить багу -- лицензия GPL тебе позволяет
> это сделать, система GNU поощряет твой вклад. Но вот хочешь перекромсать
> стабильно работающую утилиту -- GNU не примет твой патч, хотя GPL
> тебе естественно позволяет сделать форк, если тебе захочется.Ясно. Мне интересно кто тот гений шо придумал утилиту yes :D
Вот токо писатели ядра Linux по моему этим и занимаются шо ломают стабильно работающий код, убивая совместимость модулей.
> Не только в busybox дело, но и в ядре: sys же большую
> часть времени отожрал.
> По-моему необходимость обновления налицо. И busybox обновить будет относительно просто,
> думаю, хотя в то же время с ядром могут быть проблемы:
> у вас же там какой-нибудь телефончик, небось проприетарные модули понапиханы производителем?Motorola ZN5 — последний оплот Linux на кнопках. :)
Если интересно тут история линейки: http://forum.motofan.ru/index.php?showtopic=1738835Конешно проприетарщина в дровах, к тому же не совместимая между разными мотороловскими ревизиями ядра 2.6.
busybox пробовали полностью новым заменить — телефон не стартует, даже после наложения патчей моторолы. Но можна использовать их 2, где второстепенные утилиты для системы симлинками на новый ведут.
>> Ага. let -- это башизм. Вместо него надо использовать arithmetic expansion.
> Не ну я теперь знаю, но шо башызм делает в ash? Просто
> я был уверен шо пишу posix совместимый код, ведь ash вроде
> posix, но тут такая подстава в busybox...Ну, я не знаю оболочки, которая была бы *только* с реализацией стандарта posix. Насколько я помню, наиболее близок к этому именно dash. Его как раз и задумывали как "кастрированный ash".
> Ясно. Мне интересно кто тот гений шо придумал утилиту yes :D
Можно глянуть в сырцах. Открыты же. :)
> Вот токо писатели ядра Linux по моему этим и занимаются шо ломают стабильно работающий код, убивая совместимость модулей.
У ядра одна цель -- не ломать юзерспейс. А про совместимость с бинарными проприетарными модулями никто никогда ничего не говорил.
> Motorola ZN5 — последний оплот Linux на кнопках. :)
Зная мобилоделов -- скорее всего там гвоздями прибитый кастрат, с которым ничего не поделать. Ну что тут сказать... Удачи. Я бы на твоём месте либо в chroot нормальную систему поставил, либо (раз уж всё равно chroot-ыхаться) взял бы ведроид китайский.
Если есть интерес к кнопочкам, то могу, кстати, N900 подогнать. Сам брал поиграться пару лет назад, да выяснил, что времени на это дело у меня нету.
>> Ясно. Мне интересно кто тот гений шо придумал утилиту yes :D
> Можно глянуть в сырцах. Открыты же. :)Автор тот же шо и sleep/usleep :D
>> Вот токо писатели ядра Linux по моему этим и занимаются шо ломают стабильно работающий код, убивая совместимость модулей.
> У ядра одна цель -- не ломать юзерспейс. А про совместимость с
> бинарными проприетарными модулями никто никогда ничего не говорил.И это печально.
>> Motorola ZN5 — последний оплот Linux на кнопках. :)
> Зная мобилоделов -- скорее всего там гвоздями прибитый кастрат, с которым ничего
> не поделать. Ну что тут сказать... Удачи. Я бы на твоём
> месте либо в chroot нормальную систему поставил, либо (раз уж всё
> равно chroot-ыхаться) взял бы ведроид китайский.Меня сенсорники дико раздражают. Все вокруг попереходили, а я не смог. Моя ZN5 ещо не одно поколение ведер пережыват, ведь есть запаска)
Да и само мусорное ведро я призираю, так как это лиш платформа для потребления контента, а не самостоятельная база.> Если есть интерес к кнопочкам, то могу, кстати, N900 подогнать. Сам брал
> поиграться пару лет назад, да выяснил, что времени на это дело
> у меня нету.Он же лиш частично кнопочник, вне терминала это пальцетыкалка. :)
>>read -t 1
>Воспользуюсь на десктопном Linux управляя вентиляторамиАга щас, system:D послала этот костыль, и вместо паузы получил 100% загруженое ядро, опять вернулся к sleep 1 на ПК...
А что, добавление нового аргумента - это breaking change и его не примут?
> А что, добавление нового аргумента - это breaking change и его не
> примут?Я и read -t 1, и read -t 1 A, и bash $0 пробовал, все равно из под system:D паузы нет.
Не-не-не, это был вопрос от меня к @freehck по поводу философии GNU и изменения существующих программ.Разве новый аргумент, который добавит в цикл слип с длитедьностью, равной значению аргумента, считается ломающим изменением, и его не примут? Без аргумента всё ведь так же как раньше. А добавление новой логики существенно не усложнит и не замедлит столь простую утилиту, как yes.
> Не-не-не, это был вопрос от меня к @freehck по поводу философии GNU
> и изменения существующих программ.
> Разве новый аргумент, который добавит в цикл слип с длитедьностью, равной значению
> аргумента, считается ломающим изменением, и его не примут? Без аргумента всё
> ведь так же как раньше. А добавление новой логики существенно не
> усложнит и не замедлит столь простую утилиту, как yes.Могут и принять, конечно. Но сейчас у yes другой синтаксис: она получает либо строку, либо ключ, но не одновременно. При внесении изменений требуется учесть очень много нюансов.
Ну сходу давайте например такой. Мы добавили флаг "-t <num>". У некоего пользователя в скрипте команда вызывалась в виде "yes a -t 1", что приводило к бесконечному выводу строчки "a -t 1". После обновления он обнаруживает, что выполнение этой команды приводит к тому, что с интервалом в 1 секунду выводится строка "а". И нет, это не ему надо было писать "yes -- a -t 1", а мы были обязаны сохранять обратную совместимость.
В общем, чем обдумывать все возможные нюансы, лучше просто написать новую утилиту. С этим меньше возни будет.
Мысль ясна, спасибо!
> Я и read -t 1, и read -t 1 A, и bash $0 пробовал, все равно из под system:D паузы нет.Кусок кода полностью сюда приложи. Тут systemd не при чём скорее всего. (при всей моей нелюбви к поттерингу)
> Кусок кода полностью сюда приложи. Тут systemd не при чём скорее всего.
> (при всей моей нелюбви к поттерингу)Ну раз кусок полностью :) то проще весь код дать:
#!/bin/dash
#bu VINRARUS
CPU=/sys/class/hwmon/hwmon3/pwm1
BIG=/sys/class/hwmon/hwmon3/pwm2
if grep k10temp /sys/class/hwmon/hwmon0/name
then
sCORE=/sys/class/hwmon/hwmon0/temp1_input
elif grep k10temp /sys/class/hwmon/hwmon1/name
then
sCORE=/sys/class/hwmon/hwmon1/temp1_input
else
echo "not find k10temp"
exit 2
fi
sCPU=/sys/class/hwmon/hwmon3/temp3_input
sGPU=/sys/class/hwmon/hwmon2/temp1_input
sMB=/sys/class/hwmon/hwmon3/temp2_input
CPUFAN(){
TT=0
for T in $c1 $c2 $c3 $c
do
if [ "$T" -gt "$TT" ]
then
TT=$T
fi
doneif [ "$TT" != "$CPUpwm" ]
then
CPUpwm="$TT"
echo "$CPUpwm" > $CPU
fi
}
MOTOFAN(){
TT=0
T=0
for T in $m1 $m2 $m3 $m
do
if [ "$T" -gt "$TT" ]
then
TT="$T"
fi
done
if [ "$TT" != "$MOTOpwm" ]
then
MOTOpwm="$TT"
echo "$MOTOpwm" > $BIG
fi
}
if [ -f "$sCORE" -a -f "$sGPU" -a -f "$sMB" -a -f "$CPU" -a -f "$BIG" -a -f "${CPU}_enable" -a -f "${BIG}_enable" ]
then
if [ "$1" = "stop" ]
then
echo 254 > ${CPU}
echo 254 > ${BIG}
echo "max fan"
echo 2 > ${CPU}_enable
echo 2 > ${BIG}_enable
echo "fan autocontrol"
exit
fi
echo "Use: $0 -log"
echo "Enable fan pwm control..."
echo 1 > ${CPU}_enable
echo 1 > ${BIG}_enable
else
echo "Fan control blocked!"
exit 4
fi
while true
do
read -t 1 D
##sleep 1
read tCORE x <$sCORE
# read tCPU x <$sCPU
read tMB x <$sMB
read tGPU x <$sGPU
tCORE=${tCORE%???}
tMB=${tMB%???}
tGPU=${tGPU%???}
###############tCORE#################
case "$tCORE" in
[0-9]|[0-3][0-9])
m1=90
c1=90
;;
4[0-9])
m1=90
c1="$(((${tCORE#?}+1)*5/2+90))"
;;
5[0-9])
m1="$(((${tCORE#?}+1)*5+90))"
c1="$(((${tCORE#?}+1)*5+115))"
;;
6[0-4])
m1="$(((${tCORE#?}+1)*8+140))"
c1="$(((${tCORE#?}+1)*15+165))"
;;
6[5-9])
m1="$(((${tCORE#?}+1)*10+150))"
c1="254"
;;
*)
m1=254
c1=254
;;
esac
################tMB################
case "$tMB" in
[0-9]|[0-3][0-9])
m2=90
c2=90
;;
4[0-9])
m2=90
c2="$(((${tMB#?}+1)*5/2+90))"
;;
5[0-9])
m2="$(((${tMB#?}+1)*5+90))"
c2="$(((${tMB#?}+1)*5+115))"
;;
6[0-4])
m2="$(((${tMB#?}+1)*8+140))"
c2="$(((${tMB#?}+1)*15/2+165))"
;;
6[5-9])
m2="$(((${tMB#?}+1)*10+150))"
c2="$(((${tMB#?}+1)*15/2+165))"
;;
*)
m2=254
c2=254
;;
esac
################tGPU################
case "$tGPU" in
[0-9]|[0-4][0-9])
m3=90
c3=90
;;
5[0-9])
m3="$((${tGPU#?}+91))"
c3=90
;;
6[0-9])
m3="$((${tGPU#?}+101))"
c3=90
;;
7[0-9])
m3="$(((${tGPU#?}+1)*2+110))"
c3=90
;;
8[0-9])
m3="$(((${tGPU#?}+1)*10+130))"
c3="$(((${tGPU#?}+1)*10+100))"
;;
*)
m3=254
c3=254
;;
esac
################analiz################
CPUFAN
MOTOFAN
if [ "$1" = "-log" ]
then
echo "BIG:$MOTOpwm \n CPU:$CPUpwm
$m1 $m2 $m3 \n $c1 $c2 $c3"
fi
done
Ну и банальное bash /dir/script.sh из под system:D тоже не помагает.Шо касается yes то через
yes -h
невозможно заставить выводить слово "-h", и это не единственный такой ключ.
> Шо касается yes то через
> yes -h
> невозможно заставить выводить слово "-h", и это не единственный такой ключ.yes -- -h
А с вышеобозначенным скриптом не помогу. Я не понял нихрена.
> yes -- -hЗапомню, дякую.
> А с вышеобозначенным скриптом не помогу. Я не понял нихрена.Ну он читает 3 температуры и на их основе меняет 2 параметра оборотов вентиляторов, просто сделал не линейную зависимость, а кривую. :)
Ну главная суть работы скрипта сводится к (просто аналогичный пример):
#!/bin/bash
while true
do
## sleep 1 #так работает из под systemd
read -t 1 #так НЕ работает из под systemd, нет паузы
read a b c </proc/stat
case "$b" in
0)
d=100
;;
1)
d=200
;;
*)
d=300
;;
esac
echo "$d"
done
> sleep 1 #так работает из под systemd
> read -t 1 #так НЕ работает из под systemd, нет паузыПри всей моей нелюбви к systemd, как она может так влиять на работу других программ, чтобы паузу сорвать?
sleep же дёргает usleep, а тот же реализован через sigalarm. То есть мы проходим через libc и ядро. Каким боком тут systemd?
Не шлёт же она каждую секунду sigalarm всем процессам в группе.Покажи, в общем, как и откуда запускаешь этот сервис. Я коллегам разошлю, может кто чего дельное скажет.
>> sleep 1 #так работает из под systemd
>> read -t 1 #так НЕ работает из под systemd, нет паузы
> При всей моей нелюбви к systemd, как она может так влиять на
> работу других программ, чтобы паузу сорвать?
> sleep же дёргает usleep, а тот же реализован через sigalarm. То есть
> мы проходим через libc и ядро. Каким боком тут systemd?
> Не шлёт же она каждую секунду sigalarm всем процессам в группе.
> Покажи, в общем, как и откуда запускаешь этот сервис. Я коллегам разошлю,
> может кто чего дельное скажет./proc/1/fd/0 -> /dev/null
$ time read -t 1 < /dev/null
real 0m0.000s
user 0m0.000s
sys 0m0.000s
Понял, спасибо, EHLO. Плюс заметил, что sleep работает. Я сначала почему-то прочитал наоборот и гадал, как sleep может НЕ работать...
Кстати. :)Сайт заблокирован
Причина блокировки: Распространение вредоносного ПО
На сайте лежал архив с тыщей древних вирусов, для проверки антивируса. ;)
А щас с доступом проблемы.
> На сайте лежал архив с тыщей древних вирусов, для проверки антивируса. ;)На будущее: если ты на бессплатном хостинге такое выкладываешь, ставь на архив пароль.
>> На сайте лежал архив с тыщей древних вирусов, для проверки антивируса. ;)
> На будущее: если ты на бессплатном хостинге такое выкладываешь, ставь на архив
> пароль.А там стоял пароль и так, все равно пристали.
Баш в этом примере запускается ровно один раз. Миллион раз подряд всего лишь инкрементируется счётчик и проверяется его значение.
Так что чтение .bashrc (которое тоже происходит олин раз) тут тоже ни при чём. Просто баш сам по себе такой тормоз.
$ time sh -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'real 0m6,488s
user 0m6,480s
sys 0m0,000s
$ time bash -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'real 0m6,417s
user 0m6,420s
sys 0m0,000s?
>[оверквотинг удален]
> NO=$((NO+1)); done'
> real 0m6,488s
> user 0m6,480s
> sys 0m0,000s
> $ time bash -c 'NO=1; until [ $NO = 1000000 ]; do
> NO=$((NO+1)); done'
> real 0m6,417s
> user 0m6,420s
> sys 0m0,000s
> ?ладно туплю
Проверь: readlink /bin/sh
На бубунте разница раза в 4.
>>На бубунте разница раза в 4.Вот, даже больше чем 4 раза на 17.10:
$ readlink /bin/sh
dash$ time sh -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'
real 0m1,442s
user 0m1,442s
sys 0m0,000s$ time bash -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'
real 0m6,657s
user 0m6,655s
sys 0m0,000s
% time sh -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'
sh -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done' 3,01s user 0,00s system 99% cpu 3,012 total
% time bash -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'
bash -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done' 12,66s user 0,01s system 99% cpu 12,678 total
% time zsh -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'
zsh -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done' 7,13s user 1,05s system 99% cpu 8,187 total
zsh: 5.4
bash: 4.4
$time sh -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'real 0m9.006s
user 0m7.328s
sys 0m0.225s$time bash -c 'NO=1; until [ $NO = 1000000 ]; do NO=$((NO+1)); done'
real 0m4.316s
user 0m4.316s
sys 0m0.000s
>Не проще KDE поставить?Наверное, не проще, но лучше.
Любопытно, как они пуши сделали.
Если любопытно - скачай и посмотри. Open source ведь.
Через Google. Это лишь FLOSS клиент для гуглосервисов, сами сервисы те же.
После CopperheadOS на это пoделие даже смотреть стыдно.
А чего копперхед? 1000$ за Пиксель? А не жирновато ли?
Ставь на предыдущие модели типа Nexus 5X.Вопрос в том что коперхед помер.
Они что-то там не поделили с CEO.
И разработчик зааплодил исходники на гихаб.
А вся инфрастура соответсвенно наипнулась.
Звучит как игра. Ведь это не так?
> Звучит как игра. Ведь это не так?Каждый раз корейский рандом на старте.
> Каждый раз корейский рандом на старте.Главное чтобы не зерг раш.
Эх жаль lenovo a1000 не поддерживают
Тоже самое Lenovo Vibe Shot..
Чего-то у них всего 2 аппарата Lenovo поддерживаемых
Скажи спасибо своему Lenovo.
а где же те которые кричали что все аппараты поддерживаются ?..
Врут что ли?
Уж лучше купить яблоко - оно получает обновления 5 лет, а не становится кирпичом сразу после покупки - как Android.
Купи google pixel 2 и будет тебе счастье.
Купи sgs3 и будет счастье =)
Про более новые модели не знаю.
Ведроид - как лотерея. Как покупка роутера под опенврт - купишь а оказалась другая ревизия. Легче не обновлять девайс вообще.
Вы имеете ввиду дешевые модели на Андройде наверное
Зато недешёвые отсосунги на старте продаж всё время такие прекрасные! То камера не работала. То взрывались. Теперь вот мерцают и розовят. "Дорогой" Андроид - круто же. Кстати, мерцали эти их амоледы всегда. Помню ржал с ютуба, где чел показывал какой-то новый отсосинг и объяснял, что он мерцает потому, что это такая технология - так и должно быть. Ты купил телефон за полсотни, а у него экран мерцает и полосит так, что у тебя глаза на лоб, а тебе говорят: это такая технология, чувак! Так и должно быть, чувак! Расслабься, чувак!
> Скажи спасибо своему Lenovo.Причём тут Lenovo? Количество поддерживаемых моделей в разы меньше, чем количество моделей, поддерживаемых Lineage OS.
Новость не читай, камент оставляй.
>Процесс установки и поддерживаемые устройства аналогичны LineageOS
Аноним, ты бы зашел на https://download.lineage.microg.org/ - там три с половиной телефона
> Аноним, ты бы зашел на https://download.lineage.microg.org/ - там три с половиной телефонаНадо просто собрать прошифку самому, очевидно. Делов то.
> Надо просто собрать прошифку самому, очевидно. Делов то.Тогда уж и смарт спаять самому. Делов то.
Вы же такие здесь все советчики без страха и упрёка в последней инстанции :)
На сайте lineageOS списко поддерживаемых устройств Lenovo:
P2 (kuntao)
Vibe K5 / K5 Plus (A6020)
Vibe Z2 Pro (kingdom)
Yoga Tab 3 Plus LTE (YTX703L)
Yoga Tab 3 Plus Wi-Fi (YTX703F)На сервере загрузок microG есть билды под все из данного списка.
Если под упомянутые вам модели есть НЕофициальные билды LineageOS, то microG тут не при делах, они используют только, то что есть на сайте LineageOS.
gmail работает?
Работает.
Со стандатрным Google Play Store скрестить можно? По сути единственный сервис Google, который реально нужен.
Можно и купленные приложения тоже робят.
> Со стандатрным Google Play Store скрестить можно?Зачем? Там одна вирусня.
Поставьте Yalp Store из F-Droid и забудьте о родном Google Play
> Поставьте Yalp Store из F-Droid и забудьте о родном Google PlayВынужден заметить - иногда коряво обновляет установленный софт или не обновляет вообще (скачает, а потом "установка не удалась").
Я такое периодически наблюдаю у себя на стоковой прошивке со стоковым Google Play.
Вчера вот натянул туда microg и Yalp Store, посмотрим как будет теперь...
А как там с аудитом приложений в F-Droid, кто знает? Хотя бы лучше чем в Google Play?
Лучше: https://duckduckgo.com/?q=hello+world+site%3Aplay.googl...В F-Droid такой фигни нет.
Щас набегут макоё^W огрызочники с ЛОРа и будут кукарекать, что AppStore такой фигни нет и там всё намного "лутше" чем в F-Droid.
> Щас набегут макоё^W огрызочники с ЛОРа и будут кукарекать, что AppStore такой
> фигни нет и там всё намного "лутше" чем в F-Droid.Никто кроме тебя здесь даже не намекал про "макоё^W огрызочников с ЛОРа". Они надругались над тобою в детстве? И почему именно с ЛОРа?
Что за глупый вопрос. Камрад же видел как последний раз они туда убежали. Видимо у них там гнездо. Курлы-курлы
> А как там с аудитом приложений в F-Droid, кто знает? Хотя бы
> лучше чем в Google Play?Никак. Гарантий тебе никто не даст.
Если есть желание, можешь декомпилировать apk и сам смотреть.
Вот какую гарантию F-Droid точно даст, так это ту, что всё собрано ровно из тех исходников, которые лежат в открытом доступе, так что декомпилировать ничего не придётся. Но ты продолжай кукарекать о том, в чём не смыслишь.
А еще эти товарищи лепят "антифичи" и за них выпиливают приложения. К примеру, за "слабую" подпись или дырявый опенссл, они выпинывают на мороз. Казалось бы, они все правильно делают? Вот только они сами же их собирают и подписывают. Сам собрал, сам нажаловался, сам забанил...
Дырявое перемещаютииз основного репозитория в архив, который по дефолту выключен. Пользователь может им пользоваться на свой страх и риск.
> По сравнению с оригинальными приложениями Google в microG существенно сокращёно потребление ресурсов,А смысл это сравнивать если и функционал совсем не тот?
Да, действительно не тот, шпионажа недоложили.
>> По сравнению с оригинальными приложениями Google в microG существенно сокращёно потребление ресурсов,
>А смысл это сравнивать если и функционал совсем не тот?Сравнение ценное с перспективы конечного пользователя, на языке конечного пользователя. Мало ли почему стало сильно лучше. Не все знают, что это был выпиленный функционал, который обычным человеком используется крайне редко.
> заметно меньше нагружает CPU, что положительно сказывается на времени автономной работтоже странный вывод. можно подумать что в процентном отношении это как-то сказывается на времени работы учитывая сколько потребляет экран и прочее. опять же, они точно будут меньше потреблять просто потому что нет функционала и пользоваться будет нечем.
У меня на Xiaomi Max наличие и отсутствие гуглоаппов - это 2 и 4 дня использования в более-менее ленивом режиме. При том, что я там вообще ничем не пользовался явно (даже аккаунт гугла настроен не был).
> можно подумать что в процентном отношении это как-то сказывается на времени работы учитывая сколько потребляет экран и прочееСказывается. Гуглосервисы любят периодически будить железку и что-то делать в фоне.
Да, сказываются и сказываются очень плохо. Интернет полон историй успеха. Мою тоже можешь добавить.
Сказывается заметно. После замены gapps на microg мой телефон стал жить дольше на день.
Как минимум попробовать стоит. Для установки microg совсем необязательно ставить эту сборку из новости. У меня обычны
Сказывается заметно. После замены gapps на microg мой телефон стал жить дольше на день.
Как минимум попробовать стоит. Для установки microg совсем необязательно ставить эту сборку из новости. У меня обычный цианоген.
О, релизнулись!Однако, надо заметить что они прекрасно ставятся и без специальных сборок.
Рбятк молодцы.
гугловцы на корню всё это порежут в новых версиях гуглосервисах
> гугловцы на корню всё это порежут в новых версиях гуглосервисахПоставьте Yalp Store из F-Droid и забудьте о родном Google Play
Поставил эту прошивку - в комплекте нет Google Contact Sync (DAVdroid не предлагать, он однажды глюкнул и убил все контакты), не работает Google Play Games (люблю играть, а там все сохранялки). Вобщем пичалька )
DavDroid полгода на телефоне, полёт нормальный. Возможно проблема была на сервере.
Прошу поставить приложение и сказать, как оно себя ведет, отображает ли карты, какие именно, дает ли по ним елозить, выбирать город, кажет ли рекламу и прочее-прочее. https://play.google.com/store/apps/details?id=com.foreca.and...
> MicroG requires a patch called "signature spoofing", which allows the microG's apps to spoof themselves as Google Apps.Знатная дырень в безопасности. Я конечно понимаю, что по другому такую задачу попробуй реши, но всё же...
>> MicroG requires a patch called "signature spoofing", which allows the microG's apps to spoof themselves as Google Apps.
> Знатная дырень в безопасности. Я конечно понимаю, что по другому такую задачу
> попробуй реши, но всё же..."дырень в безопасности Google", аминь.
>> MicroG requires a patch called "signature spoofing", which allows the microG's apps to spoof themselves as Google Apps.
>Знатная дырень в безопасности. Я конечно понимаю, что по другому такую задачу попробуй реши, но всё же...The signature spoofing could be an unsafe feature only if the user blindly gives any permission to any app, as this permission can't be obtained automatically by the apps.
Moreover, to further strengthen the security of our ROM, we modified the signature spoofing permission so that only system privileged apps can obtain it, and no security threat is posed to our users.
Самая лучшая реализация сервисов Google - отсутствие сервисов Google.
Аминь!
Как выкачивать APK бесплатных приложений? Т.е. тех, которые доступны без оплат и т.п.