Что такое мета режим на андроиде
Любой продвинутый пользователь операционной системы Windows знает о существовании и предназначении безопасного режима. Однако мало кто догадывается, что такой режим есть и в мобильной операционной системе Андроид.
Безопасный режим работы Андроид это специальный режим, в котором можно загрузить телефон. При загрузке Андроид устройства в безопасном режиме будут запускаться только системные приложения. Таким образом, можно без проблем загрузить устройство, которое зависает или сильно тормозит от установленных приложений.
После загрузки в безопасном режиме можно удалить все, что мешает работать Андроид устройству и вернуться в нормальный режим работы. Но, в некоторых таких случаях у пользователей возникают сложности с возвращением в нормальный режим эксплуатации устройства. В данной статье мы расскажем о том, как включить и отключить безопасный режим на Андроид.
Как убрать или отключить безопасный режим на Андроид
Начнем с того как отключить безопасный режим на Андроид, поскольку именно это вызывает больше всего сложностей. Существует несколько способов, которые позволяют убрать безопасный режим на Андроид.
- Способ № 1. Отключите батарею на 30 секунд, после этого установите обратно и попытайтесь загрузить Andro >Как включить безопасный режим на Android
Если у вас Android 4.1 или более новая версия, то для того чтобы включить безопасный режим на Андроид вам необходимо нажать на кнопку включения устройства. После этого перед вами появится окно, в котором можно отключить питание устройства, перейти в режим полета или отключить звук. Здесь нужно нажать на пункт «Отключить питания» и удерживать палец пока не появится сообщение с предложением перейти в безопасный режим.
После того, как появилось предложение перейти в безопасный режим, нажмите на кнопку «ОК».
После этого Андроид устройство перезагрузится в безопасном режиме. После загрузки в нижней части экрана появится надпись, которая информирует о том, что устройство работает в безопасном режиме.
Вот таким не сложным способом это и делается, а как отключить безопасный режим на Андроиде вы уже знаете.
Если же вы используете Android 4.0 или более старую версию этой операционной системы, то для того чтобы включить безопасный режим вам необходимо просто выключить устройство, а при его включении дождаться появления логотипа производителя и зажать кнопки повышения и снижения громкости. Эти кнопки нужно зажать одновременно и удерживать до окончания загрузки Андроид устройства.
Хотите что-то добавить к статье? Поделитесь в комментариях.
Новый смартфон или планшет на базе Андроид всегда работает без сбоев и глюков. Но что же делать, если в дальнейшем использовании устройство вдруг «тормозит», замедляется скорость его работы, неправильно работают приложения, нестабильно реагирует сенсор? Такие проблемы можно решить, включив безопасный режим работы. В устройстве под управлением Андроид, безопасный режим (Safe Mode) даст возможность определить, из-за чего происходят неполадки.
Если телефон в безопасном режиме работает нормально, то «глюки» с ним происходят из-за какого-либо приложения.
Как включить: 3 способа
Из всех способов включения самыми актуальными, пожалуй, являются следующие:
Способ 1
- Необходимо нажать кнопку выключения и держать до тех пор, пока не появится окно выключения.
- Удерживая палец на ссылке «Отключение устройства», нужно дождаться, пока не выйдет дополнительное меню, в котором нужно выбрать безопасный режим.
Нажав «Ок», переключите Андроид в безопасный режим.
Способ 2
- Выключить телефон.
- Когда на дисплее появится надпись, соответствующая названию марки смартфона или надпись Android, то необходимо нажать кнопку увеличения громкости.
- В таком случае после включения внизу экрана появится надпись «Безопасный режим» (Safe Mode).
Способ 3
Если вышеперечисленные способы не подошли, то попробуйте ещё вот так:
- Аппарат нужно выключить.
- Во время загрузки удерживать кнопку уменьшения громкости.
- После этого включится безопасный режим.
На заметку : в некоторых версиях Андроид, для перехода в Safe Mode необходимо перезагружать смартфон вручную, и в то время, когда на экране появится логотип операционной системы, нужно нажать кнопки повышения и уменьшения громкости звука и удерживать до полной загрузки устройства.
Как отключить: 2 варианта
Не менее актуален вопрос отключения безопасного режима. Перед этим необходимо перезагрузить устройство, а затем воспользоваться одним из предложенных вариантов.
Первый вариант отключения
- Телефон включается, после перезагрузки, автоматически отключается Safe Mode.
- Если автоматического сброса безопасного режима не произошло, то необходимо удалить последнее приложения, которое было установлено, для этого нужно в меню приложений выбрать пункт Настройки.
- При выборе этого приложения, будет предложен пункт Удалить. Именно этого пункта нужно коснуться.
- После проделанных действий перезагрузите устройство.
Второй вариант отключения
Если первый способ не дал нужного результата, то можно попробовать второй способ — сброс на заводские настройки:
- Сначала необходимо выбрать из меню пункт Настройки, в развернувшемся меню коснуться пункта Резервное копирование и сброс настроек.
- В предложенном меню выбираете Сброс до заводских настроек, затем Сброс смартфона/планшета.
- Удалить все. После этого аппарат будет, как новенький. Но, имейте в виду, что все установленные приложения и персональные данные будут удалены. Останутся только заводские настройки, установленные производителем.
Таким образом, Safe Mode загружает только необходимое количество программ и утилит, только нужные компоненты. Именно для безопасности данных пользователя, производителями был разработан вышеназванный режим, и приложения будут работать только те, которые установил производитель аппарата. Все остальные программы, которые были установлены самим пользователем, возможно, несут некоторую угрозу, и поэтому будут отключены.
Даже если в телефоне произошли серьезные проблемы, и в стандартном режиме он уже не выполняет свои основные функции, то в безопасном режиме всё равно может работать. Например, батарея начала разряжаться слишком быстро или не работает кнопка вызова, прежде чем сдавать в ремонт такой аппарат, можно проверить его работоспособность в этом служебном режиме.
Запускаем программу, жмём кнопку«RECONNECT» , глазок начал мигать: красный-зеленый: программа «ловит-ждет» подсоединение телефона! Правильно подсоединяем телефон и спустя несколько секунд телефон переходит в МЕТА моду: на экране появляется картинка-заставка (зависит от модели и от фантазии разработчиков софта в ките), а глазок в программе перестаёт мигать и становится жёлтым:
Что значит правильно подсоединить(законнектить) ? Для разных моделей последовательность подключения могут незначительно отличатся, быть разными. Пробуйте! Вот один из способов:
Предварительно находим кнопку(например: «Звук+»),зажав которую и подсоединив кита к компу в Диспетчере Устройств появляется среди портов Устройство по имени MTK USB Port (Драйвера для всех Неизвестных Устройств уже установлены) :
1 Передернуть батарею. Все опции убраны Жмем Реконнект
2 Коннектим, зажав «Звук+» , появляется MTK USB Port —> Программа выдает ошибку: «Error (28) in BootROM communication. »
3 Жмём Дисконнект
4 Отсоединяем кита, передерг. бат
5 Ставим опц. «Connect smartphone in META mode»
6 Press «Reconnect»
7 Коннектим уже без кнопок
Важно! —> В случае неудачных попыток(ошибок) соединится ВСЕГДА передергивайте(вытащить- 5 сек.-вставить) батарею.Иначе, даже если последовательность соединения правильная, при дальнейших попытках прога НЕ ЗАКОННЕКТИСЯ! Иногда может даже потребуется перезапустить программу.
Итак, программа «зацепила» наш МТК смартфон. В Диспетчере Устройств появилось два новых Устройства:
Среди СОМ портов: Gadget Serial (название может слегка отличатся в зависимости от версий пакета MTK драйверов) Через это Устройство собственно и работае .
Другое Устройство Android Phone(ADB Interface) Если на компьютере установлена программа -менеджер смартфонов сразу «всплывет» её окно и вы можете начать работу с приложениями,контактами в телефоне и т. д. Через это же Устройство работает программа Запустим её :
И вот подробная информация о прошивке вашего смарта. Используя эту программу можем сделать бекап прошивки, поправить IMEI после прошивки,получить карту блоков(файлов) прошивки,скаттер(scatter) файл и т. д.
И ещё . Конечно, при подключении в любой сервис-режим( Meta mode или Flash mode(бекап,прошивка) ) телефон должен быть выключен а батарея заряжена: >80% . Иногда(опять же пробовать!) для этих режимов может понадобится т. н. модифицированный дата-кабель: обычный дата-кабель в мини-USB разъеме(придется разобрать!) которого 4-ый(обычно NC – не подсоединён), и 5-ый(GND) контакты закорочены между собой.
Пока все. Но. Game не Over .
(by neophytos) Approved by Кайф (сайт)
С помощью безопасного режима в планшете или смартфоне samsung, sony, zte, htc, lenovo, fly, lg, asus, huawei dexp, мтс, bq работающим на андроиде, например, 5.1 можно исправить ошибки, происходящие в системе, хотя иногда может потребоваться эту функцию просто отключить.
Что такое безопасный режим для Android? Это позволяет безопасно перезагрузить систему в телефоне и решить проблемы, которые возникли во время его использования.
В безопасном режиме работают только приложения по умолчанию и некоторые инструменты сторонних производителей.
Если при обычном использовании телефона или планшета, есть проблемы, работа в безопасный режим должен помочь в их поиске и устранении, но вернемся к нашей теме.
Мне известно три варианта как отключить в телефоне безопасный режим – их описание найдете ниже.
ПРИМЕЧАНИЕ: одна из наиболее распространенных причин, когда телефон самостоятельно попадает в безопасный режим при каждом перезапуске — залипание кнопки громкости (Volume Down).
Это вызвано чаще всего защитным чехлом при нажатии слишком сильно на боковые кнопки или блокирование от пыли. Проверьте это и попробуйте перезагрузить смартфон без защитного кожуха.
Способ первый отключить безопасный режим в телефоне андроид
Чтобы отключить безопасный режим на андроиде, попробуйте просто выключить телефон и убрать с него батарею примерно секунд на 30, после чего подождите секунд тридцать, вставьте ее на место и включите устройство как обычно включаете.
Хотя в большинстве случает такой вариант проблему решает, в нем есть нюанс – не все смартфоны и планшеты андроид могут себе это позволить, особенно последние китайские и самсунг.
В устройствах леново, алкатель, асус, флай, эксплей, микромакс аккумуляторы почти всегда съемные.
Если в вашем устройстве батарея несъемная, этот вариант пропускаем и идем дальше, к другим способам.
Способ второй убрать безопасный режим в смартфоне андроид
Здесь также есть нюанс. Не у всех смартфонов есть встроенная функция перезагрузки устройства. Например, на самсунг галакси A3 – есть экстренный режим и к безопасному он отношения не имеет вообще (не путайте).
Что тогда делать? Тогда попробуйте просто выключить телефон, как это делаете всегда и включите, удерживая при этом кнопку «Домой», как описано выше.
Способ третий выключить безопасный режим на планшете андроид
Для применения третьего варианта выключения безопасного режима андроид выключите планшет или смартфон и включите опять.
Только в зависимости от телефона и даже версии андроид, еще перед запуском, вместе с кнопкой включения нужно зажать еще одну. Варианты смотрите ниже
В конечном результате, вы должны очутится в системном меню и выбрать, точнее нажать на строку «Wipe data/Factory Reset».
Перемещение верх-вниз осуществляется кнопками увеличения-уменьшения звука, а нажатие (выбор) кнопкой включения-выключения.
Теперь свой выбор потребуется подтвердить – точно ли вы желаете удалить все свои данные, а это именно так и случится.
В случае согласия отвечайте утвердительно (на карте памяти все данные останутся нетронутыми).
После подтверждения расслабитесь и спокойно подождите пока система телефона или планшета все что вы накопили удалит, после чего перезагрузите смартфон нажав на строку – «reboot… .» и загрузитесь в обычном режиме.
Вот и все. Один из вариантов должен отключить безопасный режим вашего андроид, хотя и здесь есть нюанс.
Если ваш телефон имеет аппаратные проблем выключить его может не получится – устройство просто не может работать в нормальном режиме.
В случае проблем с прошивкой, то последний вариант их обычно решает, хотя я рекомендую вам его применять только последним.
Для него потребуется немного опыта и все данные, которые вы «копили» с момента покупки пропадут. Успехов.
Новый смартфон или планшет на базе Андроид всегда работает без сбоев и глюков. Но что же делать, если в дальнейшем использовании устройство вдруг «тормозит», замедляется скорость его работы, неправильно работают приложения, нестабильно реагирует сенсор? Такие проблемы можно решить, включив безопасный режим работы. В устройстве под управлением Андроид, безопасный режим (Safe Mode) даст возможность определить, из-за чего происходят неполадки.
Если телефон в безопасном режиме работает нормально, то «глюки» с ним происходят из-за какого-либо приложения.
Как включить: 3 способа
Из всех способов включения самыми актуальными, пожалуй, являются следующие:
Способ 1
Способ 2
- Выключить телефон.
- Когда на дисплее появится надпись, соответствующая названию марки смартфона или надпись Android, то необходимо нажать кнопку увеличения громкости.
- В таком случае после включения внизу экрана появится надпись «Безопасный режим» (Safe Mode).
Способ 3
Если вышеперечисленные способы не подошли, то попробуйте ещё вот так:
- Аппарат нужно выключить.
- Во время загрузки удерживать кнопку уменьшения громкости.
- После этого включится безопасный режим.
На заметку : в некоторых версиях Андроид, для перехода в Safe Mode необходимо перезагружать смартфон вручную, и в то время, когда на экране появится логотип операционной системы, нужно нажать кнопки повышения и уменьшения громкости звука и удерживать до полной загрузки устройства.
Как отключить: 2 варианта
Не менее актуален вопрос отключения безопасного режима. Перед этим необходимо перезагрузить устройство, а затем воспользоваться одним из предложенных вариантов.
Первый вариант отключения
- Телефон включается, после перезагрузки, автоматически отключается Safe Mode.
- Если автоматического сброса безопасного режима не произошло, то необходимо удалить последнее приложения, которое было установлено, для этого нужно в меню приложений выбрать пункт Настройки.
- При выборе этого приложения, будет предложен пункт Удалить. Именно этого пункта нужно коснуться.
- После проделанных действий перезагрузите устройство.
Второй вариант отключения
Если первый способ не дал нужного результата, то можно попробовать второй способ – сброс на заводские настройки:
- Сначала необходимо выбрать из меню пункт Настройки, в развернувшемся меню коснуться пункта Резервное копирование и сброс настроек.
- В предложенном меню выбираете Сброс до заводских настроек, затем Сброс смартфона/планшета.
- Удалить все. После этого аппарат будет, как новенький. Но, имейте в виду, что все установленные приложения и персональные данные будут удалены. Останутся только заводские настройки, установленные производителем.
Таким образом, Safe Mode загружает только необходимое количество программ и утилит, только нужные компоненты. Именно для безопасности данных пользователя, производителями был разработан вышеназванный режим, и приложения будут работать только те, которые установил производитель аппарата. Все остальные программы, которые были установлены самим пользователем, возможно, несут некоторую угрозу, и поэтому будут отключены.
Даже если в телефоне произошли серьезные проблемы, и в стандартном режиме он уже не выполняет свои основные функции, то в безопасном режиме всё равно может работать. Например, батарея начала разряжаться слишком быстро или не работает кнопка вызова, прежде чем сдавать в ремонт такой аппарат, можно проверить его работоспособность в этом служебном режиме.
Внешний вид и свойства каждого графика в терминале могут быть настроены индивидуально. Для этого следует выполнить команду меню «Графики – Свойства» , одноименную команду контекстного меню графика или нажать клавишу F8. В результате этих действий появится окно «Свойства», с помощью которого можно настроить цвет различных элементов графика (вкладка «Цвета»):
- Фон – фон;
- Текст – оси, шкалы и строка OHLC;
- Сетка – сетка;
- Бар вверх – бар вверх, тени и окантовка тела бычьей свечи;
- Бар вниз – бар вниз, тени и окантовка тела медвежьей свечи;
- Бычья свеча – тело бычьей свечи;
- Медвежья свеча – тело медвежьей свеча;
- Линия – линейный график и доджи;
- Объемы – объемы и уровни открытых позиций;
- Линия Ask – цвет линии Ask-цены;
- Уровни стопа – уровни стоп-ордеров (Stop Loss и Take Profit).
В левой части окна, на графике предварительного просмотра, автоматически отображаются внесенные изменения. Кроме ручной настройки цветов различных элементов графика, можно выбрать предопределенные цветовые схемы в одноименном поле. В терминале доступны три цветовые схемы: «Yellow on Black» (желтое на черном фоне), «Green on Black» (зеленое на черном фоне) или «Black on White» (черное на белом фоне). При выборе каждой из схем вышеописанные элементы графика будут также изменяться на графике в левой части окна. Собственные цветовые схемы можно сохранять в шаблонах .
В этом окне можно также задать другие настройки графика. Для этого необходимо переключиться на вкладку «Общие» и выбрать требуемые опции:
- Автономный график – сделать график оффлайновым. Эта опция прекращает получение и отрисовку ценовых данных для данного графика. В дальнейшем, после отключения этой опции, ценовые данные снова начинают рисоваться на графике. После открытия графика в оффлайне (команда меню «Файл – Открыть автономно») эта опция включается автоматически.
- График сверху – расположить график на «переднем плане». Если эта функция включена, то все аналитические объекты располагаются «под» графиком цены.
Выполнение данной команды аналогично команде меню «Графики – График сверху» . - Смещение графика – отодвинуть график от правого края окна до метки сдвига. Метку сдвига графика (серый треугольник в верхней части окна) можно перемещать мышкой по горизонтали в пределах 10%-50% размера окна.
Эту опцию можно также включить кнопкой панели «Графики» и командой меню «Графики – Сдвиг графика» . - Автопрокрутка графика – разрешить/запретить смещать график влево автоматически после начала формирования нового бара. Если эта опция включена, на графике всегда отображается последний бар. Эту опцию можно также включить кнопкой панели «Графики» и командой меню «Графики – Автопрокрутка» .
- Фиксировать масштаб – зафиксировать текущий масштаб графика. Если масштаб не зафиксирован, при прокрутке графики отображаются с автоматическим масштабированием по вертикали. Эта опция отключает автомасштабирование и фиксирует масштаб. При выборе данной опции активизируются поля дополнительных параметров масштабирования «максимум» и «минимум».
- Фиксировать масштаб 1:1 – зафиксировать масштаб графика «один к одному» (размер одного пипса вертикальной оси в пикселах равен расстоянию между осями баров в пикселах). При этом автоматически включается опция «Фиксировать масштаб» и у правой стороны окна графика появляется бегунок полосы прокрутки, позволяющий перемещать график по вертикали. Этот режим необходим для точных геометрических построений.
- Бары – представить график в виде последовательности баров.
панели «Графики» , командой меню «Графики – Бары» либо клавишами-акселераторами Alt+1 . - Японские свечи – представить график в виде последовательности японских свечей.
Данное действие можно также выполнить кнопкой панели «Графики» , командой меню «Графики – Японские свечи» либо клавишами-акселераторами Alt+2 . - Линия – представить график в виде ломаной линии, соединяющей цены закрытия баров.
Данное действие можно также выполнить кнопкой панели «Графики» , командой меню «Графики – Линия» либо клавишами-акселераторами Alt+3 . - Показывать OHLC – показать/скрыть строку OHLC. При выполнении этого действия в левой верхней части окна появляется дополнительная информационная строка. В ней, кроме названия инструмента и периода графика, перечислены также цены последнего бара. Запись цен имеет формат: OPEN, HIGH, LOW и CLOSE (OHLC) – цена открытия бара, максимальная цена бара, минимальная цена и цена закрытия соответственно. Таким образом, перед глазами всегда оказывается точное значение последнего бара. Эта опция также влияет на информационную строку подокон индикаторов.
- Показывать линию Ask – показать/скрыть уровень Ask-цены последней котировки. В терминале бары строятся и отображаются только по Bid-ценам. Однако при открытии длинных позиций и закрытии коротких всегда используется Ask-цена. Она никак не отражается на графике, ее нельзя увидеть. Чтобы более точно контролировать свою торговую деятельность, можно включить параметр «Показывать линию Ask». По выполнении этой команды на графике появится дополнительная горизонтальная линия, соответствующая Ask-цене последнего бара.
- Показывать разделители периодов – показать/скрыть разделители периодов. На горизонтальной оси графика отображаются дата и время каждого бара. А ценой деления этой горизонтальной шкалы является выбранный период (таймфрейм). Опция «Показывать разделители периодов» наносит на график дополнительные вертикальные линии, соответствующие границам более крупного таймфрейма. Так, для графиков с периодом от M1 до h2 строятся дневные разделители, h5 – недельные, D1 – месячные, а W1 и MN1 – годовые.
- Показывать сетку – показать/скрыть сетку в окне графика.
меню «Графики» , а также нажатием клавиш-акселераторов Ctrl+G . - Показывать объемы – показать/скрыть график объема в нижней части окна. При фиксированном масштабе эта опция не работает.
Те же действия можно выполнить одноименной командой контекстного меню графика и меню «Графики» , а также и нажатием клавиш-акселераторов Ctrl+L . - Показывать описания объектов – показать/скрыть описания объектов на графике. Если эта опция включена и у нанесенных на график объектов есть описания, они буду показываться прямо на графике.
Подключение в META mode (META режим)
Собственно в МЕТА режим MTK смартфон переводит программа MAUI META 3G. Скачиваем-устанавливаем на компьютер последнюю ВЕРСИЮ . Запускаем программу, жмём кнопку«RECONNECT» , глазок начал мигать: красный-зеленый: программа «ловит-ждет» подсоединение телефона ! Правильно подсоединяем телефон и спустя несколько секунд телефон переходит в МЕТА моду: на экране появляется картинка-заставка (зависит от модели и от фантазии разработчиков софта в ките), а глазок в программе перестаёт мигать и становится жёлтым:
Что значит правильно подсоединить(законнектить) ? Для разных моделей последовательность подключения могут незначительно отличатся, быть разными. Пробуйте ! Вот один из способов:
Предварительно находим кнопку(например: «Звук+»),зажав которую и подсоединив кита к компу в Диспетчере Устройств появляется среди портов Устройство по имени MTK USB Port (Драйвера для всех Неизвестных Устройств уже установлены) :
1 Передернуть батарею. Все опции убраны Жмем Реконнект
2 Коннектим, зажав «Звук+» , появляется MTK USB Port —> Программа выдает ошибку: «Error (28) in BootROM communication…»
3 Жмём Дисконнект
4 Отсоединяем кита , передерг. бат
5 Ставим опц. «Connect smartphone in META mode»
6 Press «Reconnect»
7 Коннектим уже без кнопок
Важно! —> В случае неудачных попыток(ошибок) соединится ВСЕГДА передергивайте(вытащить- 5 сек.-вставить) батарею.Иначе, даже если последовательность соединения правильная, при дальнейших попытках прога НЕ ЗАКОННЕКТИСЯ ! Иногда может даже потребуется перезапустить программу.
Итак, программа «зацепила» наш МТК смартфон. В Диспетчере Устройств появилось два новых Устройства:
Среди СОМ портов: Gadget Serial (название может слегка отличатся в зависимости от версий пакета MTK драйверов) Через это Устройство собственно и работае MAUI META.Другое Устройство Android Phone(ADB Interface) Если на компьютере установлена программа -менеджер смартфонов SnapPea сразу «всплывет» её окно и вы можете начать работу с приложениями,контактами в телефоне и т. д. Через это же Устройство работает программа MTK Droid Tools. Запустим её :
И вот подробная информация о прошивке вашего смарта . Используя эту программу можем сделать бекап прошивки, поправить IMEI после прошивки,получить карту блоков(файлов) прошивки,скаттер(scatter) файл и т. д.
Замечание: Устройство Android Phone(ADB Interface) в МЕТА режиме появляется независимо от того включён в телефоне «Режим разработчика»(Отладка по USB) или нет. Иногда для того,чтобы это Устройство появилось надо зажать при коннекте «Звук+» + «ВКЛ»(MAUI META подхватывает телефон раньше, чем он успевает перейти в «РЕКАВЕРИ» режим).
И ещё… Конечно, при подключении в любой сервис-режим(Meta mode или Flash mode(бекап,прошивка)) телефон должен быть выключен а батарея заряжена: >80% . Иногда(опять же пробовать!) для этих режимов может понадобится т. н. модифицированный дата-кабель: обычный дата-кабель в мини-USB разъеме(придется разобрать !) которого 4-ый(обычно NC — не подсоединён), и 5-ый(GND) контакты закорочены между собой .
Пока все. Но… Game не Over.
(by neophytos©) Approved by Кайф (china-gsm.ru)
Recommended by КитоМаН (china-gsm.ru)
Мета режим в телефоне lenovo
Новый смартфон или планшет на базе Андроид всегда работает без сбоев и глюков. Но что же делать, если в дальнейшем использовании устройство вдруг «тормозит», замедляется скорость его работы, неправильно работают приложения, нестабильно реагирует сенсор? Такие проблемы можно решить, включив безопасный режим работы. В устройстве под управлением Андроид, безопасный режим (Safe Mode) даст возможность определить, из-за чего происходят неполадки.
Если телефон в безопасном режиме работает нормально, то «глюки» с ним происходят из-за какого-либо приложения.
Как включить: 3 способа
Из всех способов включения самыми актуальными, пожалуй, являются следующие:
Способ 1
- Необходимо нажать кнопку выключения и держать до тех пор, пока не появится окно выключения.
- Удерживая палец на ссылке «Отключение устройства», нужно дождаться, пока не выйдет дополнительное меню, в котором нужно выбрать безопасный режим.
Нажав «Ок», переключите Андроид в безопасный режим.
Способ 2
- Выключить телефон.
- Когда на дисплее появится надпись, соответствующая названию марки смартфона или надпись Android, то необходимо нажать кнопку увеличения громкости.
- В таком случае после включения внизу экрана появится надпись «Безопасный режим» (Safe Mode).
Способ 3
Если вышеперечисленные способы не подошли, то попробуйте ещё вот так:
- Аппарат нужно выключить.
- Во время загрузки удерживать кнопку уменьшения громкости.
- После этого включится безопасный режим.
На заметку : в некоторых версиях Андроид, для перехода в Safe Mode необходимо перезагружать смартфон вручную, и в то время, когда на экране появится логотип операционной системы, нужно нажать кнопки повышения и уменьшения громкости звука и удерживать до полной загрузки устройства.
Как отключить: 2 варианта
Не менее актуален вопрос отключения безопасного режима. Перед этим необходимо перезагрузить устройство, а затем воспользоваться одним из предложенных вариантов.
Первый вариант отключения
- Телефон включается, после перезагрузки, автоматически отключается Safe Mode.
- Если автоматического сброса безопасного режима не произошло, то необходимо удалить последнее приложения, которое было установлено, для этого нужно в меню приложений выбрать пункт Настройки.
- При выборе этого приложения, будет предложен пункт Удалить. Именно этого пункта нужно коснуться.
- После проделанных действий перезагрузите устройство.
Второй вариант отключения
Если первый способ не дал нужного результата, то можно попробовать второй способ — сброс на заводские настройки:
- Сначала необходимо выбрать из меню пункт Настройки, в развернувшемся меню коснуться пункта Резервное копирование и сброс настроек.
- В предложенном меню выбираете Сброс до заводских настроек, затем Сброс смартфона/планшета.
- Удалить все. После этого аппарат будет, как новенький. Но, имейте в виду, что все установленные приложения и персональные данные будут удалены. Останутся только заводские настройки, установленные производителем.
Таким образом, Safe Mode загружает только необходимое количество программ и утилит, только нужные компоненты. Именно для безопасности данных пользователя, производителями был разработан вышеназванный режим, и приложения будут работать только те, которые установил производитель аппарата. Все остальные программы, которые были установлены самим пользователем, возможно, несут некоторую угрозу, и поэтому будут отключены.
Даже если в телефоне произошли серьезные проблемы, и в стандартном режиме он уже не выполняет свои основные функции, то в безопасном режиме всё равно может работать. Например, батарея начала разряжаться слишком быстро или не работает кнопка вызова, прежде чем сдавать в ремонт такой аппарат, можно проверить его работоспособность в этом служебном режиме.
Безопасный режим — очень полезная штука, которая помогает решить множество проблем. Во-первых, если у вас есть проблема с производительностью, то данная возможность вам очень сильно поможет. Во-вторых, она помогает, если вы установили приложение, которое тормозит ваш аппарат. Да и в целом, если у вас «забилась» система.
Но часто данная возможность мешает, ибо отключить её зачастую сложнее, чем включить. К тому же, возможно, что данная опция включилась случайно, когда это вовсе не нужно.
В данной статье мы расскажем, как на Леново отключить безопасный режим. Если после выполнения всех наших инструкций результата вы так и не увидите, тогда вам нужно идти в сервисный центр, ибо проблема может быть в самой прошивке.
Что такое безопасный режим?
Перед тем как узнавать о способах отключения безопасного режима, стоит подробнее узнать, что он собой представляет.
Безопасный режим — это такое состояние девайса, при котором у вас работают только системные приложения. Это помогает в случаях, если наблюдается проблема с производительностью или автономностью. Но если у вас нет подобных проблем, то данная фича только помешает вам, ведь она отключает работоспособность всех скачанных приложений и даже прячет их иконки.
Вообще эту опцию используют для того, чтобы удалить ненужные программы. Допустим, у вас очень много мусора, который настолько тормозит систему вашего смартфона, что вы попросту не можете его почистить. Тогда нужно просто включить безопасный режим и удалить всё ненужное. Но самая главная проблема не в том, чтобы войти, ведь в безопасный режим телефон Леново входит очень легко, а в том, чтобы вернуть все обратно.
Способы отключения безопасного режима на телефоне Lenovo
Способов отключения данного режима много, но далеко не факт, что хотя бы один из них сработает.
Самое первое, что вы можете сделать, — это вытянуть аккумулятор. Этот способ самый малоэффективный, поскольку у многих смартфонов монолитный корпус и несъемная батарея. Но если у вас съемная крышка, то почему бы не попробовать. Тем более это не вредит телефону.
Если подобная манипуляция не дала результата, то стоит попробовать нажимать при перезагрузке кнопку «Домой».
Если ничего не произошло, тогда единственный верный вариант и последний шанс — сброс до заводских настроек. Это очень ответственная процедура, ведь при этом можно получить «кирпич». Если вы не забыли свою gmail-почту или пароль, то вы просто не сможете разблокировать смартфон. А технической поддержки у Гугла нет, только сборник популярных вопросов. Поэтому, если вы захотите попробовать этот вариант решения проблемы, то для начала убедитесь, что имеете доступ к вашему аккаунту, сохраните все важные данные, а только после приступайте.
Если же эти способы не ответили на ваш вопрос, как отключить безопасный режим на Леново, то нужно идти в сервисный центр, ибо других способов отключения безопасного режима попросту нет. Кроме того, рекомендуется время от времени поглядывать на основной экран, так как в некоторых телефонах автоматически появляются сообщения с предложением убрать безопасный режим.
Извлечение батареи
Начнём с самого простого. Если вы задались вопросом, как выключить безопасный режим на планшете Леново, то первое, что вам стоит сделать, это вытащить батарею. Но ненадолго, всего на 30 секунд, а после нужно поставить её обратно и включить смартфон. Это помогает с очень малой долей вероятности, но всё же есть случаи, когда именно это и становится решением проблемы.
Со смартфонами все сложнее. В 2018 году большинство телефонов имеют монолитные корпуса, поэтому вряд ли этот способ решения проблемы вам подойдет.
Используя кнопку «
Домой»Если способ с аккумулятором вам не помог, то можно попробовать выйти из безопасного режима с помощью кнопки «Домой». Для того чтобы реализовать этот способ, вам нужно просто поставить смартфон на перезагрузку и во время включения аппарата зажать кнопку под экраном. Важно, чтобы вы держали кнопку «Домой» до конца перезагрузки.
Если вопрос, как убрать безопасный режим на Леново, так и остался открытым, то можно попробовать схожие способы, которые отличаются только кнопками. Точно так же поставьте на перезагрузку аппарат, только вместо кнопки «Домой» зажмите клавишу громкости вниз или вверх.
Получается, что вам нужно перезагрузить смартфон 3 раза. Но не стоит делать очень много попыток, ведь чрезмерные перезагрузки вредят вашему устройству.
Hard Reset
Если всё вышесказанное вам не помогло, то ваша последняя надежда — на откат настроек. Это на 100% работает для отключения безопасного режима.
Это сложная процедура, к которой стоит подготовиться. Во-первых, вам нужно записать пароль и логин от вашего аккаунта Google, ведь, как показывает практика, большинство пользователей забывают о нём на следующий день после регистрации. Если не запомнить эти данные, то вы можете получить «кирпич». Во-вторых, нужно создать копию всех данных, которые вам важны. Это могут быть какие-нибудь фотографии, музыка, документы и прочее.
После того как вы сделали всё это, стоит приступить к сбросу настроек. Вы можете сделать это двумя способами:
- Нужно зайти в «Настройки» и выбрать пункт «Сброс до заводских настроек». Смартфон выключится, очистится и выдаст окно регистрации нового пользователя.
- Просто выключаем смартфон и при включении зажимаем клавиши повышения и понижения громкости + кнопку «Домой». Запустится «Recovery Mode» («Инженерное меню»). В нём нужно выбрать строку «Wipe data/Factory Reset». Перемещение верх-вниз осуществляется кнопками увеличения и уменьшения звука, а выбор — кнопкой «Включение/выключение». После подтверждения запуска процесса дождитесь, пока система телефона или планшета всё удалит, и перезагрузите смартфон, нажав на строку со словом «reboot», чтобы загрузить девайс в обычном режиме.
Если это не помогло, то вашему аппарату поможет только перепрошивка или сервисный центр.
Видео, как выключить безопасный режим
После прочтения нашей инструкции о том, как на Lenovo отключить безопасный режим, вы примерно представляете, как это сделать. Но всё же лучше посмотреть видеоинструкцию, чтобы не нажать ничего лишнего. В видео показаны все способы того, как можно выйти из безопасного режима. Если ни один из этих способов вам не поможет, то нужно идти в сервисный центр, ведь сами вы ничего не сделаете, если не имеете хотя бы минимального опыта в решении подобных проблем.
У многих пользователей включается безопасный режим («Андроид»). Как выключить его? Обычно устройства, работающие на этой платформе, переходят в него в случае повреждения операционной системы или тогда, когда сторонние приложения вызывают какие-либо сбои в работе устройства. Есть несколько способов, как убрать безопасный режим на «Андроиде».
Перезагрузка устройства
Во-первых, необходимо определить причину включения этого самого режима. Активируется он, как правило, из-за сбоя системы или серьезной ошибки какого-либо приложения. В безопасном режиме пользователь не сможет запустить ни одно стороннее приложение. Если вдруг устройство перешло в него, то просто нужно перезагрузить девайс, и проблема будет решена.
Проверка панели уведомлений
В некоторых версиях операционной системы пользователю отправляется уведомление при переходе в безопасный режим («Андроид»). Отключить его можно нажатием. Устройство автоматически перезагрузится и запустится в нормальном режиме.
Нажатие и удержания кнопки включения
При выполнении этого действия откроется меню, где необходимо выбрать перезагрузку или выключение. Во втором случае нужно не забыть включить устройство обратно. Оно загрузится в обычном режиме. А если этого не произошло и снова все повторилось, как убрать безопасный режим на «Андроиде»? Об этом далее.
Одновременное нажатие двух кнопок
Многие пользователи утверждают, что из этого режима можно выйти, если в момент перезагрузки устройства нажать и удерживать одновременно кнопку питания с кнопкой уменьшения громкости.
Если у пользователя на устройстве сломана кнопка для регулировки громкости, данный шаг может привести к постоянной перезагрузке девайса в безопасном режиме. В таком случае придется нести гаджет в сервисный центр или, если хватает знаний и навыков, вскрыть его и попытаться самостоятельно исправить проблему.
Извлечение аккумулятора
Как убрать безопасный режим на «Андроиде» еще? Если есть такая возможность, можно извлечь из устройства аккумуляторную батарею и, возможно, оно будет работать в обычном режиме после включения. Перед извлечением телефон или планшет нужно обязательно выключить. Необходимо подождать минимум одну минуту, чтобы в устройстве полностью разрядились конденсаторы, а затем вставить батарею назад и включить.
Удаление приложений
Приложения, работающие со сбоями, являются самой распространенной причиной ухода устройства в безопасный режим. Чтобы выйти из него, нужно удалить недавно установленные программы.
Для этого надо открыть настройки гаджета, открыть список всех установленных приложений и перейти на вкладку с загруженными. Эти программы в безопасном режиме запускать нельзя, а вот удалить возможно. Рекомендуется избавиться от всех программ, которые были установлены за ближайшее время. После этого устройство нужно перезагрузить. Если не сработало, то нужно идти далее.
Сброс устройства
Как убрать безопасный режим на «Андроиде» (планшете или телефоне), если ничего из того, что было описано выше, не помогает? Сбросить настройки устройства.
Первое, что необходимо сделать – создать резервную копию всех данных в безопасном режиме. Сброс всех настроек приведет к полному удалению всей информации на устройстве. Оно станет таким, каким было при самом первом запуске. Именно поэтому рекомендуется сделать резервную копию данных, которые удалять не следует. Как это сделать? Существуют следующие способы:
- подключить гаджет к компьютеру и скопировать с него все необходимые данные на жесткий диск или в облачное хранилище;
- все приложения, которые были куплены за деньги, будут сохранены и их вновь можно будет установить после перезагрузки;
- при сбросе настроек контакты затронуты не будут, но для того, чтобы минимизировать риск, лучше сделать их экспорт в отдельный файл.
Как делать сброс?
Данный шаг осуществляется через настройки устройства. Там можно найти пункт, отвечающий за резервное копирование и сброс. Нужно выбрать там сброс до первоначальных настроек и подтвердить свое решение. Процесс может длиться очень долго – от 20 минут.
В том случае, если в безопасном режиме сбросить устройство не удается, нужно воспользоваться режимом восстановления. Для этого необходимо зажать кнопку питания и выключить девайс. Затем, в зависимости от модели устройства, нужно зажать комбинацию кнопок, которую можно посмотреть в инструкции или в интернете. Запустится режим восстановления. При помощи кнопок регулировки громкости нужно выбрать опцию сброса устройства и нажать на кнопку питания для подтверждения. Осталось дождаться процесса сброса, который займет несколько минут.
После того, как настройки будут сброшены, устройство можно настроить, создав новую учетную запись или войдя в уже существующую. Во втором случае будет вновь получен доступ к купленному контенту.
Что такое мета ключ bash?
В Bash ключ мета первоначально был определен как это ( lib/readline/ChangeLog
):
Mon Jul 13 11:34:07 1992 Brian Fox (bfox@cubit)
* readline.c: (rl_variable_bind) New variable "meta-flag" if "on"
means force the use of the 8th bit as Meta bit. Internal variable
is called meta_flag.
Это происходит так, как это интерпретируется с помощью ncurses и xterm . Через несколько терминалов , предусмотренных для создания этой функции факультативного (этот аспект не были широко распространен Большинство терминалов вы будете сталкиваться использовать жёстко поведение (и не очень интересно) В.. Terminfo руководств документов эти возможностей терминала:
has_meta_key km km Has a meta key
(i.e., sets 8th-bit)
meta_off rmm mo turn off meta mode
meta_on smm mm turn on meta mode
(8th-bit on)
и объясняет функцию:
Если терминал имеет «мета-ключ», который действует как клавиша Shift, устанавливая 8-й бит любого передаваемого символа, этот факт можно указать с помощью
km
. В противном случае программное обеспечение будет предполагать, что 8-й бит равен четности, и обычно он очищается. Если существуют строки для включения и выключения этого «мета-режима», они могут быть заданы какsmm
иrmm
.
В Alt
некоторые эмуляторы терминала была добавлена другая функция — префикс escape-символа в ответ на ключ. Bash (фактически readline
библиотека) документирует это использование в журнале изменений за 2004 год:
lib/readline/callback.c
- use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
simulate the recursion used to decode multicharacter key sequences
(even things like ESC- as meta-prefix
Мета является частным случаем клавиши- модификатора . Как controlи shift, вы нажимаете ее одновременно с другой клавишей и ожидаете увидеть что-то отличное от нажатия самой клавиши. X обеспечивает ключи модификаторов, назначая бит в значении модификатора, передаваемом в событии X для ключа. Нажатие клавиш может быть несколькими событиями X; X предоставляет функции для объединения этих событий с сохранением модификаторов.
X также определяет символы для каждой из клавиш, которые могут появиться на вашей клавиатуре. Он обеспечивает другие значения (например, Unicode) с помощью специальной обработки в функциях, которые объединяют события.
Но «мета» — это особый случай.
У приложений X нет metaключа, кроме как по соглашению. У X нет определения мета-ключа или модификатора мета. Обычно терминалы ищут Altключ и / или один из известных модификаторов xmodmap
, например mod2
. Более поздняя функция xkb усложняет ситуацию (но не обеспечивает улучшения по сравнению с этим обсуждением), предоставляя другой уровень информации для поиска Altключа.
Соглашение, конечно, может привести вас только к этому, учитывая, что вы не знаете и ничего xmodmap
не xkb
знаете о мета . Например, xterm настраивается, и не все пользователи хотят настраивать мета одинаково. Например, Altможет не быть намеченный мета-ключ, например, если он используется в translation
ресурсе. Другим ключом может быть мета-ключ, но пользователи (особенно те, которые используют escape-последовательности в bash) могут захотеть, чтобы после их нажатия был отправлен escape-символ Alt. Но имейте в виду, что, если он не настроен как модификатор, ничего этого не происходит: xterm не объединяет события самостоятельно.
У xterm есть несколько настроек ресурса (задокументировано на странице руководства ):
altIsNotMeta
иaltSendsEscape
(добавлено в 2007 году ).eightBitInput
с 2006 года соответствует первоначальному смыслу мета-режима, и для этого определена escape-последовательность, которая обеспечивает возможности терминала (smm
иrmm
/ или мета-режим).eightBitInput
был изменен в 2003 году для учета UTF-8 путем смещения декодированных значений Unicode на 128, а не необработанных входных байтов.metaSendsEscape
датируется 1999 годомeightBitInput
намного старше чемmetaSendsEscape
. В нем реализован выбор между мета- режимом (добавление восьмого бита) или префиксом ключа с escapeX11R4 (1989). Но функция была определена при запуске: она была проверена во время инициализации, чтобы определить, был ли установлен вход для разрешения 8 бит или только 7. После этого он не изменился.
Некоторые люди приравнивают два ( 8-битный и escape-префикс), ссылаясь на последний как мета- режим. В зависимости от вашей точки зрения по этому вопросу eightBitInput
настройка ресурса xterm является частью решения для получения работоспособного мета-ключа.
Дальнейшее чтение:
Что делает ?
Обновление за октябрь 2015 года
Этот ответ был опубликован несколько лет назад, и теперь вопрос действительно должен заключаться в том, стоит ли вам вообще использовать тег X-UA-Compatible
на своем сайте? с изменениями, внесенными Microsoft в свои браузеры (подробнее о них ниже).
В зависимости от того, какие браузеры Microsoft вы поддерживаете, вам может не потребоваться продолжать использовать тег X-UA-Compatible
. Если вам нужно поддерживать IE9 или IE8, я бы рекомендовал использовать тег. Если вы поддерживаете только последние версии браузеров (IE11 и/или Edge), я бы подумал о том, чтобы вообще отказаться от этого тега. Если вы используете Twitter Bootstrap и вам необходимо устранить предупреждения о проверке, этот тег должен отображаться в указанном порядке. Дополнительная информация ниже:
Метатег X-UA-Compatible
позволяет веб-авторам выбирать, в какой версии Internet Explorer должна отображаться страница. IE11 внес изменения в эти режимы; см. Примечание IE11 ниже. Microsoft Edge , браузер, заменивший IE11, соблюдает мета-тег X-UA-Compatible
только при определенных обстоятельствах. См.Примечание Microsoft Edge ниже.
Согласно Microsoft, при использовании тега X-UA-Compatible
он должен быть как можно выше в вашем документе head
:
Если вы используете тег X-UA-Compatible META, вы хотите разместить его как можно ближе к верхней части страницы HEAD. Internet Explorer начинает интерпретировать markup с использованием последней версии. Когда Internet Explorer встречает тег X-UA-Compatible META, он запускается заново, используя движок указанной версии. Это удар по производительности, потому что браузер должен остановить и перезапустить анализ содержимого.
Вот ваши варианты:
- «IE=edge»
- «IE=11»
- «IE=EmulateIE11»
- «IE=10»
- «IE=EmulateIE10»
- «IE=9»
- «IE=EmulateIE9
- «IE=8»
- «IE=EmulateIE8»
- «IE=7»
- «IE=EmulateIE7»
- «IE=5»
Чтобы попытаться понять, что означает каждый из них, вот определения, предоставленные корпорацией Майкрософт:
Internet Explorer поддерживает ряд режимов совместимости документов, которые включают различные функции и могут влиять на способ отображения содержимого:
Пограничный режим указывает Internet Explorer отображать содержимое в самом высоком доступном режиме. С Internet Explorer 9 это эквивалентно режиму IE9. Если будущая версия Internet Explorer поддерживает более высокий режим совместимости, страницы, настроенные в пограничный режим, будут отображаться в самом высоком режиме, поддерживаемом этой версией. Те же самые страницы по-прежнему будут отображаться в режиме IE9 при просмотре с помощью Internet Explorer 9. Internet Explorer поддерживает ряд режимов совместимости документов, которые включают различные функции и могут влиять на способ отображения содержимого:
Режим IE11 обеспечивает самую высокую поддержку, доступную для установленных и новых отраслевых стандартов, включая HTML5, CSS3 и другие.
Режим IE10 обеспечивает самую высокую поддержку, доступную для установленных и новых отраслевых стандартов, включая HTML5, CSS3 и другие.
Режим IE9 обеспечивает самую высокую поддержку, доступную для установленных и новых отраслевых стандартов, включая спецификацию HTML5 (Рабочий проект), Спецификацию W3C каскадных таблиц стилей уровня 3 (Рабочий проект), Масштабируемую векторную графику (SVG) 1.0 и другие. [Примечание редактора: IE 9 не поддерживает анимацию CSS3].
Режим IE8 поддерживает многие установленные стандарты, включая спецификацию W3C Каскадных таблиц стилей уровня 2.1 и W3C Selectors API; он также обеспечивает ограниченную поддержку спецификации W3C Каскадных таблиц стилей уровня 3 (рабочий проект) и других новых стандартов.
Режим IE7 отображает содержимое так, как если бы оно отображалось в стандартном режиме Internet Explorer 7, независимо от того, содержит ли страница директиву.
Режим эмуляции IE9 указывает Internet Explorer использовать директиву для определения способа отображения содержимого. Директивы режима стандартов отображаются в режиме IE9, а директивы режима причуд отображаются в режиме IE5. В отличие от режима IE9, режим эмуляции IE9 соблюдает директиву.
Режим эмуляции IE8 указывает Internet Explorer использовать директиву для определения способа отображения содержимого. Директивы режима стандартов отображаются в режиме IE8, а директивы режима причуд отображаются в режиме IE5. В отличие от режима IE8, режим эмуляции IE8 соблюдает директиву.
Режим эмуляции IE7 указывает Internet Explorer использовать директиву для определения способа отображения содержимого. Директивы режима стандартов отображаются в режиме стандартов Internet Explorer 7, а директивы режима причуд отображаются в режиме IE5. В отличие от режима IE7, режим эмуляции IE7 уважает директиву. Для многих веб-сайтов это предпочтительный режим совместимости.
Режим IE5 отображает содержимое так, как если бы оно отображалось в режиме quirks с помощью Internet Explorer 7, что очень похоже на то, как содержимое отображалось в Microsoft Internet Explorer 5.
IE10 NOTE: Начиная с IE10, режим quirks ведет себя иначе, чем в более ранних версиях браузера. В IE9 и более ранних версиях режим quirks ограничивал веб-страницу функциями, поддерживаемыми IE5.5. В IE10 режим причуд соответствует различиям, указанным в спецификации HTML5.
Лично я всегда выбираю мета-тег http-equiv="X-UA-Compatible" content="IE=edge"
, так как в старых версиях много ошибок, и я не хочу, чтобы IE решил перейти в «Compatibility mode» и показать свой сайт как IE7 против IE8 или 9. Я всегда предпочитаю последнюю версию IE.
IE11
От Microsoft :
Начиная с IE11, пограничный режим является предпочтительным режимом документа; он представляет собой самую высокую поддержку современных стандартов, доступных браузеру.
Используйте объявление типа документа HTML5, чтобы включить режим edge:
<!doctype html>
Пограничный режим был введен в Internet Explorer 8 и был доступен в каждом последующем выпуске. Обратите внимание, что функции, поддерживаемые пограничным режимом, ограничены функциями, поддерживаемыми конкретной версией браузера, отображающего содержимое.
Начиная с IE11, режимы документов устарели и больше не должны использоваться, кроме как на временной основе. Обязательно обновите сайты, которые используют устаревшие функции и режимы документов, чтобы отразить современные стандарты.
Если вам необходимо настроить определенный режим документа, чтобы ваш сайт функционировал во время его переработки для поддержки современных стандартов и функций, имейте в виду, что вы используете переходную функцию, которая может быть недоступна в будущих версиях.
Если вы в настоящее время используете заголовок x-ua-compatible для таргетинга на устаревший режим документа, возможно, ваш сайт не будет отражать наилучший опыт, доступный с IE11.
Microsoft Edge (замена для Internet Explorer, который поставляется в комплекте с Windows 10 )
Информация о метатеге X-UA-Compatible
для версии «Edge» IE. От Microsoft :
Введение режима “living” Edge document
Как мы объявили в августе 2013 года, мы отказываемся от режимов документов с IE11. С нашими последними обновлениями платформы потребность в устаревших режимах документов в основном ограничивается корпоративными устаревшими веб-приложениями. С новыми архитектурными изменениями эти устаревшие режимы документов будут изолированы от изменений в режиме “living” Edge, что поможет гарантировать гораздо более высокий уровень совместимости для клиентов, которые зависят от этих режимов, и поможет нам еще быстрее продвигаться по улучшениям в Edge. IE по-прежнему будет поддерживать режимы документов, обслуживаемые сайтами интрасети, сайтами в списке просмотра совместимости и при использовании только в режиме предприятия.
Общедоступные интернет-сайты будут отображаться с помощью новой платформы пограничного режима (игнорирование X-UA-Compatible). Наша цель состоит в том, чтобы с этого момента Edge стал режимом документа «living», и в дальнейшем никакие другие режимы документов вводиться не будут.
С изменениями в Microsoft Edge, которые в большинстве случаев больше не поддерживают режимы документов, у Microsoft есть инструмент для сканирования вашего сайта, чтобы проверить, есть ли на нем код, несовместимый с Edge.
Chrome=1 Информация для IE
Существует также chrome=1
, который вы можете использовать или использовать вместе с одним из вышеперечисленных вариантов, например: <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
. chrome=1
предназначен для рамки Google Chrome, которая определяется как:
Google Chrome Frame-это плагин для браузера с открытым исходным кодом. Пользователи, у которых установлен плагин, имеют доступ к открытым веб-технологиям Google Chrome и движку speedy JavaScript, когда они открывают страницы в браузере.
Рамка Google Chrome легко улучшает ваш опыт просмотра в Интернете Explorer. Он отображает сайты с поддержкой фреймов Google Chrome с использованием технологии рендеринга Google Chrome, предоставляя вам доступ к последним функциям HTML5, а также к функциям производительности и безопасности Google Chrome, никоим образом не прерывая ваше обычное использование браузера.
Когда Google Chrome Frame установлен, веб просто становится лучше, и вам не нужно об этом думать.
Но для того, чтобы этот плагин работал, вы должны использовать chrome=1
в метатеге X-UA-Compatible
.
Более подробную информацию о хромированной рамке можно найти здесь .
Примечание: Рамка Google Chrome работает только для IE6-IE9 и была удалена 25 февраля 2014 года. Более подробную информацию можно найти здесь . Спасибо @mck за ссылку.
Утверждение :
HTML5 :
Страница будет проверяться с помощью валидатора W3 только при использовании <meta http-equiv="X-UA-Compatible" content="IE=Edge">
. Для других значений он выдаст ошибку: A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge.
Другими словами, если у вас есть IE=edge,chrome=1
, он не будет проверяться. Я полностью игнорирую эту ошибку, так как современные браузеры просто игнорируют эту строку кода.
Если у вас должен быть полностью корректный код, подумайте о том, чтобы сделать это на уровне сервера, установив заголовок HTTP. В качестве примечания Microsoft говорит: If both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header).
См .Ответ olibre или ответ bitinn для получения более подробной информации о том, как установить заголовок HTTP.
XHTML
При использовании <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
нет проблем с проверкой, если тег правильно закрыт (т. Е. />
против >
).
Twitter Бутстрэп
Этот тег настоятельно рекомендуется командой начальной загрузки по крайней мере с 2014 года, и Bootlint , линтер, созданный командой twbs, продолжает выдавать предупреждение , когда тег опущен. Линтер различает предупреждения и ошибки, и поэтому серьезность пропуска этого тега может считаться незначительной.
Дополнительные сведения о X-UA-Compatible
см. на веб- сайте Microsoft, определяющем совместимость документов .
Для получения дополнительной информации о том, что поддерживает IE, см. caniuse.com .
Дополнительные сведения о требованиях к начальной загрузке Twitter см. на странице проекта wiki начальной загрузки .
теги — это… Что такое Мета-теги?
Мета-теги (англ. meta-tags) — HTML- или XHTML-теги, предназначенные для предоставления структурированных метаданных о веб-странице. Мета-теги помещаются внутрь тега head
в (X)HTML-документе, как правило, после тега TITLE. Мета-теги используются для указания описания. У тега meta
допустимы четыре атрибута: content, http-equiv, name и scheme. Из них обязателен только лишь атрибут content.
Пример использования элемента
meta
Один из вариантов применения тега meta
— указание HTTP-заголовков, которые должны быть отправлены клиенту до отправки самой веб-страницы. Например:
<meta http-equiv="Content-Type" content="text/html" />
Такая запись указывает, что страница должна быть отправлена вместе с HTTP-заголовком Content-Type: text/html. Такой заголовок указывает браузеру или другой программе тип отправляемого документа. Тем не менее, несмотря на то, что первоначально предполагалось, что веб-серверы будут считывать meta-теги внутри отправляемых клиенту веб-страниц, и формировать HTTP-заголовки в зависимости от их содержимого, на практике это не реализовано в наиболее используемых веб-серверах, соответственно, веб-серверы не меняют отправляемые клиенту HTTP-заголовки, а клиент (веб-браузер) обрабатывает эти meta-теги самостоятельно[1] (в частности, данные из meta-тегов могут заменять данные, получаемые из HTTP-заголовков[2]).
Кроме того, meta-теги могут использоваться для того, чтобы сообщить браузеру информацию о документе, когда HTTP-заголовки недоступны (например, если страница открывается локально с диска, а не загружается с веб-сервера).
В общей форме метаданные записываются в следующем виде: в теге meta
указывается атрибут name
(имя) и связанный с ним атрибут content
(содержимое), в котором описывается какой-либо аспект веб-страницы, например, ключевые слова:
<meta name="keywords" content="википедия, энциклопедия" />
Функции мета-тегов
Функции мета-тегов достаточно разнообразны, однако на данный момент не существует их четкой стандартизации. Тем не менее, можно выделить несколько основных направлений использования мета-тегов:
- Мета-теги способны идентифицировать авторство Интернет-страницы, ее адрес, частоту ее обновлений;
- Мета-теги используются поисковыми системами для индексации и создания заголовков гипертекстовых документов;
- Не выводясь на экран, мета-теги влияют на режим отображения Интернет-страниц.
Группы мета-тегов
Мета-теги разделены на две основные группы — NAME и HTTP-EQUIV. Группа NAME отвечает за текстовую информацию о странице, ее авторе, а также — рекомендации для поисковых систем. HTTP-EQUIV фактически эквивалентны гипертекстовым заголовкам, формируют заголовок страницы и определяют его обработку. Как правило, они управляют действиями браузеров и используются для формирования информации, выдаваемой обычными заголовками.
Группа NAME
Мета-тег Author и Copyright
Эти теги, как правило, не используются одновременно. Функция тегов — идентификация автора или принадлежности документа. Тег Author содержит имя автора Интернет-страницы, в том случае, если сайт принадлежит какой-либо организации, целесообразнее использовать тег Copyright. Выглядит данный тег следующим образом:
<meta name="author" content="Велимирка Лисичкина" />
Кроме этого, теги Author и Copyright могут содержать дополнительный атрибут «lang», позволяющий определить язык, использующийся при указании значения свойства
<meta name="copyright" lang="ru" content="ПБОЮЛ Велимира Лисичкина" />
Мета тег Description
Данный тег используется при создании краткого описания страницы, используется поисковыми системами для индексации, а также при создании аннотации в выдаче по запросу. При отсутствии тега поисковые системы выдают в аннотации первую строку документа или отрывок, содержащий ключевые слова. Отображается после ссылки при поиске страниц в поисковике.
<meta name="description" content="Мета-теги в Википедии" />
Мета тег Document-state
Мета-тег Document-state также имеет значение при индексации страницы в поисковых системах. Тег обладает двумя значениями — Static и Dynamic. Значение «Static» отмечает, что системе нет необходимости индексировать документ в дальнейшем, «Dynamic» позволяет регулярно индексировать Интернет-страницу.
<meta name="document-state" content="Dynamic" />
Мета-тег Generator
Данный мета-тег в первую очередь использовался разработчиками программ для редактирования веб-страниц с целью саморекламы — в качестве значения тега разработчики таких программ, как правило, указывали название своего продукта.
<meta name="generator" content="Macromedia Dreamviewer 4.0">
В настоящее время практически не используется.
Мета-тег Keywords
Данный мета-тег поисковые системы используют для того, чтобы определить релевантность ссылки. При формировании данного тега необходимо использовать только те слова, которые содержатся в самом документе. Использование тех слов, которых нет на странице, не рекомендуется. Рекомендованное количество слов в данном теге — не более десяти. Кроме того, выявлено, что разбивка этого тега на несколько строк влияет на оценку ссылки поисковыми машинами.
<meta name="keywords" content="Википедия, мета-тег, статья" />
Мета-тeг Resource-type
Тег Resource-type описывает свойство или состояние страницы. Если значения тега отличается от «Document», то поисковые системы его не индексируют. Мета-тег предназначен для масштабирования document (используется по умолчанию), rating, version, operator, formatter, creation и другие.
<meta name="resource-type" content="document" />
Мета-тeг Revisit
Тег позволяет управлять частотой индексации документа в поисковой системе. Для переиндексации сайта раз в две недели используется тег следующего вида:
<meta name="revisit" content="14" />
Поисковые системы Яндекс и Google игнорируют содержимое этого мета-тега [3].
Мeтa-тeг Robots
Тег формирует информацию о гипертекстовых документах, которая поступает к роботам поисковых систем. Значения тега могут быть следующими: Index (страница должна быть проиндексирована), Noindex (документ не индексируется), Follow (гиперссылки на странице отслеживаются), Nofollow (гиперссылки не прослеживаются), All (включает значения index и follow, включен по умолчанию), None (включает значения noindex и nofollow).
Пример 1. Разрешить индексирование страницы и использование размещённых на ней ссылок для последующей индексации.
<meta name="robots" content="index,follow">
или равноценный аналог
<meta name="robots" content="all">
Пример 2. Запретить индексирование страницы, разрешить использование размещённых на ней ссылок для последующей индексации.
<meta name="robots" content="noindex,follow">
Пример 3. Разрешить индексирование страницы, запретить использование размещённых на ней ссылок для последующей индексации.
<meta name="robots" content="index,nofollow">
Пример 4. Запретить индексирование страницы и использование размещённых на ней ссылок для последующей индексации.
<meta name="robots" content="noindex,nofollow">
или равноценный аналог
<meta name="robots" content="none">
Мeтa-тeг Subject
Определяет тематику документа. Практически бесполезен из-за отсутствия четкой и согласованной классификации тем в различных поисковых системах.
Мeтa-тeг url
Тег прекращает индексацию страницы поисковой системой, и перенаправляет робота поисковой машины по указанной ссылке. Тег применяется для отмены индексации «зеркала» и генерируемых страниц.
<meta name="url" content="http://ru.wikipedia.org/" />
Группа HTTP-EQUIV
Мeтa-тeг Content-Language
Тег позволяет указать язык, на котором создан документ. Пример:
<meta http-equiv="content-language" content="ru" />
Мeтa-тeг Content-Script-Type
Определяет язык программирования сценариев. Если тег не прописан, следует указать язык программирования в каждом теге <script>. Тег <script> обладает более высоким приоритетом по сравнению с Content-Script-Type.
Мeтa тeг Content-Style-Type
Указания языка таблицы стилей, по умолчанию значение — «text/css».
Пример:
<meta http-equiv="Content-Style-Type" content="text/css">
Мeтa-тeг Content-Type
Определяет тип документа и его кодировку.
Пример:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
Мeтa-тeг Expires
Мета теги Expires — управляет кэшированием. Если указанная в теге дата прошла, то браузер должен сделать повторный сетевой запрос, а не использовать копию из кэша. Если изначально указать прошедшую дату, то документ не будет кэшироваться. Некоторые поисковые роботы могут отказаться индексировать документ с устаревшей датой. Дата должна указываться в стандарте [RFC850].
Пример:
<meta http-equiv="Expires" content="Wed, 26 Feb 1999 08:21:57 GMT">
[4]
Мeтa-тeг PICS-Label
PICS — (от англ. Platform-Independent Content rating Scheme Label) — указывает уровень доступности сайта (в связи с возможными тематиками sex и violence), однако используется и в других целях.
Мeтa-тeг Pragma
Контроль кэширования при страницах, получаемых путем работы заданного скрипта.
<meta http-equiv="Pragma" content="no-cache">
Мeтa-тeг Refresh
Задержка времени (в секундах) перед тем, как браузер обновит страницу. Кроме того, может использоваться автоматическая загрузка другой страницы.
<meta http-equiv="refresh" content="5; url=http://www.example.com/" />
После «url=» кавычек быть не должно!
Мeтa-тeг Set-Cookie
Настройка cookie браузера
Мeтa-тeг Window-target
Определение окна загружаемой страницы.
Мета-тег Imagetoolbar
Отключает Панели управления изображениями. Обычно используют при выводе баннеров, фона картинки, карты изображения и др., когда вывод данной панели нежелателен.
<meta http-equiv="imagetoolbar" content="no" />
Значение мета-тегов
Метаданные о веб-странице изначально предназначались в том числе для того, чтобы помочь поисковым машинам отнести веб-страницу к той или иной категории. В 90-е годы мета-теги активно использовались в целях раскрутки своего сайта, в том числе предоставляя ложные или избыточные метаданные. После этого поисковые машины стали придавать мало внимания метаданным; теперь большее значение имеет правильное структурирование веб-страницы и наличие большого количества ссылок на сайт с авторитетных ресурсов.
В связи с тем, что мета-теги несут чисто служебную функцию, и, кроме того, значительно увеличивают размер гипертекстового документа, начинающие Web-дизайнеры зачастую предпочитают их игнорировать. Кроме того, мета-теги группы HTTP-EQUIV достаточно сложны в использовании, так как задают жесткие параметры форматирования страницы. Тем не менее, мета-теги делают более успешной индексацию Интернет-страницы в поисковых системах.
См. также
Примечания
Вольный мета-отчет Сплоченные Штормградом Hearthstone
Релиз дополнения Сплоченные Штормградом не был перенесен, несмотря на разразившийся скандал вокруг Blizzard, однако Blizzard получила даже больше негатива после релиза нового дополнения. Кажется, геймдизайнеры вновь оплошали с балансом. И это заметно не только в Вольном — в Стандарте ситуация даже хуже (Жрец имел 36% винрейт, и лишь с большими усилиями смог вскарабкаться до 40%). Весь кошмар, происходящий в ладдере, нельзя объяснить какой-то разницей в опыте игроков и т.д. Однако, несмотря на то, что мета опустилась до такого жуткого состояния, игрокам не остается ничего, кроме как продолжать играть в ожидании правок баланса.
Пэйн Чернокнижник стал неким лимитом для геймдизайнеров в перспективе создания сверхагрессивных колод. Цикл формата “сильная агро-колода — Пэйн Чернокнижник — более сильная агро колода” происходил уже несколько раз. В Сплоченных Штормградом разработчики дали Пэйн Чернокнижнику все инструменты для исправления слабых мест и превратили его в колоду, определяющую мету вокруг.
Ранее Пэйн Чернокнижник мог очень быстро развивать стол, но все равно мог проиграть медленным колодам с большим количеством ремувалов и защитных инструментов вроде Рено Жреца, Нечетного Воина и Куболока. Далее Пэйн Чернокнижник часто проигрывал самым быстрым агро-колодам. Этот архетип полагался на Мясных великанов в конце игры, и зачастую их выход на стол совпадал с низшей отметкой здоровья у героя, что давало возможность Агро-колодам шанс на завершение игры в свою пользу. В-третьих, Пэйн Чернокнижник не мог процветать в мете быстрых колод, но сами эти быстрые колоды редко жили дольше месяца. Таким образом, Чернокнижнику нужно было решить только 2 первых проблемы, чтобы стать королем Вольной меты.
С появлением в игре Демонова семени и Касания натрезима слабости Пэйн Чернокнижника были стерты. Ни одна медленная колода не может выдержать давление, оказываемое Чернокнижником после выполнения квеста. Попытка отменить эффект Тамсин Чуморожденной означает смерть от рук Мясных великанов, а попытка избавиться от Мясных великанов означает медленную смерть от эффекта Тамсин. Проблема с низким здоровьем Чернокнижника была решена его квестлайном, который не только лечит героя на 6 единиц по ходу прогресса, но и дважды снижает стоимость великанов, что позволяет Чернокнижнику оставаться на безопасных отметках по здоровью при их розыгрыше, а затем восстанавливать здоровье с помощью Касания натрезима, что позволяет уничтожать агрессивные колоды. В общем, у Пэйн Чернокнижника больше нет слабостей. Мета в дальнейшем будет вынуждена выстраиваться вокруг этого архетипа, ведь он становится все более популярным в Вольном формате. Сейчас он достиг шокирующих 57% винрейта при популярности в 30%.
Нельзя сказать, что на этом мета остановится. Пэйн Чернокнижник бессмертен лишь на бумаге, но у него есть небольшие слабости, которые можно использовать в игре. Паладин с заставами и ОТК Маг способны с ним справляться. Однако в то же время Пэйн Чернокнижник уже подбирает технические карты для этих матч-апов. Проклятие Рафаама позволяет ограничивать ОТК Мага, а против Паладина с заставами достаточно класть в колоду Огненного беса, чтобы иметь больше контроля стола в ранней игре (также можно использовать и Веселого вурдалака). 2 копии Взрывного духа могут помогают отвечать на Властелина паутины. Пока непонятно, кто останется в выигрыше в таких противостояниях. Другие же колоды, существующие только в условиях неустоявшейся меты (Нечетный Квест Охотник и Пират Воин), также вряд ли долго проживут в мете, и, скорее всего, исчезнут, как только процесс оптимизации Пэйн Чернокнижника завершится. Шаман мог бы догнать Пэйн Чернокнижника, но он полагается исключительно на Дух Жабы. Чаще всего он проигрывает Пэйн Чернокнижнику, способному выставить великанов, имея 20+ здоровья на 3-4 ходу.
Но, как говорится, время покажет.
Тир-листЛучшие колоды Вольного РежимаПэйн ЧернокнижникВлияние, оказанное архетипом на мету, и его возможные пути эволюции были описаны выше. Однако проблемы оптимизации колоды тоже важны. Большинство сборок первого дня использовали Подпольного аптекая в качестве финишера, но игроки быстро поняли, что эта карта переоценена. Не имея сильных противников, Пэйн Чернокнижнику пришлось перестраивать сборку так, чтобы максимизировать свое преимущество в зеркальных матч-апах. Сборка с двумя великанами проигрывает чистому Пэйн Чернокнижнику. Эксперименты показали, что сборка с 4 великанами — следующая ступень эволюции. Зеркальные матч-апы сводятся к тому, у кого больше великанов в колоде. Тамсин Чуморожденная может быть проактивно сыграна только тогда, когда в вашей колоде больше великанов и лучше стол. 4 великана также важны в качестве финишеров вне зеркальных матч-апов. Несмотря на то, что выполнение этапов квестлайна замедлит выход Огненных великанов, в то же время Чернокнижник будет менее уязвим перед агро-колодами. Огненный бес может использоваться без сожалений о здоровье героя. Даже пропуск ранних ходов без опасений опуститься до критической отметки по здоровью стал возможен. Чем больше маны и больше карт у Чернокнижника, тем гибче становятся Огненные великаны. В общем, сколько колод, столько и мнений. Переполняющая мощь дает больше взрывного урона, а Веселый вурдалак дает больше контроля стола, пока Чернокнижник выполняет свой квестлайн.
Квест Пэйн Чернокнижник с 2 великанами
Квест Пэйн Чернокнижник с 4 великанами
Квест Пэйн Чернокнижник с Веселым вурдалаком
Агро Паладин на заставахЭто вторая по силе колода после Пэйн Чернокнижника. Дальняя застава позволяет мешать ОТК Колодам, а Властелин Паутины мешает Пэйн Чернокнижникам, в то время как секреты защищают существ от ремувалов. В отличие от Пэйн Чернокнижника, у Паладина есть явные слабые стороны, и он часто проигрывает сильным колодам прошлой меты, так что его играбельность растет лишь в тех закоулках меты, где игроки могут встретить больше Чернокнижников.
Агро Паладин на заставах
ОТК МагЭтот архетип делится на 3 типа — Экзодия, Воспламенение и Мозаки. Сборка с Воспламенением — сильнейшая на данный момент. Экзодия Маг превратился в Мага с Воспламенением, но из-за долгих анимаций использует Связующую спираль, чтобы закрыть эту слабость. Тем не менее, Пэйн Чернокнижник стал быстрее и теперь использует Проклятье Рафаама, что часто мешает ОТК Магу выполнять свою задачу.
ОТК Маг с Воспламенением
ОТК Маг с Мозаки
Шаман на перегрузкеЭтот архетип все еще опирается на Дух Жабы, чтобы искать ресурсы и источники урона. Эта колода далеко не всегда побеждает Пэйн Чернокнижника, особенно если тот успевает выставить великанов в срок, оставляя Шамана на перегрузке без ресурсов для следующих ходов. Приходится грамотно распоряжаться картами и взвешивать все плюсы и минусы при игрой этой колодой.
Шаман на перегрузке
Нечетный ОхотникКажется, что идти в лицо — хорошая идея (особенно когда это работает против Рено Жрецов), но скорость мало влияет на исход матч-апа с Пэйн Чернокнижниками. Как только он выставляет Мясных великанов, Нечетному Охотнику приходится покинуть игру.
Квест Нечетный Охотник
Пират ВоинОн не может побеждать Пэйн Чернокнижников, но все равно имеет высокий процент побед. Тем не менее, слабость Воина в этом конкретном матч-апе настолько сильна, что процент побед становится аж 10 на 90 в пользу Чернокнижника. Да, он может побеждать другие колоды, но ни один матч-ап не является полностью положительным, а урон от Пэйн Чернокнижника слишком высок, чтобы играть в плюс на долгой дистанции. В будущем процент побед Пират Воина упадет.
Квест Пират Воин
Удачи!
Что такое мета-режим на вкладке Lenovo? — AnswersToAll
Что такое мета-режим на вкладке Lenovo?
Сначала нажмите кнопку питания на несколько секунд, чтобы выключить планшет. После этого вы должны удерживать две клавиши: клавиши увеличения громкости и питания вместе в течение нескольких секунд. Отпустите все кнопки, если увидите надпись в нижнем левом углу экрана. Успех!
Как отключить метамод на Motorola M?
Итак, следуйте инструкциям по режиму восстановления:
- Чтобы выключить MOTOROLA Moto M XT1663, нажмите и удерживайте кнопку питания на короткое время.
- После этого нажмите и удерживайте кнопку уменьшения громкости около 2-3 секунд.
- Удерживая эту кнопку нажатой, нажмите и отпустите кнопку питания.
Как перевести планшет Lenovo в режим восстановления?
Итак, следуйте инструкциям по режиму восстановления:
- Сначала выключите устройство.
- Затем нажмите и удерживайте кнопку уменьшения громкости + увеличения громкости + питания в течение нескольких секунд.
- Отпустите удерживаемые клавиши, когда увидите Android-робота.
- Чтобы войти в режим восстановления, ненадолго нажмите и удерживайте кнопку питания.
- Молодец!
Что такое режим FFBM?
ВAndroid есть встроенная функция защиты от сбоев. Если ваш телефон перешел в режим восстановления по вашим командам (обычно удерживая кнопку питания + клавишу громкости), значит, он ждет команды. Удерживая кнопку питания в течение 10–12 секунд, телефон должен выключиться без каких-либо повреждений.
Почему мой планшет Lenovo продолжает зависать?
Приложения не обновляются. Возможно, экран зависает из-за устаревшего программного обеспечения или приложений.Убедитесь, что на устройстве установлены последние обновления системы и приложения. Чтобы проверить наличие обновлений системы, сначала откройте меню настроек устройства.
Как мне предотвратить зависание планшета?
Самый простой ответ на вопрос, что делать, если мой планшет завис, — нажать и удерживать кнопку «выключить», пока устройство не выключится, чтобы его можно было снова включить и использовать в обычном режиме. В случае, если эта опция не решает ситуацию с зависшим планшетом, вы должны использовать кнопку «сбросить»….
Как мне предотвратить зависание ноутбука Lenovo?
Если Ctrl + Alt + Delete не работает, значит, ваш компьютер действительно заблокирован, и единственный способ заставить его снова двигаться — это полная перезагрузка. Нажмите и удерживайте кнопку питания, пока компьютер не выключится, затем снова нажмите кнопку питания, чтобы загрузиться с нуля.
Как разблокировать планшет Lenovo, если я забыл пароль?
Lenovo Tab M8 (HD) Восстановление заводских настроек
- Включите мобильный телефон Lenovo.
- Перейдите в меню настроек.
- Затем найдите и выберите параметр «Резервное копирование и сброс».
- После этого выберите опцию Factory Data Reset.
- После этого выберите опцию «Сбросить телефон» или «Сбросить устройство».
- Затем выберите опцию «Стереть все».
- Сброс на вашем Lenovo Mobile.
Как разблокировать телефон Lenovo без сброса пароля?
Выключите Lenovo Mobile, удерживая кнопку питания. Удерживайте нажатыми кнопки увеличения громкости + питания [уменьшение громкости + кнопка питания].Затем выберите вариант восстановления, используя для навигации по кнопкам громкости и для подтверждения кнопки питания. Затем вы увидите восклицательный знак Android.
Как разблокировать телефон без пароля?
безопасно обходит пароль экрана блокировки Android, отпечаток пальца, PIN-код или графический ключ без потери данных … Теперь давайте посмотрим, как разблокировать телефон Android без пароля, выполнив следующие действия.
- Подключите телефон Android к компьютеру.
- Выберите режим удаления экрана блокировки.
- Нажмите кнопку «Разблокировать».
- Удаление экрана блокировки выполнено.
Как разблокировать телефон без пароля без потери данных?
В интерфейсе диспетчера устройств Android выберите устройство, которое вы хотите разблокировать> Нажмите кнопку «Заблокировать»> введите временный пароль (вводить сообщение для восстановления не нужно)> снова нажмите кнопку «Заблокировать». Шаг 3. Если процесс прошел успешно, вы увидите окно подтверждения с кнопками: Звонить, Заблокировать и Стереть….
Как разблокировать телефон Android без изменения PIN-кода?
Для телефона Android без кнопки «Домой» выполните следующие действия:
- Выключите телефон Android, когда вас попросят ввести пароль экрана блокировки, затем нажмите и удерживайте кнопки уменьшения громкости + питания для принудительного перезапуска.
- Теперь, когда экран становится черным, некоторое время нажмите и удерживайте Volume Up + Bixby + Power.
Как обойти экран блокировки на моем Samsung без потери данных?
способа 1.Обход шаблона экрана блокировки Samsung, PIN-кода, пароля и отпечатка пальца без потери данных
- Подключите телефон Samsung. Установите и запустите программное обеспечение на свой компьютер и выберите «Разблокировать» среди всех наборов инструментов.
- Выберите модель мобильного телефона.
- Войдите в режим загрузки.
- Скачать пакет восстановления.
- Удалить экран блокировки Samsung.
Как разблокировать Samsung Galaxy s20 без сброса пароля?
Метод — 1
- Выключите мобильный телефон Samsung.
- Кнопка питания + Home + кнопка увеличения громкости.
- Когда вы увидите логотип, отпустите все кнопки.
- Далее вы увидите восклицательный знак Android.
- Удерживая кнопку питания, нажмите и отпустите кнопку увеличения громкости.
Как разблокировать экран S20?
Какие методы блокировки я могу использовать на своем устройстве Samsung Galaxy?
- Метод разблокировки смахиванием позволяет разблокировать устройство с помощью смахивания по экрану.
- 1 Нажмите «Провести».
- 2 Когда телефон заблокирован, коснитесь экрана либо нажмите кнопку питания или боковую клавишу.
- 3 Проведите по экрану в любом направлении, чтобы разблокировать устройство.
Как разблокировать телефон Samsung, если я забыл пароль, не сбрасывая его?
Чтобы найти эту функцию, сначала введите неправильный графический ключ или PIN-код пять раз на экране блокировки. Вы увидите кнопку «Я забыл шаблон», «забыл PIN-код» или «забыл пароль». Коснитесь его. Вам будет предложено ввести имя пользователя и пароль учетной записи Google, связанной с вашим устройством Android….
Как перевести мой A20 в режим восстановления?
Режим восстановления SAMSUNG Galaxy A20
- Сначала нажмите кнопку питания на несколько секунд и дважды коснитесь «Перезагрузка».
- Затем нажмите и удерживайте кнопку увеличения громкости + питания на короткое время.
- Отпустите все кнопки, когда появится режим восстановления.
- Отлично! Режим восстановления будет на экране.
- Используйте кнопки громкости для навигации и кнопку питания, чтобы подтвердить это.
Как войти в режим восстановления?
Нажмите и удерживайте кнопку питания, а затем один раз нажмите кнопку увеличения громкости, удерживая кнопку питания нажатой.Вы должны увидеть всплывающие варианты восстановления системы Android в верхней части экрана. Используйте клавиши громкости, чтобы выделить параметры, и клавишу питания, чтобы выбрать тот, который вам нужен….
Как выполнить полную перезагрузку A20S?
Выключите SAMSUNG GALAXY A20S. Одновременно нажмите и удерживайте: кнопку питания + увеличение громкости, пока не появится логотип, затем отпустите все кнопки. Подождите, пока мы не увидим меню на ЖК-экране, выберите «Wipe Data / Factory Reset with Volume Button» для выбора и используйте кнопку «Power» для подтверждения или входа.
Как сделать мягкий сброс A20?
Мягкий сброс с аппаратными клавишами
- Нажмите и удерживайте кнопку питания и уменьшения громкости до 45 секунд.
- Подождите, пока устройство перезагрузится.
Как отключить Samsung A20?
Нажмите и удерживайте кнопку ПИТАНИЕ, пока SAMSUNG GALAXY A20 (SM-A205F) не выключится или не выключится сам. Вы также можете попробовать нажать и удерживать кнопку ПИТАНИЕ + УМЕНЬШЕНИЕ ГРОМКОСТИ, чтобы выключить его. После того, как он полностью выключится, мы можем снова нажать кнопку POWER, чтобы включить его.
Как сбросить телефон 20?
Первый способ:
- Сначала удерживайте кнопку питания в течение нескольких секунд и дважды коснитесь значка «Перезагрузка».
- Если появляется логотип SAMSUNG, нажмите и удерживайте кнопки увеличения громкости и питания в течение нескольких секунд.
- Когда появится режим восстановления, отпустите все кнопки.
- Теперь выберите «стереть данные / восстановить заводские настройки».
- После этого выберите «Да» и нажмите кнопку питания.
Как форматировать OPPO MTK в мета-режиме (eMMC и UFS)?
В мета-режиме вам необходимо выполнить 3 шага
a) Перевести устройство на зеленый экран (шаги с 1 по 12 ниже)
b) Чтение системной информации (шаги с 13 по 18)
c) Устройство форматирования (шаг 19 к 24)
1.Запустите программу Hydra MTK.
2. Выберите «Авто» Марка и модуль (мобильный / мобильный)
3. Выберите платформу как «SOCs»
4. «Автозагрузчик» должен быть «Галочка» на
5. Выберите вкладку «Сервис»
6. Убедитесь, что вы находитесь в режиме «Прочитать информацию о системе» в Universal Operation.
7. Выберите раскрывающийся список «Мета-режим / метод предварительной загрузки VCC» в меню «Перезагрузка»
8. Отметьте «Одна загрузка» рядом со значком * (значок звездочки)
9. Отметьте «Автоматическая перезагрузка» рядом с « ВЫПОЛНЕНИЕ «.
10. Щелкните значок * (звездочка), чтобы запустить Windows «Администратор прав доступа к Windows»
11. Вставьте USB-кабель в устройство (мобильный / мобильный).
12. Подождите несколько секунд, пока ЭКРАН устройства не станет ЗЕЛЕНЫМ ЦВЕТОМ. .
13. Теперь снимите галочку «Auto Reboot» рядом с кнопкой «EXECUTE».
14 Щелкните значок «*» (звездочка), чтобы отключить его (Не активировать).
15. Отметьте «Авто» в правом верхнем углу Hydra Tool.
16. Выберите «MediaTek USB VCOM (Android) COM-порт» рядом со значком * (звездочка).
17. Выберите «Прочитать информацию о системе» на вкладке «Универсальные операции».
18. Нажмите «ВЫПОЛНИТЬ» и подождите несколько секунд.
19. Теперь последний этап — выполнить «Factory Reset / User Data»
20. Выберите «Factory Reset EMMC» в раскрывающемся меню «Method / Option».
21. Выберите «Auto Rebut» рядом с кнопкой «EXECUTE». (Примечание: на этот раз «Авто» также должно быть отмечено в правом верхнем углу.)
22. Нажмите кнопку «ВЫПОЛНИТЬ» и подождите несколько секунд.
23. Пока компьютер спрашивает: «Это означает, что вы подтверждаете, что собираетесь ВЫПОЛНИТЬ выбранную операцию.Хотите продолжить? »
24. Нажмите« ОК »и подождите несколько секунд.
25. Вот и все. Удачи!
Видео-инструкция:
РЕШЕНО: Мой телефон zte находится на мета режим. Как его убрать.
Не Nokia, а телефон ZTE F102 перешел в режим FTMЯ только что заплатил фиксю и нашел это, мой адрес электронной почты: [адрес электронной почты защищен]
————————————————— ——————————
Мой телефон ZTE F102 перешел в режим FTM и говорит, что по какой-то причине нет обслуживания, и я не знаю, как решить эту проблему,
Я в Великобритании и в сети 3,
Пожалуйста, ответьте с решением как можно скорее
Спасибо
jbjasoos
Посмотреть профиль
Найти все сообщения от jbjasoos
# 2 10-12-2009, 22:14
пав
3G модератор форума Дата регистрации: май 2004 г.
Сообщений: 4560
Re: режим ftm на ZTE F102
…………………………………………… ………………………………………….. …………………………….
У меня тоже есть эта проблема! Кто-нибудь знает, как это можно решить ?!
Ваше здоровье.
Эйнштейнскваред
Посмотреть профиль
Найти все сообщения от Einsteinsquared
# 7 15-02-2010, 10:43
Ben10
3G Forum Member Дата регистрации: февраль 2010 г.
Сообщений: 1
Re: ftm mode на ZTE F102
————————————————— ——————————
я тоже испытываю эту проблему.может кто-нибудь проинструктировать меня, как вернуть мой телефон в нормальный режим или почему он находится в этом «режиме ftm».
Бен10
Посмотреть профиль
Найти все сообщения от ben10
# 8 15-02-2010, 13:26
Ховард Хопкинсон,
3G Forum Member Дата регистрации: февраль 2010 г.
Сообщений: 72
Re: режим ftm на ZTE F102
————————————————— ——————————
Предлагаю вам обратиться в службу поддержки клиентов.
Похоже, что информации о вашей проблеме не так много, за исключением того, что она есть у многих людей.
__________________
HowardHopkinson
Посмотреть профиль
Посетите домашнюю страницу Ховарда Хопкинсона!
Найти все сообщения от HowardHopkinson
# 9 02-04-2010, 12:48
йодайода
3G Forum Member Регистрация: апр 2010
Сообщений: 2
Re: ftm mode на ZTE F102
————————————————— ——————————
У меня была такая проблема, сначала не было сигнала в оживленном центре города.Я вынул аккумулятор и заменил его. Затем появился белый экран с красными буквами ftm, все меню работали, но без сигнала и не было доступа к карте памяти. Я подумал, что это какой-то замок безопасности и отнес в магазин 3. Менеджер утверждал, что никогда не видел этой ошибки и должен поговорить со службой поддержки клиентов, поскольку они будут знать, что делать. Я разговаривал по телефону со службой поддержки клиентов. Они держали меня в ожидании довольно долго, в конце концов они сказали, что это ошибка производства телефона zte, и если я пришлю телефон, они исправят ее бесплатно.После долгих перебранок они также сказали, что дадут мне 5 фунтов стерлингов за потраченное впустую время. Я отправил его.
Я получил письмо очень быстро. они заявили, что телефон был поврежден жидкостью, поэтому на него не распространяется гарантия. (это наглая ложь!) Если бы они не получили от меня известий в течение 14 дней, они отправили бы телефон обратно, и мне пришлось бы заплатить 20 фунтов стерлингов за обслуживание! или они предложили бы мне отремонтированный телефон по сниженной цене. Больше я от них не получал.
Пришлось купить другую трубку. Они не добавили 5 фунтов, как обещали.
Я позвонил им. Они перевели мой звонок в 6 разных разделов. держит меня на телефоне более 45 минут. Они сказали, что мне нужно подписать 3 контракта. (я получаю зарплату, пока ты идёшь) Я засмеялся над этим. Мне отказались перезвонить. В конце концов я убедил их перезвонить мне. Сказали, что секция по моей проблеме закрыта и мне перезвонят завтра. Персонал индийского колл-центра был угрюм и откровенно груб.
Я жду там звонка.
йодаёда
Посмотреть профиль
Найти все сообщения от yodayoda
# 10 25-05-2010, 14:51
йодайода
3G Forum Member Регистрация: апр 2010
Сообщений: 2
Re: ftm mode на ZTE F102
————————————————— ——————————
ну, они перезвонили, на 1 час позже. Этот парень немедленно связал меня, без каких-либо объяснений, в центр по ремонту мобильных телефонов в Шотландии, который на самом деле не имеет отношения к «3».
Я был недоверчив!
пустая трата времени. не только бесполезный, но и преднамеренно запутывающий.
Я сдался, мне было слишком тяжело иметь дело с этими «людьми».
мой совет — переходите к другому провайдеру.
Все о МЕТА РЕЖИМЕ в устройствах Micromax. Как выйти из мета-режима?
Причина, по которой вы здесь находитесь, может заключаться в том, что вы, возможно, достигли так называемого «Мета-режима» на вашем устройстве Micromax и не можете выйти из него. Также высоки шансы, что ваш телефон заблокирован навсегда из-за слишком большого количества попыток использования шаблона.Здесь вы узнаете, как выйти из них обоих, не форматируя или не выполняя полную перезагрузку телефона.Вот несколько вещей, которые нужно знать о мета-режиме.
Вопрос-1. Как мы попадаем в мета-режим?
Ответ Нажав и удерживая кнопку уменьшения громкости при включении устройства.
Вопрос-2. Как мне выйти из мета-режима?
Ответ Самый простой и, казалось бы, самый очевидный способ для любителя — вынуть аккумулятор, вставить обратно и включить телефон.Однако есть более умный способ, о котором я расскажу в конце этого блога.
Вопрос-3. Мета-режим хоть как-то полезен?
Ответ Мета-режим — штука чрезвычайно полезная. Фактически он может быть вашим единственным спасителем в ситуации, когда:
- Ваш телефон заблокирован из-за слишком большого количества попыток графического ключа
- Интернет-соединение отключено
- Wi-Fi отключен
- Отладка USB в параметре разработчика выключена
В такой ситуации становится очень сложно разблокировать телефон без форматирования, потому что нет подключения к Интернету, чтобы разблокировать его, войдя в систему.
Остается один способ — разблокировать телефон с помощью ADB или Android Debug Bridge. Но основным требованием для работы этого метода является включение режима отладки по USB.
А вот и главная роль мета-режима.
Просто переведите телефон в мета-режим (включив телефон, удерживая кнопку уменьшения громкости), и он будет действовать так, как если бы в телефоне был включен режим отладки по USB.
Затем вы можете легко выполнить шаги, чтобы разблокировать телефон с помощью ADB.
Вот несколько блогов, которые помогут вам в этом процессе:
Пройдя по ссылкам, приведенным выше, вы сможете использовать команды в adb. Чтобы выйти из мета-режима, вам просто нужно ввести в adb следующую команду:
Сборка FreeBSD в мета-режиме
Этот документ описывает процесс преобразования сборки FreeBSD для использования bmake в мета-режиме.
Примечание: хотя я обычно говорю о мета-режиме и использую dirdeps.mk вместе, одно может использоваться без другого.
Первоначальный коммит bmake попал в голову FreeBSD в октябре 2012 года. FreeBSD 10 — это первый выпуск, в котором по умолчанию используется bmake. Инфраструктура мета-режима вошла в голову FreeBSD в июне 2015 года.
Чтобы избежать? путаница, я буду использовать fmake, говоря о более старых FreeBSD make и bmake независимо от того, какая из них установлена как make.
Возможность делать buildworld — полезная ступенька, но не очень интересно.
Возможность сделать -j8 -C bin / cat в только что проверенном дереве, и пусть правильно, соберет все библиотеки и т. д.за один проход, больше нравится это. Вот тут-то и появляется мета-режим или, точнее, dirdeps.mk. В выводе ниже показаны отмеченные каталоги — только то, что нужно кот получить построено:
Проверка / b / sjg / work / FreeBSD / projects-bmake / src / target / pseudo / stage для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / gnu / lib / libssp / libssp_nonshared для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / include для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / include / xlocale для amd64... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / include / rpc для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / include / rpcsvc для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / lib / csu / amd64 для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / lib / libcompiler_rt для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / lib / libc для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / gnu / lib / libgcc для amd64 ... Проверка / b / sjg / work / FreeBSD / projects-bmake / src / bin / cat для amd64...
Возможно, также интересно то, что мы можем получить сборку, чтобы показать нам полный древовидный граф зависимостей от любой начальной точки. Например:
$ build-graph -C bin / cat bin / cat.amd64: gnu / lib / libgcc.amd64 gnu / lib / libssp / libssp_nonshared.amd64 include.amd64 include / xlocale.amd64 lib / csu / amd64.amd64 lib / libc.amd64 lib / libcompiler_rt.amd64 цели / псевдо /stage.amd64 gnu / lib / libgcc.amd64: gnu / lib / libssp / libssp_nonshared.amd64 include.amd64 include / xlocale.amd64 lib / csu / amd64.amd64 lib / libc.amd64 цели / псевдо / stage.amd64 gnu / lib / libssp / libssp_nonshared.amd64: цели / псевдо / stage.amd64 include.amd64: GNU / lib / libssp / libssp_nonshared.amd64 цели / псевдо / stage.amd64 включить / rpc.amd64: GNU / lib / libssp / libssp_nonshared.amd64 цели / псевдо / stage.amd64 включить / rpcsvc.amd64: GNU / lib / libssp / libssp_nonshared.amd64 цели / псевдо / stage.amd64 включить / xlocale.amd64: GNU / lib / libssp / libssp_nonshared.amd64 цели / псевдо / stage.amd64 Библиотека / csu / amd64.amd64: GNU / lib / libssp / libssp_nonshared.amd64 include.amd64 цели / псевдо / stage.amd64 lib / libc.amd64: gnu / lib / libssp / libssp_nonshared.amd64 include.amd64 include / rpc.amd64 include / rpcsvc.amd64 lib / csu / amd64.amd64 lib / libcompiler_rt.amd64 цели / псевдо / stage.amd64 lib / libcompiler_rt.amd64: GNU / lib / libssp / libssp_nonshared.amd64 include.amd64 цели / псевдо / stage.amd64 $
Сценарий построения графика просто использует отладочную информацию, которая dirdeps.mk может выводить данные во время проверки Makefile.depend * файлы.
Еще лучше; используя -DWITH_DIRDEPS_CACHE последние каталоги.мк сохраняет всю свою работу в $ {DIRDEPS_CACHE}, который по умолчанию $ {. OBJDIR} /dirdeps.cache с добавленным суффиксом, если цель не по умолчанию строится. Например, для bin / cat это начинается:
# Сгенерировано автоматически - НЕ редактировать! BUILD_DIRDEPS = нет .include# bin / cat.i386 dirdeps: \ $ {SRCTOP} /bin/cat.i386 \ $ {SRCTOP} /cddl/usr.bin/ctfconvert.host \ $ {SRCTOP} /cddl/usr.bin/ctfmerge.host \ $ {SRCTOP} /include.i386 \ $ {SRCTOP} /include/xlocale.i386 \ $ {SRCTOP} / lib / csu / i386.i386 \ $ {SRCTOP} /lib/libc.i386 \ $ {SRCTOP} /targets/pseudo/stage.i386
Это означает, что цель dirdeps требует всех построенных, но это не определяет порядок.
$ {SRCTOP} /bin/cat.i386: _DIRDEP_USE $ {SRCTOP} /cddl/usr.bin/ctfconvert.host: _DIRDEP_USE $ {SRCTOP} /cddl/usr.bin/ctfmerge.host: _DIRDEP_USE $ {SRCTOP} /include.i386: _DIRDEP_USE $ {SRCTOP} /include/xlocale.i386: _DIRDEP_USE $ {SRCTOP} /lib/csu/i386.i386: _DIRDEP_USE $ {SRCTOP} /lib/libc.i386: _DIRDEP_USE $ {SRCTOP} / target / pseudo / stage.i386: _DIRDEP_USE
Как указано в dirdeps.mk, _DIRDEP_USE — это то, что на самом деле вызывает вещи, которые нужно построить. Затем мы видим такие блоки, как:
$ {SRCTOP} /bin/cat.i386: \ $ {SRCTOP} /cddl/usr.bin/ctfconvert.host \ $ {SRCTOP} /cddl/usr.bin/ctfmerge.host $ {SRCTOP} /bin/cat.i386: \ $ {SRCTOP} /include.i386 \ $ {SRCTOP} /include/xlocale.i386 \ $ {SRCTOP} /lib/csu/i386.i386 \ $ {SRCTOP} /lib/libc.i386 \ $ {SRCTOP} /targets/pseudo/stage.i386
, которые выражают то, что нужно построить раньше $ {SRCTOP} / bin / cat.i386, такая информация повторяется:
# lib / libc.i386 dirdeps: \ $ {SRCTOP} /cddl/usr.bin/ctfconvert.host \ $ {SRCTOP} /cddl/usr.bin/ctfmerge.host \ $ {SRCTOP} /gnu/lib/libssp/libssp_nonshared.i386 \ $ {SRCTOP} /include.i386 \ $ {SRCTOP} /include/rpc.i386 \ $ {SRCTOP} /include/rpcsvc.i386 \ $ {SRCTOP} /lib/csu/i386.i386 \ $ {SRCTOP} /lib/libc_nonshared.i386 \ $ {SRCTOP} /targets/pseudo/stage.i386 \ $ {SRCTOP} /usr.bin/rpcgen.host \ $ {SRCTOP} / usr.bin / yacc.host $ {SRCTOP} /gnu/lib/libssp/libssp_nonshared.i386: _DIRDEP_USE $ {SRCTOP} /include/rpc.i386: _DIRDEP_USE $ {SRCTOP} /include/rpcsvc.i386: _DIRDEP_USE $ {SRCTOP} /lib/libc_nonshared.i386: _DIRDEP_USE $ {SRCTOP} /usr.bin/rpcgen.host: _DIRDEP_USE $ {SRCTOP} /usr.bin/yacc.host: _DIRDEP_USE $ {SRCTOP} /lib/libc.i386: \ $ {SRCTOP} /cddl/usr.bin/ctfconvert.host \ $ {SRCTOP} /cddl/usr.bin/ctfmerge.host \ $ {SRCTOP} /usr.bin/rpcgen.host \ $ {SRCTOP} /usr.bin/yacc.host $ {SRCTOP} / lib / libc.i386: \ $ {SRCTOP} /gnu/lib/libssp/libssp_nonshared.i386 \ $ {SRCTOP} /include.i386 \ $ {SRCTOP} /include/rpc.i386 \ $ {SRCTOP} /include/rpcsvc.i386 \ $ {SRCTOP} /lib/csu/i386.i386 \ $ {SRCTOP} /lib/libc_nonshared.i386 \ $ {SRCTOP} /targets/pseudo/stage.i386
наконец имеем:
.info $ {. newline} $ {TRACER} Прочитанные make-файлы: всего = 71 зависимость = 15 dirdeps = 17
Конечным результатом является сгенерированный make-файл, который отображает график. необходимо для сборки bin / cat.
Пока ни один из файлов Makefile.depend * не изменится, это кеш можно повторно использовать для ускорения сборки, но во многих случаях информация, которую он предоставляет, даже более важна.
дерево зависимостей
Все знают, как делать зависимые от зависимости каталога от файлов, которые он использует, чтобы помочь убедитесь, что перезапуск make будет работать правильно.
Нам нужен такой же уровень информации для дерева в целом.Как подробно описано в разделе Создание BSD с мета-режимом Я реализовал это несколькими способами в сборке Junos, а мета mode — это текущий используемый метод.
метафайлов
В мета-режиме для большинства целей bmake создает файл .meta для захватить информацию, такую как используемая расширенная команда, любой вывод команды (полезно для отладки) и запись всей успешной системы звонки, которые интересно сделать:
# Файл метаданных /var/obj/projects-bmake/amd64/bin/cat/cat.o.meta CMD cc -O2 -pipe -nostdinc -isystem / var / obj / projects-bmake / stage / amd64 / usr / include -isystem / var / obj / projects-bmake / stage / amd64 / usr / include / clang / 3.2 -std = gnu99 -Qunused-arguments -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn- тип -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls -Wold-style-definition -Wno-pointer-sign -Wno- пустое тело -Wno-строка-плюс-int -c /b/sjg/work/FreeBSD/projects-bmake/src/bin/cat/cat.c CMD ctfconvert -L ВЕРСИЯ cat.o CWD / вар / объект / проекты-bmake / amd64 / бен / кошка МИШЕНЬ кот.о - вывод команды - - filemon получил метаданные - # filemon версии 4 # Target pid 42504 # Start 1363631731.803698 V 4 Факс 42504 42529 Е 42529 / бин / ш R 42529 /var/run/ld-elf.so.hints Р 42529 /lib/libedit.so.7 Р 42529 /lib/libncurses.so.8 R 42529 /lib/libc.so.7 S 42529. S 42529 / var / obj / projects-bmake / amd64 / bin / cat S 42529 / usr / bin / cc Факс 42529 42530 E 42530 / usr / bin / cc S 42530 / usr / bin / cc S 42530 / usr / bin / cc Факс 42530 42533 E 42533 / usr / bin / cc S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / clang / 3.2 R 42533 кат.о-24d10fa0 W 42533 кат.о-24d10fa0 S 42533 / b / sjg / работа / FreeBSD / проекты-bmake / src / bin / cat R 42533 /b/sjg/work/FreeBSD/projects-bmake/src/bin/cat/cat.c S 42533 /b/sjg/work/FreeBSD/projects-bmake/src/bin/cat/cat.c R 42533 /b/sjg/work/FreeBSD/projects-bmake/src/bin/cat/cat.c S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / sys S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / sys R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/cdefs.h R 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / sys / param.час R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/_null.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/types.h S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / machine S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / machine R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/machine/endian.h S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / x86 R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/x86/endian.h R 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / sys / _types.час R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/machine/_types.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/x86/_types.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/_pthreadtypes.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/_stdint.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/select.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/_sigset.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/_timeval.h R 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / sys / timespec.час R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/_timespec.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/syslimits.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/signal.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/machine/_limits.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/x86/_limits.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/machine/signal.h R 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / machine / trap.час R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/x86/trap.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/machine/param.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/machine/_align.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/x86/_align.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/limits.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/stat.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/time.h R 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / time.час S 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / xlocale R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/xlocale/_time.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/socket.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/_iovec.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/_sockaddr_storage.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/un.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/errno.h R 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / ctype.час R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/_ctype.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/runetype.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/xlocale/_ctype.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/err.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/fcntl.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/locale.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/xlocale/_locale.h R 42533 / var / obj / projects-bmake / stage / amd64 / usr / include / stddef.час R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/stdio.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/stdlib.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/string.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/strings.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/xlocale/_string.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/unistd.h R 42533 /var/obj/projects-bmake/stage/amd64/usr/include/sys/unistd.h M 42533 '/ var / obj / projects-bmake / amd64 / bin / cat / cat.o-24d10fa0 'cat.o' 42533 х 0 42530 х 0 S 42529 / usr / bin / ctfconvert Факс 42529 42541 E 42541 / usr / bin / ctfconvert R 42541 /var/run/ld-elf.so.hints R 42541 /lib/libctf.so.2 R 42541 /usr/lib/libdwarf.so.3 R 42541 /usr/lib/libelf.so.1 Р 42541 /lib/libz.so.6 R 42541 /lib/libthr.so.3 R 42541 /lib/libc.so.7 R 42541 кат. О R 42541 кат. О R 42541 cat.o.ctf W 42541 cat.o.ctf M 42541 'cat.o.ctf' cat.o ' 42541 х 0 42529 х 0 # Stop 1363631732.322849 # Пока-пока
Примечание: в версии filemon для NetBSD мы не беспокоимся о записи стат звонки (S).
Отсюда мы можем вывести не только эквивалентные данные make зависит, но мы можем получить зависимости на основе дерева.
Под этим я подразумеваю, что любой файл, читаемый из каталога объекта, который не .OBJDIR представляет собой каталог, который необходимо создать перед .CURDIR, это так просто.
Конечно, есть некоторая последовательность в отношениях между объектами. dirs и src dirs помогают. Даже если это невозможно, мы можем обойти это.
В приведенном выше примере несколько заголовков считываются из / var / obj / projects-bmake / stage / amd64 / usr / include /.Здесь мы создаем заголовков при построении дерева.
$ {STAGE_OBJTOP} / usr / include
По мере того, как мы создаем библиотеки и другие вещи, у которых есть заголовки для установки, они помещаются в этот каталог, длинный с файлом .dirdep для скажите, кто выложил туда файл. Например:
/var/obj/projects-bmake/stage/amd64/usr/include/xlocale/_string.h /var/obj/projects-bmake/stage/amd64/usr/include/xlocale/_string.h.dirdep
файл .dirdep содержит:
включить / xlocale.amd64
, в котором говорится, что он был помещен туда файлом makefile в include / xlocale при сборке для машины amd64.
Таким образом, когда мы читаем .meta файл и обнаруживаем, что файл прочитан, мы можем искать тот же путь с добавлением .dirdep, чтобы найти каталог, который мы следует добавить к нашим зависимостям. Если файл .dirdep не существует, предполагается, что мы можем получить src расположение от объекта.
$ {STAGE_OBJTOP} / include (устарело)
Makefile в src / include / не подходит для обычного использования узор, и исправлять его на данном этапе не очень привлекательный вариант.Поэтому вместо того, чтобы использовать наш обычный метод постановки, мы позволяем ему установить в каталог, который заполняет только он, и, таким образом, для каждого каталога created мы добавляем файл .dirdep.
Теперь у нас есть сценарий оболочки stage-install.sh, который позволяет запускать установить и затем разместить необходимые файлы .dirdep. Это позволяет размещать все заголовки в $ {STAGE_OBJTOP} / usr / include.
filemon
Это устройство-клон, используемое для отслеживания успешных системных вызовов (которые интересно сделать) выполняются процессом и его потомками.
Вот как bmake захватывает данные в метафайлы Для каждого задания bmake открывает / dev / filemon и дает ему путь во временный файл. После того, как он разветвляется, потомок передает свой pid filemon. Когда дочерний элемент завершает работу, bmake считывает трассировку системных вызовов из временного хранилища. файл.
Makefile.depend
После обработки файлов .meta для bin / cat мы получаем следующее в $ {. MAKE.DEPENDFILE}:
# Сгенерировано автоматически - НЕ редактировать! DEP_RELDIR: = $ {_ PARSEDIR: S, $ {SRCTOP} / ,,} DIRDEPS = \ GNU / библиотека / libgcc \ включают \ включить / xlocale \ lib / $ {CSU_DIR} \ библиотека / libc \ библиотека / libcompiler_rt \ .включить.if $ {DEP_RELDIR} == $ {_ DEP_RELDIR} # локальные зависимости - необходимы для -jN в чистом дереве .endif
, который показывает ряд интересных вещей.
SRCTOP
Определяет верхнюю часть дерева src. Это вместе с OBJTOP и OBJROOT (например, OBJTOP = $ {OBJROOT} $ {MACHINE}) позволяет последовательно ссылаются на вещи в деревьях src и object.
RELDIR
Возможность обрезать $ {SRCTOP} с начала $ {. CURDIR} обеспечивает удобное относительное расположение в дереве src.Это составляет основу DIRDEPS.
Упомянутые выше файлы .dirdep создаются простым делает:
.dirdep: @echo $ {RELDIR}. $ {MACHINE}> $ @
.PARSEDIR / .PARSEFILE
NetBSD make (bmake — это просто его портативная версия), определяет .PARSEDIR как каталог, из которого текущий .PARSEFILE читается. Это очень полезно для нас. Как модификатор: tA:
_PARSEDIR = $ {. PARSEDIR: tA}
или абсолютный путь к.ПАРСЕДИР.
Как видно из приведенного выше примера, мы можем использовать $ {_ PARSEDIR} и $ {SRCTOP} для получения RELDIR читаемого make-файла.
Мы также можем использовать .PARSEDIR как ключ к пониманию того, что make-файл выполняется bmake, а не fmake:
.if определено (.PARSEDIR) # мы bmake ... .endif
DEP_RELDIR
Позволяет dirdeps.mk отслеживать RELDIR, это сбор / вычисление зависимостей для, и он получает автоматически обновляется как каждый Makefile.файл зависимости читается.
DEP_MACHINE
В приведенном выше примере в DIRDEPS, если бы были, как в target / pseuod / kernel / Makefile.depend, например:
DIRDEPS = \ включают \ включить / xlocale \ usr.sbin / config.host \
последняя запись указывает, что usr.sbin / config должен быть создан для хост псевдо-машины. Когда dirdeps.mk читает usr.sbin / config / Makefile.depend его установит DEP_MACHINE = host, который может влиять на фильтрацию и другие вещи, а также обеспечение правильных зависимостей сборки созданный.
dirdeps.mk
Это сложный make-файл, и я не рекомендую трогать его.
Это то, что заставляет все работать, и, таким образом, сложность окупается; потому что все остальное (особенно то, что людям может понадобиться touch) может быть довольно простым.
Самый простой способ запустить мета-режим — использовать старую сборку с make-файлы верхнего уровня, работающие в немета-режиме, но листовые каталоги работает в мета-режиме. Таким образом, мы не полагаемся на мета-режим ни для одного из секвенирование (это происходит только в том случае, если 0-й bmake запущен в мета mode), но мы можем сгенерировать Makefile.(contrib | crypto) / | dist / ‘mfile.list | sed, \ (. * \) / Makefile, \ 1 \\, ‘> dirdep.list
и отредактируйте его в простой файл the-lot / Makefile.depend. Запустив сборку с его использованием, bmake попытается посетить все каталог в дереве с make-файлом. Не очень умно. Тем более, что в дереве есть несколько каталогов, которые на самом деле больше не строить.
загрузка нового контента
Как только основная часть дерева может быть построена в мета-режиме, работа с новыми зависимости не такая уж и большая проблема.
Напр. после последней синхронизации usr.bin / kdump нуждается в libcapsicum и libnv:
mk -C lib / libcapsicum mk -C lib / libnv mk -C usr.bin / kdump
— это все, что нужно — конечно, теперь будет Файлы Makefile.depend в новых библиотеках, которые необходимо добавить в SVN.
целей / псевдо /
Target / Makefile, который мы используем как make-файл верхнего уровня. ищет подкаталоги в target / и target / pseudo /, которые соответствуют цель, которую предстоит построить.
Поддиапазоны целей / псевдо / не должны ничего строить сами, просто быть заполнителями для Makefile.файлы зависимости (которые неизменно обслуживаются вручную). Таким образом, их make-файлы ничего не делают, кроме как не обновлять Makefile.depend.
Из нашего вышеупомянутого упражнения по начальной загрузке мы получили:
цели / псевдо / bin / Makefile.depend цели / псевдо / cddl / Makefile.depend цели / псевдо / clang / Makefile.depend цели / псевдо / игры / Makefile.depend цели / псевдо / gnu / Makefile.depend цели / псевдо / включают / Makefile.depend цели / псевдо / kerberos5 / Makefile.depend цели / псевдо / lib / Makefile.depend цели / псевдо / libexec / Makefile.зависеть цели / псевдо / разное / Makefile.depend цели / псевдо / sbin / Makefile.depend цели / псевдо / безопасный / Makefile.depend цели / псевдо / доля / Makefile.depend цели / псевдо / usr.bin / Makefile.depend цели / псевдо / usr.sbin / Makefile.depend
, который мы просто перечисляем в target / pseudo / userland / Makefile.depend:
# Этот файл не создается автоматически - будьте осторожны! DEP_RELDIR: = $ {_ PARSEDIR: S, $ {SRCTOP} / ,,} DIRDEPS = \ цели / псевдо / bin \ цели / псевдо / cddl \ цели / псевдо / игры \ цели / псевдо / GNU \ цели / псевдо / включают \ цели / псевдо / kerberos5 \ цели / псевдо / lib \ цели / псевдо / libexec \ цели / псевдо / sbin \ цели / псевдо / безопасный \ цели / псевдо / доля \ цели / псевдо / usr.корзина \ цели / псевдо / usr.sbin \ .include
, на который, в свою очередь, ссылается target / pseudo / the-lot / Makefile.depend:
# Этот файл не создается автоматически - будьте осторожны! DEP_RELDIR: = $ {_ PARSEDIR: S, $ {SRCTOP} / ,,} DIRDEPS = \ цели / псевдо / ядро \ цели / псевдо / цепочка инструментов \ цели / псевдо / toolchain.host \ цели / псевдо / пользовательское пространство \ .include
Компиляторы создаются с помощью инструментальной цепочки как для хоста, так и для целевые машины.
Для встраиваемого мира мы обычно вообще не создаем компиляторы.
машинно-зависимые dirdeps
Строки DIRDEPS.amd64 из нашего вывода начальной загрузки приводят нас к запуску отдельный процесс экстракции для каждого типа машины:
getMdirdeps () { для мф в "$ @" делать case "$ mf" в * target / * | * ~) continue ;; esac d = $ {mf% / *} m = $ {mf ## *.} case "$ m" в "" | inc | orig | rej | bak | old) continue ;; esac МАШИНА = $ m $ {MAKE: -make} -C $ d -f bsd.arch.inc.mk gen-dirdeps 2> & 1 сделано }
, который мы затем можем добавить в target / pseudo / sbin / Makefile.depend и т.д .:
DIRDEPS.amd64 = sbin / bsdlabel sbin / fdisk sbin / nvmecontrol DIRDEPS.arm = sbin / bsdlabel sbin / fdisk DIRDEPS.i386 = sbin / bsdlabel sbin / fdisk sbin / nvmecontrol sbin / sconfig DIRDEPS.ia64 = sbin / mca DIRDEPS.mips = sbin / bsdlabel sbin / fdisk DIRDEPS.pc98 = sbin / bsdlabel sbin / fdisk_pc98 sbin / sconfig DIRDEPS.sparc64 = sbin / bsdlabel sbin / sunlabel DIRDEPS + = $ {DIRDEPS. $ {MACHINE}: U} .включить
Обратите внимание, что любой каталог, указанный в DIRDEPS.amd64, должен быть удален из общего DIRDEPS — bsd.subdir.mk будет иметь вошел в них и заставил их составить список.
Также обратите внимание, что строки DIRDEPS.amd64 выводятся bsd.arch.inc.mk не всегда являются листовыми каталогами. Например, в target / pseudo / usr.sbin / Makefile.depend мы изначально см .:
DIRDEPS = \ usr.sbin / acpi / acpiconf \ usr.sbin / acpi / acpidb \ usr.sbin / acpi / acpidump \ usr.sbin / acpi / iasl \
но мы видим:
DIRDEPS.amd64 = usr.sbin / acpi
, что означает, что нам нужно переместить usr.sbin / acpi / * из DIRDEPS в DIRDEPS.amd64 и любые другие, ссылающиеся на usr.sbin / acpi.
пакет манифестов
Конечно, все это спорный вопрос, если у вас есть набор манифестов или mtree спецификации, используемые для сборки установочных пакетов / носителей. В них просто перечислены необходимые приложения и общие библиотеки, а также те, которые мы узнаем, необходимые нам зависимости.
В сборке Junos мы производим пакеты, содержащие образы isofs.Они встроены в target / * и, в отличие от target / pseudo / *, автоматически обновляемые зависимости в зависимости от того, что было в пакете.
целей / псевдо / ядро
Исключением из правила являются цели / псевдо / ядро, которые на самом деле собирает ядро способом FreeBSD (по умолчанию GENERIC).
В сборке Junos нам нужно собрать несколько ядер для нескольких машины и хотят автоматически фиксировать зависимости для всех них. Итак, каждому ядру соответствует каталог src.
Однако, в соответствии с традиционной сборкой ядра FreeBSD, этот make-файл только делает:
# $ FreeBSD: projects / bmake / target / pseudo / kernel / Makefile 248288 2013-03-14 22: 04: 25Z sjg $ # Собрать ядро $ {KERNCONF} KERNCONF? = $ {KERNEL: UGENERIC} ЦЕЛЬ? = $ {МАШИНА} # пусть это соответствует ожиданиям людей ... KERN_OBJDIR = $ {OBJTOP} / sys / compile / $ {KERNCONF} KERN_CONFDIR = $ {SRCTOP} / sys / $ {TARGET} / conf КОНФИГУРАЦИЯ = $ {STAGE_HOST_OBJTOP} / usr / sbin / config $ {KERNCONF} .config:.СДЕЛАТЬ .META mkdir -p $ {KERN_OBJDIR: H} (cd $ {KERN_CONFDIR} && \ $ {CONFIG} $ {CONFIGARGS} -d $ {KERN_OBJDIR} $ {KERNCONF}) (cd $ {KERN_OBJDIR} && $ {. MAKE} зависит) @ прикоснуться к $ @ # нам нужно передать curdirOk = yes в мета-режим, так как нам нужны файлы .meta # в $ {KERN_OBJDIR} $ {KERNCONF} .build: .MAKE $ {KERNCONF} .config (cd $ {KERN_OBJDIR} && META_MODE = "$ {. MAKE.MODE} curdirOk = yes" $ {. MAKE}) .if $ {. MAKE.LEVEL}> 0 все: $ {KERNCONF} .build .endif UPDATE_DEPENDFILE = нет .включить
циклических зависимостей
Наша цель — построить дерево за один проход. То есть; посещение директорий в правильном порядке — один раз, и цель по умолчанию (все) делать все, что требуется, например, строить объекты (библиотеки, проги) установка (постановка) заголовков, библиотек и даже прог если -DWITH_STAGING_PROG, и, наконец, обновление любых зависимостей.
Для этого требуется, чтобы в дереве не было циклических зависимостей. В настоящее время в заголовке lib / libc зависит от заголовков обоих lib / libutil и lib / msun, а так как libc.так должно быть сканируется при связывании общих библиотек, у нас есть потенциальная циклическая зависимость.
В случае lib / libutil этого тривиально избежать, поскольку в нем есть только два заголовка, и оба они общедоступны, поэтому добавляем:
CFLAGS + = -I $ {. CURDIR: H} / libutil
в lib / libc / Makefile в порядке.
Не все так хорошо с lib / msun, в котором не только заголовки в подкаталоге, зависящем от компьютера, но также имеет math.h в каталог, содержащий как общедоступные, так и частные заголовки.Следующее в lib / libc / Makefile позволяет избежать зависимости:
MSUN_ARCH_SUBDIR! = $ {MAKE} -B -C $ {. CURDIR: H} / msun -V ARCH_SUBDIR # к сожалению, msun / src содержит как частные, так и публичные заголовки CFLAGS + = -I $ {. CURDIR: H} / msun / $ {MSUN_ARCH_SUBDIR} -I $ {. CURDIR: H} / msun / src
, но не такой чистый, как в предыдущем случае.
Конечно, lib / msun / Makefile делает что-то похожее на захват заголовков. из libc:
# Расположение файлов fpmath.h и _fpmath.h LIBCDIR = $ {. CURDIR} /../libc .if существует ($ {LIBCDIR} / $ {MACHINE_ARCH}) LIBC_ARCH = $ {MACHINE_ARCH} .еще LIBC_ARCH = $ {MACHINE_CPUARCH} .endif CFLAGS + = -I $ {. CURDIR} / src -I $ {LIBCDIR} / include \ -I $ {LIBCDIR} / $ {LIBC_ARCH}
Хранение общедоступных заголовков отдельно от частных помогает гарантировать, что вышеуказанный танец безвреден.
Другой пример — lib / libproc и lib / librtld_db, каждый из который включает заголовок, созданный другим, в результате получается циркуляр зависимость. Исправить просто:
Индекс: lib / libproc / Makefile ================================================== ================= --- lib / libproc / Makefile (версия 242545) +++ lib / libproc / Makefile (рабочая копия) @@ -14,6 +14,8 @@ INCS = libproc.час CFLAGS + = -I $ {. CURDIR} + # избегать циклической зависимости + CFLAGS + = -I $ {. CURDIR: H} / librtld_db .if $ {MK_LIBCPLUSPLUS}! = "нет" LDADD + = -lcxxrt
Файлы зависимостей для МАШИНЫ
Ранее построив дерево для i386, а теперь построив для amd64 мы можем обнаружить каталоги, в которых находится один файл Makefile.depend вероятно не идеально:
Индекс: usr.bin / truss / Makefile.depend ================================================== ================= --- usr.bin / truss / Makefile.depend (версия 242503) +++ usr.bin / truss / Makefile.depend (рабочая копия) @@ -8,7 +8,6 @@ GNU / библиотека / libgcc \ включают \ включить / arpa \ - включить / rpc \ включить / xlocale \ lib / $ {CSU_DIR} \ библиотека / libc \ @@ -18,10 +17,12 @@ .if $ {DEP_RELDIR} == $ {_ DEP_RELDIR} # локальные зависимости - необходимы для -jN в чистом дереве -i386-fbsd.o: syscalls.h -i386-fbsd.po: syscalls.h -i386-linux.o: linux_syscalls.h -i386-linux.po: linux_syscalls.час + amd64-fbsd.o: syscalls.h + amd64-fbsd.po: syscalls.h + amd64-fbsd32.o: freebsd32_syscalls.h + amd64-fbsd32.po: freebsd32_syscalls.h + amd64-linux32.o: linux32_syscalls.h + amd64-linux32.po: linux32_syscalls.h ioctl.o: ioctl.c ioctl.po: ioctl.c .endif
Очень немногие из этих случаев (пока), когда конкретная машина необходимо фиксировать локальные зависимости. Самое простое решение — создать Makefile.depend. $ {MACHINE}.
Подавляющее большинство деревьев, кажется, устраивает простой Makefile.зависеть.
Мы настраиваем .MAKE.DEPENDFILE_PREFERENCE так, чтобы как только Makefile.depend. $ {MACHINE} существует, он будет использоваться.
Мы устанавливаем .MAKE.DEPENDFILE_DEFAULT в простой файл Makefile.depend.
После того, как каталог будет содержать файл зависимостей, зависящий от машины, мы будем автоматически следовать этому примеру при сборке для других машин.
Конфликты стадий
Последняя версия meta.stage.mk выдает ошибку, когда обнаруживает, что другой каталог уже разместил файл, который он хотеть.
Большинство обнаруженных на данный момент случаев просты — и их легко исправить. Например, lib / ncurses / ncursesw / Makefile включает lib / ncurses / ncurses / Makefile и таким образом пытается установить тот же заголовки в том же месте. Это легко исправить:
Индекс: lib / ncurses / ncurses / Makefile ================================================== ================= --- lib / ncurses / ncurses / Makefile (версия 242503) +++ lib / ncurses / ncurses / Makefile (рабочая копия) @@ -304,6 +304,7 @@ SYMLINKS + = libncurses $ {LIB_SUFFIX} _p.а $ {LIBDIR} / libtinfo $ {LIB_SUFFIX} _p.a .endif + .if $ {. CURDIR: T} == "ncurses" DOCSDIR = $ {SHAREDIR} / doc / ncurses DOCS = ncurses-intro.html hackguide.html @@ -311,6 +312,7 @@ .PATH: $ {NCURSES_DIR} / doc / html. FILESGROUPS = ДОКУМЕНТЫ .endif + .endif # Созданный источник .ORDER: names.c коды.c
перед установкой
При сборке WITH_STAGING_PROG мы в значительной степени хотим все. Однако существует ряд make-файлов, которые зависят от цели. перед установкой, чтобы подготовить файлы, которые мы хотим обработать.
Вместо того, чтобы переписывать все эти make-файлы, мы используем перед установкой и установите DESTDIR = $ {STAGE_OBJTOP}, что очень аналогично тому, что мы сделали для src / include /.
мишени / псевдо / стадия
Многие из этих целей до установки полагаются на то, что mtree запустить в DESTDIR. Makefile в target / pseudo / stage гарантирует, что это будет сделано, и вставляется как зависимость в каждый каталог, кроме самого себя.
Возможность сборки в мета-режиме — это круто, но конвертировать нельзя. считается завершенным, пока происходит отток зависимостей.Под этим я подразумеваю, что некоторые файлы Makefile.depend могут быть замечены как изменить без очевидной причины. Это всегда происходит из-за ошибок в make-файлах.
Хорошая новость в том, что такой отток не обязательно влияет на сборку. результаты, что удобно, если некоторые ошибки make-файла не могут быть исправлены во время переходной фазы.
До сих пор я видел мало свидетельств этого во FreeBSD.
Изменение поведения на основе чистой / обновленной сборки
Очень частая причина — использование make-файла.если существует (что-то) и в результате меняет его поведение. Таким образом, результат чистой сборки дерева может отличаться от результата. обновить сборку. Это должно быть исправлено.
Использование SRCTOP, OBJTOP, OBJROOT и т. Д. Может очень помочь канонизировать ссылки на места в дереве который может устранить многие подобные проблемы.
Конфликтующие файлы makefile
Когда два (или более) make-файла пытаются сделать одно и то же, например, include / arpa / Makefile и lib / libtelnet / Makefile обе устанавливают usr / include / arpa / telnet.час В этом случае meta.stage.mk выдаст ошибку, поэтому проблема быстро решается.
Другие случаи могут быть более тонкими. В общем, для любого make-файла опасно наступать на что-либо вне его .OBJDIR.
Зарубежные сборки
Если часть сборки выполняется, скажем, с помощью gmake, наша способность надежный захват того, что он делает, ограничивается чистыми построениями деревьев. В meta.autodep.mk есть явный механизм, позволяющий справиться с этим.
Текущее состояние FreeBSD
Обновление: по состоянию на июнь 2017 г., благодаря большой работе Брайана Дрюери, сборка WITH_META_MODE скоро может быть включена по умолчанию.
для WITH_DIRDEPS_BUILD вместо того, чтобы просто использовать $ {MACHINE} для различения целей, мы используем TARGET_SPEC_VARS в сочетании с, например. $ {MACHINE}, $ {MACHINE_ARCH}
Окружающая среда
Следует отметить, что обычно я запускаю make через сценарий оболочки (mk). который сначала читает файл $ SB / .sandbox-env (где SB обычно родительский каталог для src /) для кондиционирования среды. У меня есть десятки активных деревьев для Junos, NetBSD и FreeBSD и несколько веток, и это позволяет мне использовать один и тот же пользовательский интерфейс для всех.
Для DIRDEPS_BUILD ключевые элементы среды:
экспорт SRCTOP = $ SB / src экспорт OBJROOT = / var / obj / projects-bmake / экспорт OBJTOP = "$ OBJROOT \ $ {MACHINE}" экспорт MAKESYSPATH = $ SRCTOP / акция / мк экспорт MAKEOBJDIR = '$ {. CURDIR: S, $ {SRCTOP}, $ {OBJTOP},}' экспорт HOST_TARGET = freebsd10-amd64 экспорт HOST_OBJTOP = "$ OBJROOT $ HOST_TARGET"
Не все строго необходимы, поскольку * sys.mk может устанавливать их, но включение такой логики в make-файлы ограничивает выбор.
Обратите внимание, что значение MAKEOBJDIR заключено в одинарные кавычки, это откладывает расширение, пока bmake его не увидит.
HOST_TARGET устанавливается скриптом-оболочкой на основе uname вывод главной машины. Например freebsd10-amd64 или freebsd7-i386. При сборке для хоста псевдо-машины мы используем $ {HOST_OBJTOP}, а не $ {OBJTOP}. Это позволяет избежать проблем, когда одно и то же дерево монтируется через NFS. и построен из несовместимых машин.
У меня local.sys.mk задано несколько опций:
WITH_INSTALL_AS_USER = да WITH_AUTO_OBJ = да WITH_META_MODE = да WITH_STAGING = да WITH_STAGING_PROG = да
WITH_AUTO_OBJ важно, поскольку вызывает эквивалент сделать obj автоматическим и ранним, чтобы makefile читается.OBJDIR и .CURDIR имеют правильные значения что имеет значение в сборке gcc, где мы видим:
.PATH: ../cc_tools
, который должен добавить $ {. OBJDIR} /../ cc_tools в .PATH, но если $ {. OBJDIR} не существует во время чтения этой строки, правильного не произойдет.
Мне нужно задокументировать это, потому что я все время забываю восстановить toolchains после синхронизации из головы.
С инициализированной средой и WITH_META_MODE = yes, после новой проверки или синхронизации с головы Я делаю:
mk-host -j8 инструменты начальной загрузки
Примечание mk-host — это просто ссылка на скрипт-обертку mk и заставляет его установить MACHINE = host.Если вы не хотите использовать mk, то что-то вроде:
env MACHINE = host make -j8 bootstrap-tools
должен дать такой же результат.
После этого:
mk-host -j8 набор инструментов
, и теперь мы сможем построить все, что захотим:
mk -C bin / cat -j8 mk -j8 ядро KERNCONF = GENERIC mk -j8 userland
Примечание. Mk установит MACHINE в $ DEFAULT_MACHINE, если он установлен, или родное значение.
Автор: | sjg @ crufty.нетто |
---|---|
Ревизия: | $ Id: freebsd-meta-mode.txt, v 1e4c828042fb 2020-09-12 21: 27: 16Z sjg $ |
bmake: Мета-режим
Make — программа для поддержки зависимостей. Цель высокого уровня — обновлять цели всякий раз (но только когда) они устарели по отношению к своим источникам. Это делается путем сравнения времени модификации файлов.
В мета-режиме bmake имеет дополнительную информацию для принятия решений.Когда цель оценивается; если обычные правила не указывают он устарел, bmake обратится к файлу .meta который был записан во время предыдущей сборки этой цели.
Например; это позволяет bmake сравнить скрипт, который он будет использовать для создания текущая цель, с той, которая использовалась в прошлый раз. Если они разные; цель устарела. Это гораздо более мощный (и надежный) механизм, который просто сравнение времени модификации файлов.
Далее, если доступен драйвер filemon (4), bmake может проверяйте время модификации каждого файла , прочитанного во время предыдущего сборка текущей цели.Это гораздо больше информации, чем обычно можно выразить в make-файлах (с любой надеждой на ремонтопригодность) или захваченные традиционная сделка зависит.
Наконец, если bmake настроен так, чтобы знать объем своего контроля, любой файл, который был создан во время предыдущей сборки, которая сейчас Отсутствие может привести к тому, что текущая цель устарела. Это, например, позволяет узнать, что цель установки или постановки должна быть перезапустите, потому что установленные файлы были удалены.
Большинство из этих функций могут быть отключены для отдельной цели (или make-файла) основа, чтобы обслуживать угловые случаи.
Когда bmake [re] создает цель, она обычно создает .meta файл для захвата всех данных, необходимых для включения вышеупомянутого. Файлы .meta разработаны таким образом, чтобы людям было легко read, что очень полезно при отладке проблем сборки.
Файлы .meta также легко анализируются сценариями оболочки. Это добавляет значительную ценность, позволяя make-файлам публиковать файлы .meta, чтобы делать такие вещи, как сбор зависимости каталога. Таким образом, мета-режим становится основой для написания более умной сборки. системы (например,DIRDEPS_BUILD), а не просто лучшие make-файлы.
Файл .meta просто собирает информацию о цели, которая bmake строится. Это включает в себя расширенные команды запуска, среду (необязательно и редко полезно — но пригодится, когда вам это нужно), любой вывод команды и, наконец, захват интересных системных вызовов выполняется командами. Такая информация может иметь множество применений. помимо простого обеспечения обновления целей, когда они должны быть, не последней из которых является автоматизация захвата зависимостей на уровне дерева.
Основная идея файлов .meta возникла в книге Джона Биррелла. проект сборки для FreeBSD. В то время как прототип сборки жестко запрограммировал все поведение сборки, и потребовал замены всех make-файлов, bmake предоставляет функциональность, оставляя политику для make-файлов (sys.mk и т. д.). Подавляющее большинство make-файлов не нужно трогать ни в каком виде. способ воспользоваться мета-режимом.
Этот документ направлен на то, чтобы сконцентрироваться на функциональности, добавленной в bmake, но для использования этой функциональности необходимы некоторые make-файлы.
Ряд таких make-файлов будет упомянут ниже. У некоторых есть мета. префикс в их названии — чтобы отличать их от других вариантов, и также, чтобы помочь в их использовании вместе с другими вариантами, так как полный миграция может занять некоторое время.
- Makefile.depend или Makefile.depend. Часто используется $ {MACHINE}, но для большинства дискуссий достаточно полного имени.
- dirdeps.mk, включенный в Makefile.depend, — вот где происходит волшебство. Это ключ к DIRDEPS_BUILD.
- meta.autodep.mk делает то же самое, что и autodep.mk, который bmake существует уже много лет, но использует мета-режим .
- gendirdeps.mk используется meta.autodep.mk, когда Makefile.depend необходимо обновить.
- meta.subdir.mk традиционный bsd.subdir.mk не помещается в стиль сборки, включенный мета-режимом .
- meta.stage.mk автоматическая постановка (установка) файлов, таких как библиотеки и заголовки, чтобы остальная часть сборки всегда могла найти их в актуальном состоянии.
Зачем нужен новый режим для make? Чтобы облегчить автоматический сбор информации о зависимостях, и, таким образом, помогают оптимизировать производительность сборки.
Оптимизация производительности сборки означает как можно меньше усилий, и на современных процессорах, выполняющих как можно большую часть этого параллельно. Однако действовать быстро бесполезно, если результаты неверны. Мета-режим помогает на всех трех фронтах.
Избегать делать зависимость
Традиционная модель сборки BSD включает несколько обходов дерева. Свертывание bmake зависимостей и bmake всех фаз в одну помогает, но устранение зависимости от bmake еще лучше.
В течение многих лет autodep.mk использовал флаги gcc -M * для собирать информацию о зависимостях как побочный эффект компиляции. Это отлично работает для большинства make-файлов, но не для всех при сборке. в параллели. Make-файлы, в которых отсутствуют важные зависимости, потребовать bmake зависимого или эквивалентного, прежде чем они могут быть успешно построен параллельно.
Путем захвата локальных зависимостей в Makefile.depend (см. пример в Makefile.depend), мы можем успешно построить чистое дерево в параллели.
Также, используя filemon, мы можем фиксировать точные зависимости для все цели, а не только созданные gcc.
Избегайте ненужных зависимостей
Есть также преимущества при перестроении дерева. Тот факт, что в мета-режиме bmake может сравнивать фактическое расширенное командные строки при принятии решения о том, устарела ли цель, означает, что можно не делать такие вещи, как:
# если какой-либо из make-файлов изменился, нам нужно регенерировать # this - "на всякий случай" сгенерировано.h: $ {. MAKE.MAKEFILES: N.depend}
, что часто может привести к ненужной повторной компиляции.
прогулки по дереву не всегда срубают
Помимо неэффективности использование bsd.subdir.mk для обхода дерева, может быть проблемой, если различные конечные каталоги зависят от друг с другом.
В течение многих лет мы использовали древовидные зависимости, чтобы build посещают листовые узлы дерева напрямую — в порядке требуется, с высокой степенью параллелизма.
Модель, описанная здесь, обеспечивает ту же функциональность, но с меньшими затратами. накладные расходы. Так же, как autodep.mk собирает зависимости каталог как побочный эффект построения, мы можем использовать данные собраны в мета-режиме для получения зависимости дерева как побочный эффект построения.
Конечно, еще нужно иметь возможность запускать сборку в нелистовой каталог, поэтому meta.subdir.mk поддерживает это.
ВСЕ_МАШИНЫ
Еще один полезный трюк, доступный при наличии Makefile.зависеть. $ {MACHINE} или другой способ узнать, для каких машин должен быть создан каталог, что можно (из любого места) сделать:
bmake -DALL_MACHINES
, чтобы указать dirdeps.mk получить список всех файлов Makefile.depend. * В текущий каталог, и для каждого $ {machine} добавить $ {. CURDIR}. $ {Machine} в исходные DIRDEPS. Таким образом, можно легко проверить, не нарушает ли изменение какой-либо из поддерживаемых архитектуры.
Если Makefile.depend. * Отсутствует, но установлен SUBDIR, то мета.subdir.mk найдет Makefile.depend. * через SUBDIR.
дополнительных касс
Как указано ниже, помимо захвата DIRDEPS (те каталоги, которые должны быть созданы до текущего), мы также можем захватить SRC_DIRDEPS (эти каталоги, кроме текущего, который должен присутствовать), который можно использовать для управления логикой проверки минимальный исходный код, необходимый для создания данного каталога.
Мета-режим включается ключевым словом meta, появляющимся .MAKE.MODE.
Производительность
Повторная обработка.meta файлы, добавляет накладные расходы на сборку. Возможно, выполняется намного больше вызовов stat (2), особенно когда ничего не нужно делать.
Например, сборка libc генерирует около 3000 объектов. Если на данной машине в обычном режиме bmake требуется около 5 секунд, чтобы решаю, что делать нечего. В мета-режиме требуется 6 секунд, чтобы пришли к такому же выводу. Делать нечего, это худший случай из верхняя точка зрения.
Напротив, при построении чистого дерева создание файла.мета files эквивалентно созданию файлов * .d с gcc -M *. Учитывая всю собранную дополнительную информацию, это многообещающий.
Наиболее частый случай перестройки после внесения некоторых изменений, вот где видны преимущества. Умение обеспечить все, что нужно перестраивать (и только те) по всему дереву, будь то улучшает время сборки или нет, сокращает время, затрачиваемое на выяснение того, почему что-то не сработало, как ожидалось.
Обработка ошибок
Когда цель терпит неудачу, устанавливается bmake.ERROR_TARGET к его имени и в мета-режиме , .ERROR_META_FILE для имени связанного .meta файл (если есть).
Их можно использовать либо с помощью цели .ERROR, либо просто включен в список MAKE_PRINT_VAR_ON_ERROR, который bmake будет печать при ошибке.
Тот факт, что .ERROR_META_FILE именует файл, содержащий как вывод команды — предположительно включая любые ошибки, а также запись всех прочитанных файлов означает, что автоматическая диагностика сбоев сборки может быть значительно упрощенным.
Например:
# Файл метаданных /h/obj/NetBSD/5.X/usr.bin/make/make.o.meta CMD cc -O2 -DMAKE_NATIVE -c /amd/mnt/swift/host/c/sjg/work/NetBSD/5.X/src/usr.bin/make/make.c CWD /h/obj/NetBSD/5.X/usr.bin/make TARGET make.o - вывод команды - /amd/mnt/swift/host/c/sjg/work/NetBSD/5.X/src/usr.bin/make/make.c:140:28: ошибка: no-such-header.h: нет такого файла или каталога *** Код ошибки 1 - filemon получил метаданные - # filemon версии 2 # Target pid 7006 V 3 R 3655 /etc/ld.so.conf Р 3655 /lib/libedit.so.2 R 3655 /lib/libtermcap.so.0 R 3655 /lib/libc.so.12 R 7342 /etc/ld.so.conf R 7342 /usr/lib/libc.so.12 W 7342 /var/tmp//ccMaMdlI.s R 4248 /etc/ld.so.conf R 4248 /usr/lib/libc.so.12 4248 рэнд /amd/mnt/swift/host/c/sjg/work/NetBSD/5.X/src/usr.bin/make/make.c W 4248 /var/tmp//ccMaMdlI.s 4248 рэнд /usr/include/sys/cdefs.h Р 4248 /usr/include/machine/cdefs.h 4248 рэнд /usr/include/sys/cdefs_elf.hR 4248 /usr/include/sys/featuretest.h 4248 х 1 D 7342 / var / tmp // ccMaMdlI.s 7342 х 1 3655 х 1 # Пока-пока
У нас может быть что-то вроде:
meta_error_log = $ {SB} / error / meta - $ {. MAKE.PID} .log .ОШИБКА: - @ ["$ {. ERROR_META_FILE}"] && {\ grep -q 'ошибка была обнаружена в другой ветке' $ {. ERROR_META_FILE} && exit 0; \ mkdir -p $ {meta_error_log: H}; \ cp $ {. ERROR_META_FILE} $ {meta_error_log}; \ echo "ОШИБКА: журнал $ {meta_error_log}"> & 2; }; :
, чтобы собрать файлы журнала meta — * .log в удобном месте для автоматический анализ.Обратите внимание, что мы подавляем жалобы на сборку потерпев неудачу в другом месте.
Если включена отладка в мета-режиме (-dM), bmake сообщит в подробно, почему проверки метафайлов определили, что цель устарела, или почему не был создан файл .meta. Это полезно для поиска ошибок:
Пропуск мета для всех: никаких команд Пропуск мета для .END: .SPECIAL Пропуск мета для .WAIT_1: .PHONY Пропуск мета для .dirdep: .NOMETA Пропуск мета для всех: .MAKE @ 1353259391 [18-11-2012, 09:23:11] Проверка / home / sjg / work / sjg / conf для i386... /var/obj/sjg/i386/conf/config.status.meta: 2: команда сборки изменилась CC = "cc" / home / sjg / work / sjg / conf / configure --no-create против ./config.status --recheck Сборка /var/obj/sjg/i386/conf/config.status ... /var/obj/sjg/i386/lib/sjg/globals.3.meta: 2: в файле метаданных было больше команд сборки, чем сейчас ... ... /var/obj/sjg/i386/lib/sjg/dbug.cat3.meta: 2: изменилась команда сборки @echo "nroff -man /home/sjg/work/sjg/lib/dbug/dbug.3> dbug.cat3" против @echo "nroff -man dbug.3> dbug.cat3 " Сборка /var/obj/sjg/i386/lib/sjg/dbug.cat3 ...
Эта переменная обрабатывается после того, как все make-файлы были прочитаны, и может контролировать поведение bmake. Может содержать различные слова:
- совместимость
переводит bmake в режим совместимости (команда -B параметр строки устанавливает .MAKE.MODE = compat). Многие make-файлы написано с неявными зависимостями, которые работают только тогда, когда мишени производятся в указанном порядке. Эти make-файлы могут работать в режиме мета-совместимости.
Некоторые make-файлы полагаются на stderr, отделенный от стандартный вывод. Такие make-файлы необходимо запускать в режиме совместимости.
- мета
переводит bmake в мета-режим. Ниже приведены только актуально в данном случае (подойдет любая комбинация):
- подробный
- При создании или обновлении файла .meta печатайте значение .MAKE.META.PREFIX. По умолчанию используется Building $ {. TARGET: H: tA} / $ {. TARGET: T}.
- ок.
- Включите среду в.мета-файлы (см. ниже). Это может добавить много объема, но не используется напрямую — следовательно, не является обязательным.
- nofilemon
- Не пытайтесь использовать filemon. Для одноразовой сборки чистого дерева нет необходимости захватить информацию о зависимости, хотя активность системных вызовов, все еще может быть полезной для отладки. Тем не менее, файлы .meta полезны для захват вывода ошибок.
- читать
- Прочтите файлы .meta, если они существуют, но не обновляйте их. Это более экстремально, чем nofilemon и потенциально плохая идея, так как вы теряете способность вывод ошибки захвата.
- игнорировать-cmd
- В некоторых make-файлах есть команды, которые просто нестабильны. Это говорит bmake не считать цель устаревшей. из-за смены команды. Изменение количества команды по-прежнему будут делать цель устаревшей. Тот же эффект может быть получен для каждой цели, используя специальный источник .NOMETA_CMP.
Например:
.MAKE.MODE = подробный мета .MAKE.MODE = совместимость
некоторые make-файлы хотят, чтобы они работали в режиме совместимости независимо от мета-режим:
.MAKE.MODE + = compat
может позаботиться об этом. В некоторых случаях make-файл не хочет запускаться в мета-режиме, но не хочет работать и в режиме совместимости:
.MAKE.MODE = нормальный .MAKE.MODE =
фактическое значение в этом случае неважно (пока оно содержит ни meta, ни compat), пользуюсь нормально.
Это модуль ядра, который обертывает системные вызовы, интерес сделать. Это устройство-клон, поэтому каждый раз при его открытии новый экземпляр создан.При построении целевого bmake открывается filemon и предоставляет ему временный файл для записи. Когда bmake разветвляет ребенка, ребенок связывает свой pid с соответствующим устройством filemon.
Тогда любой из обернутых системных вызовов, выполняемых дочерним (или его Потомки) будут записаны во временный файл, предоставленный bmake.
Filemon записывает только успешных системных вызовов . Это ограничивает данные собираем только то, что нас интересует.
Аналогичную информацию можно получить с помощью ktrace (8), но ktrace захватывает всех системных вызовов , в том числе сбойных, что делает его сложнее собрать соответствующие данные.
Сборка прототипа (позже jbuild) использовала DTrace для отслеживания системные вызовы, представляющие интерес для сборки. По крайней мере, на FreeBSD однако для этого потребовались права root, что нежелательно. Устройство filemon позволяет избежать этого с меньшими накладными расходами.
Для каждого системного вызова запись вида:
путь к идентификатору тега
, где тег может быть одним из:
C chdir D разорвать связь E exec F [v] вилка L [символ] ссылка M переименовать R открыт для чтения S stat W открыт для записи X выход
, как указано ниже, записи C E и R являются особенно важными. интерес к сделке.
В следующих разделах приведены некоторые подробности о некоторых примерах. make-файлы, которые используют мета-режим для повышения производительности сборки и функциональность.
Makefile.depend
Зависимости сборки и src могут быть собраны как относительные пути (из верхней части дерева) в сгенерированный файл, который можно проверить в SCM.
Это наиболее заметное изменение, поскольку каждый листовой каталог получает один или несколько из них.
Обратите внимание, что имя Makefile.зависимость — это просто пример (но не плохой 😉 это как раз то, что я установил в качестве значения для .MAKE.DEPENDFILE.
Сборка Junos всегда перекрестно построена для нескольких архитектур, поэтому там значение, используемое для .MAKE.DEPENDFILE, равно Makefile.depend. $ {MACHINE}.
Зависимый файл для каждого $ {MACHINE} позволяет избежать мьютекса, когда обновления, и избегает необходимости какой-либо хитрости в представлении машинно-зависимые пути в канонических формах (например, замена sys / i386 / include с sys / $ {MACHINE_ARCH} / include.) Мы надеемся, что простота превосходит накладные расходы многих почти идентичных небольшие файлы.
Для сборки FreeBSD я использую простой файл Makefile.depend для большей части дерево. Единственный подход к архитектуре — lib / csu / *. который отображается в lib / $ {CSU_DIR}. Очень небольшое количество каталоги генерируют локальные источники, специфичные для машины (которые должны быть захвачены в Makefile.depend, см. ниже), для них Makefile.depend. $ {MACHINE} имеет смысл. С использованием sys.dependfile.mk заставляет все просто работать .
Кроме того, мы можем извлечь локальные зависимости, необходимые для параллельного построить чистое дерево. То есть; любой файл, прочитанный из текущий каталог объекта является локальной зависимостью для создаваемой цели. Если эта информация записывается в Makefile.depend, то она разумно (при необходимости) поддельные записи для профилированных объектов (.po) чтобы избежать ненужного оттока, когда некоторые сборки выполняются с профилированием включены, а некоторые нет.
Например, учитывая make-файл:
ПРОГ = $ {.CURDIR: T} SRCS = getdate.c main.c YACC? = Yacc ЗАДЕРЖКА? = 1 getdate.h: getdate.y $ {YACC} -d $ {. ALLSRC: M * .y} mv y.tab.c $ *. c спать, $ {DELAY} mv y.tab.h $ *. h getdate.c: getdate.h .include
отсутствует зависимость (при условии, что main.c включает getdate.h). Не обращая внимания на это, bmake -j8 в чистом каталоге будет скорее всего потерпят неудачу. Сон нужен только для того, чтобы улучшить состояние гонки.
Однако, если мы получим что-то вроде следующего в Makefile.зависит:
# Сгенерировано автоматически - НЕ редактировать! DEP_RELDIR: = $ {. PARSEDIR: tA: S, $ {SRCTOP} / ,,} DIRDEPS = \ lib / libc .include.if $ {DEP_RELDIR} == $ {_ DEP_RELDIR} # локальные зависимости - необходимы для -jN в чистом дереве main.o: getdate.h main.po: getdate.h .endif
Отсутствующая зависимость устранена.
Очевидно, если бы программист был достаточно умен, чтобы получить зависимости для getdate.c правильно, он, вероятно, не пропустил бы это для main.o, но не все make-файлы настолько просты, и зависимость на getdate.h, возможно, был добавлен позже.
Один продукт сборки на каталог
На самом деле это преувеличение. Нет проблем со сборкой нескольких вещей (например, различных разновидности библиотеки, которую генерирует bsd.lib.mk), пока поведение согласуется.
Поскольку Makefile.depend * предназначен для проверки в SCM, они должны быть стабильными. Для большинства make-файлов это не проблема.
Чтобы избежать фиксации ложных зависимостей, только meta.autodep.mk рассматривает возможность обновления Makefile.зависеть *, если мы успешно построили по умолчанию или вся цель. Таким образом выполняя bmake cscope или bmake etags не нарушает захваченные зависимости.
Учитывая вышеизложенное, make-файлы, которые создают несколько вещей, используя подделки, работающие в одном каталоге для разных целей, будут не все их зависимости зафиксированы правильно. Реорганизация таких кейсов, чтобы иметь подкаталоги для каждого продукта сборки, чтобы каждый может быть просто построен с помощью цели all, которая решает эту проблему.
мета.autodep.mk
После извлечения зависимостей сборки из файлов .meta, контролируется make-файлами (если вообще выполняется), желательно избегать запуск этого процесса без необходимости.
Тот факт, что bmake отслеживает обновленные файлы .meta через .MAKE.META.CREATED, позволяет оптимизировать обновление зависимости и гораздо более простой autodep.mk, чем требуется при использовании gcc -M *:
.END: gendirdeps _DEPENDFILE: = $ {. CURDIR} / $ {. MAKE.DEPENDFILE: T} gendirdeps: $ {_ DEPENDFILE} # двойной $$ откладывает начальную оценку $ {_ DEPENDFILE}: $$ {.MAKE.META.CREATED} $ {. PARSEDIR} /gendirdeps.mk @echo Обновление $ @: $ {. OODATE: T: [1..8]} @ (cd $ {. CURDIR} && \ SKIP_DIRDEPS = '$ {SKIP_DIRDEPS: O: u}' \ $ {. MAKE} __objdir = $ {_ OBJDIR} -f gendirdeps.mk $ @ \ META_FILES = '$ {. MAKE.META.FILES: T: O: u}')
Как уже отмечалось, двойной $$ в строке зависимости предотвращает .MAKE.META.CREATED немедленно расширяется, что работает с нашими преимущество. Также обратите внимание: мы используем .MAKE.META.CREATED только для знать, что требуется обновление,.MAKE.META.FILES — это то, что мы используем для хотя обновление:
$ vi cat.c $ bmake Проверка / c / sjg / work / sb / src / bsd / gnu / lib / csu для i386 ... Проверка / c / sjg / work / sb / src / bsd / lib / csu / i386-elf для i386 ... Проверка / c / sjg / work / sb / src / bsd / include для i386 ... Проверка /c/sjg/work/sb/src/bsd/usr.bin/rpcgen для хоста ... Проверка / c / sjg / work / sb / src / bsd / include / rpc для i386 ... Проверка / c / sjg / work / sb / src / bsd / include / rpcsvc для i386 ... Проверка / c / sjg / work / sb / src / bsd / lib / libc для i386 ... Сборка / c / sjg / work / sb / obj-i386 / bsd / bin / cat / cat.о Сборка / c / sjg / work / sb / obj-i386 / bsd / bin / cat / cat Обновление /c/sjg/work/sb/src/bsd/bin/cat/Makefile.depend.i386: cat.o.meta cat.meta $ bmake Проверка / c / sjg / work / sb / src / bsd / gnu / lib / csu для i386 ... Проверка / c / sjg / work / sb / src / bsd / lib / csu / i386-elf для i386 ... Проверка / c / sjg / work / sb / src / bsd / include для i386 ... Проверка /c/sjg/work/sb/src/bsd/usr.bin/rpcgen для хоста ... Проверка / c / sjg / work / sb / src / bsd / include / rpc для i386 ... Проверка / c / sjg / work / sb / src / bsd / include / rpcsvc для i386 ... Проверка / c / sjg / work / sb / src / bsd / lib / libc для i386... $
Эта модель также работает независимо от используемых цепей инструментов, тогда как gcc -M * требует использования -MF и -MT для достойной работы. Не говоря уже о других языках.
Если вы знаете, что остальная часть дерева обновлена, вы можете сказать dirdeps.mk, чтобы пропустить проверку:
$ vi cat.c $ bmake -DNO_DIRDEPS Сборка /c/sjg/work/sb/obj-i386/bsd/bin/cat/cat.o Сборка / c / sjg / work / sb / obj-i386 / bsd / bin / cat / cat Обновление /c/sjg/work/sb/src/bsd/bin/cat/Makefile.depend.i386: cat.o.meta cat.meta $ bmake -DNO_DIRDEPS $
gendirdeps.mk
Это make-файл, который извлекает DIRDEPS и, возможно, SRC_DIRDEPS. из кучи файлов .meta. Для этого он запускает meta2deps со списком префиксов каталогов — обычно то же самое, что установлено в .MAKE.META_BAILIWICK, и список Файлы .meta, которые, как указано выше, отслеживает bmake.
Иногда мы не загружаем все файлы .meta в meta2deps, например, библиотека, которая строит объекты .o, .So и .po из того же набора srcs.Если количество srcs велико, мы по умолчанию обрабатываем только .So.meta файлы.
dirdeps.mk
Вся логика работы с DIRDEPS заключена в dirdeps.mk, который включен Makefile.depend. $ {MACHINE}, и актуально только для начального экземпляра bmake ($ {. MAKE.LEVEL} == 0).
Концептуально процесс довольно прост (даже если реализация нет):
Когда начальная версия bmake читает $ {. CURDIR} /Makefile.depend. $ {MACHINE}, он получает начальный набор DIRDEPS.
dirdeps.mk преобразует DIRDEPS в набор абсолютных путей. с суффиксом. $ {MACHINE}, чтобы иметь дело со сборкой для нескольких типы машин. Псевдо-машина .host представляет собой сборку хозяин. Они привязаны к зависимости для целевого каталога.
dirdeps.mk также превращает DIRDEPS в список * / Makefile.depend * файлы, которые будут прочитаны, чтобы получить больше DIRDEPS.
Поскольку каждый Makefile.depend * включает dirdeps.mk процесс рекурсивный, в каждой точке добавляется что-то вроде:
$ {SRCTOP} / $ {DEP_RELDIR}.$ {MACHINE}: $ {DIRDEPS: @d @ $ {SRCTOP} / $ d. $ {MACHINE} @}
к графику.
На самом деле гораздо сложнее иметь дело со случаями, когда $ {DEP_RELDIR}. $ {MACHINE} зависит от директорий, созданных для других машин (например, псевдо-машины, такие как хост для хост-инструментов). Но выше показывает, как строится древовидный набор зависимостей.
Все развернутые DIRDEPS связаны с макросом сборки, который приведет к их посещению с МАШИНОЙ, установленной на правильный значение:
# подавляем SUBDIR при посещении листьев _DIRDEP_USE:.ИСПОЛЬЗУЙТЕ .MAKE @for m в $ {. MAKE.MAKEFILE_PREFERENCE}; делать \ test -s $ {. TARGET: R} / $$ m || Продолжить; \ echo "$ {TRACER} Проверка $ {. TARGET: R} на предмет $ {. TARGET: E} ..."; \ MACHINE = $ {. TARGET: E} MACHINE_ARCH = NO_SUBDIR = 1 \ $ {. MAKE} -C $ {. TARGET: R} || выход 1; \ перерыв; \ сделано
Независимо от того, является ли автоматическая обработка зависимостей привлекательной idea, комбинация dirdeps.mk и Makefile.depend * обеспечивает простые и эффективные средства обращения со смесью каталог и зависимости от машины.
sys.dependfile.mk
Этот make-файл включается на этапе sys.mk. Он обрабатывает .MAKE.DEPENDFILE_PREFERNCE. Это позволяет дереву содержать комбинацию, зависящую от МАШИНЫ и независимых зависимых файлов, он предоставляет значения по умолчанию:
# Все имена зависимых файлов должны начинаться с этого .MAKE.DEPENDFILE_PREFIX? = Makefile.depend # Порядок предпочтения: мы будем использовать первый из найденных # в противном случае по умолчанию будет использоваться первая запись. .MAKE.DEPENDFILE_PREFERENCE? = \ $ {.CURDIR} / $ {. MAKE.DEPENDFILE_PREFIX}. $ {MACHINE} \ $ {. CURDIR} / $ {. MAKE.DEPENDFILE_PREFIX}
на самом деле, если ничего не найдено, не обязательно использовать первый Вход. Если первая запись не зависит от машины (не заканчивается на $ {MACHINE}), но есть хотя бы одна запись, он будет проверять, существуют любые машинно-зависимые файлы, и если да, то он выберет первый машинно-зависимая запись для использования.
Как выключить мета-режим? — ElectroAnswers.com
Что такое мета-режим?
Это что-то среднее между режимом загрузчика Android и режимом восстановления. Как правило, чтобы исправить это, вы должны удерживать кнопку питания нажатой в течение 10 секунд, чтобы заставить телефон выключиться, а затем удерживайте кнопку питания, чтобы перезагрузить телефон.
Как сделать сброс зависшего планшета Леново?
Убедитесь, что устройство выключено. Нажмите и удерживайте кнопки увеличения громкости и питания, пока не появится логотип Lenovo, затем отпустите кнопку питания. Продолжайте удерживать кнопку увеличения громкости, пока не появится экран восстановления Android (около 10-15 секунд), затем отпустите обе кнопки.
Что произойдет, если ваш планшет Lenovo зависнет?
Нажмите и удерживайте кнопку питания до 30 секунд, чтобы выполнить принудительную перезагрузку устройства.Совет: Если перезагрузка не удалась, вам следует попытаться перезагрузить компьютер при подключении к настенному зарядному устройству.
Почему мой Lenovo застревает на экране загрузки?
Чтобы определить причину зависания ноутбука Lenovo на экране запуска, попробуйте загрузить ноутбук в безопасном режиме. Включите ноутбук, нажмите «F8» или «shift + F8», когда появится экран Lenovo. Выберите вариант безопасного режима и нажмите клавишу Enter.
Как исправить зависание ноутбука при перезагрузке?
Решение без использования диска восстановления: перезагрузите компьютер и несколько раз нажмите F8, чтобы войти в меню безопасной загрузки.Если клавиша F8 не действует, принудительно перезагрузите компьютер 5 раз. Выберите Устранение неполадок> Дополнительные параметры> Восстановление системы. Выберите известную точку восстановления и нажмите Восстановить.
Как мне исправить мой ноутбук, если он зависает при запуске?
Как исправить проблемы с остановкой, зависанием и перезагрузкой во время запуска Windows Выключите и снова включите компьютер. По возможности запустите Windows в безопасном режиме, а затем правильно перезагрузите компьютер. Восстановите установку Windows. Запустите Windows, используя последнюю удачную конфигурацию.Lisää kohteita… •
Почему у моего ноутбука застревает экран HP?
Отключите адаптер переменного тока от компьютера. Далее — нажмите и удерживайте кнопку питания в течение 15 секунд, чтобы выполнить полный сброс. И / ИЛИ — Включите компьютер, нажмите Esc (несколько раз), а затем F2 в командной строке. Выберите Системные тесты (Fast Test выполняет 4-минутную проверку оборудования).
Что делать, если Windows 7 не отвечает?
7 способов исправить сообщение об отсутствии ответа Windows Запустите сканирование на наличие вирусов. Если на вашем компьютере возникают проблемы, всегда рекомендуется сначала запустить сканирование на наличие вирусов.Обновите операционную систему. Очистить временные файлы. Обновите драйверы. Используйте встроенное средство устранения неполадок. Выполните сканирование с помощью средства проверки системных файлов. Используйте чистую загрузку. Проверка памяти.
Как я могу восстановить свою Windows 7?
Параметры восстановления системы в Windows 7 Перезагрузите компьютер. Нажмите F8 до появления логотипа Windows 7. В меню «Дополнительные параметры загрузки» выберите параметр «Восстановить компьютер». Нажмите «Ввод». Теперь должны быть доступны параметры восстановления системы.
Что делать, если Windows не отвечает?
Первый шаг, чтобы попытаться решить, что программа не отвечает, — это нажать клавиши Ctrl + Alt + Del на клавиатуре, чтобы открыть окно «Закрыть программу» или «Диспетчер задач».