- Последняя удачная конфигурация linux
- Назначение меню «Дополнительные варианты загрузки»
- Как вернуть F8 в Windows 10
- Как добавить «Загрузку последней удачной конфигурации» в Windows 10
- Как отключить F8 при загрузке Windows 10?
- Русские Блоги
- Изучение ядра Linux: секрет Kconfig / kbuild
- Изучение ядра Linux: секрет Kconfig / kbuild
- Справочник статей
- Глубокое понимание того, как работает система конфигурации / сборки Linux
- Kconfig
- kbuild
- Понимать vmlinux и bzImage
- Отслеживание зависимостей
- Заглядывая в будущее
Последняя удачная конфигурация linux
Добрый день! Уважаемые читатели и гости, компьютерного блога pyatilistnik.org. В прошлый раз мы с вами решили ситуацию, как исправить ошибку vcruntime140.dll, сегодня я вам покажу, как можно улучшить свою операционную систему Windows 10. Все вы прекрасно помните, замечательную таблицу «Дополнительные варианты загрузки«, которая была в Windows 7, там было много полезного. В десятке, это выпилили и заменили на более новое меню, которое не всем нравится и лишено некоторых функций, например, загрузки последней удачной конфигурации. К счастью, осталась возможность ей пользоваться и вернуть. Я вас научу как восстановить функциональность «Загрузка последней удачной конфигурации» и F8 при загрузке Windows 10.
Назначение меню «Дополнительные варианты загрузки»
Windows 7 была не идеально, хотя бы вспомнить синий экран 0x00000050 или бесконечный поиск обновлений, но зато в случае каких либо проблем, у пользователя был отличный инструментарий для устранения проблем. Заключался он в скрытом меню «Дополнительные варианты загрузки», в задачи которого входило, диагностирование системы, ее восстановление и многое другое. Выглядело, это вот так.
Тут были пункты:
- Устранение неполадок компьютера
- Безопасный режим
- Безопасный режим с загрузкой сетевых драйверов
- Безопасный режим с поддержкой командной строки
- Ведение журнала загрузки
- Включение видеорежима с низким разрешением
- Последняя удачная конфигурация (дополнительно)
- Режим восстановления служб каталогов
- Режим отладки
- Отключить автоматическую перезагрузку при отказе систему
- Отключение обязательной проверки подписи драйверов
- Обычная загрузка
Самое классное тут был пункт «Последняя удачная конфигурация (дополнительно)», который выручал во многих ситуациях, когда пользователи что-то нахимичили.
Вызывалось, это меню при загрузке операционной системы, нажав волшебную клавишу F8, тем самым вызвав дополнительные варианты загрузки. Помнится, я встречал интервью, в котором разработчиков компании Microsoft спросили, почему теперь не получается вызвать, данное меню через F8 или Shift+F8. Они отвечали, что сейчас все настолько оптимизировали в загрузке Windows 10, плюс с появлением твердотельных носителей, все стало загружаться так быстро, что процедура самотестирования компьютера до загрузки операционной системы, проходила мгновенно.
Как вернуть F8 в Windows 10
Для того, чтобы включить меню F8 (Загрузка последней удачной конфигурации) в Windows 10, выполните следующие действия. Откройте командную строку от имени администратора, иначе получите ошибку доступа. В консоли введите команду:
Данная команда, вернет меню F8 в Windows 10, прописав загрузочной записи параметр классического меню загрузки. Перезагружаем операционную систему. Ваша система начнет загружать, до появления логотипа ОС Windows 10, нажимайте клавишу F8 или Shift+F8. И вуаля, мы видим дополнительные варианты загрузки. Теперь вы легко можете попадать в безопасный режим, единственное тут сразу нет пункта, вернуться к последней рабочей конфигурации, мы этот пункт добавим
Как добавить «Загрузку последней удачной конфигурации» в Windows 10
Давайте добавим полезный пункт «Загрузка последней удачной конфигурации». Делается, это очень просто. Произведите открытие реестра Windows, через нажатие клавиш Win и R и введя в окне выполнить, команду regedit.
Далее переходим в ветку:
Если у вас включены, точки восстановления, то у вас будет создан ключ BackupCount со значением 1 (в Windows 10 1809, я его не увидел, хотя точки были включены) и будет раздел LastKnownGood. Если раздела LastKnownGood нет, то вам необходимо включить восстановление системы.
Если раздел LastKnownGood не появился после включения точек восстановления, то создайте его. Делается, это через правый клик и контекстное меню.
В каталоге LastKnownGood, создайте новый параметр типа DWORD с именем Enabled
и дайте ему значение 1, что будет означать включенный пункт в дополнительном меню загрузок.
Пробуем перезагрузиться и вызвать меню «Дополнительные варианты загрузки», через клавишу F8. Как видите у меня добавился пункт «Последняя удачная конфигурация (Дополнительно)». Мы достигли своей цели.
Как отключить F8 при загрузке Windows 10?
Если по каким-то причинам вам нужно деактивировать меню «Дополнительные варианты загрузки» при нажатии клавиши F8, то сделать это можно вот так. Так же в командной строке введите:
Источник
Русские Блоги
Изучение ядра Linux: секрет Kconfig / kbuild
Изучение ядра Linux: секрет Kconfig / kbuild
Справочник статей
Глубокое понимание того, как работает система конфигурации / сборки Linux
Система конфигурирования / сборки ядра Linux (также известная как Kconfig / kbuild) существует уже давно с тех пор, как код ядра Linux был перенесен в Git. Однако, как вспомогательная инфраструктура, она редко оказывается в центре внимания, даже разработчики ядра, которые используют ее в своей повседневной работе, никогда не задумывались об этом.
Чтобы изучить, как скомпилировать ядро Linux, в этой статье будут подробно представлены внутренние процессы Kconfig / kbuild, объяснено, как генерировать файлы .config и файлы vmlinux / bzImage, а также представлены интеллектуальные навыки отслеживания зависимостей.
Kconfig
Первым шагом в построении ядра всегда является настройка. Kconfig помогает сделать ядро Linux очень модульным и настраиваемым. Kconfig предоставляет пользователям множество целей настройки:
конфигурация | Обновить текущую конфигурацию с помощью линейно-ориентированной программы |
---|---|
nconfig | Используйте программу на основе меню ncurses для обновления текущей конфигурации |
menuconfig | Обновите текущую конфигурацию с помощью программы на основе меню |
Xconfig | Обновите текущую конфигурацию, используя интерфейс на основе Qt |
gconfig | Обновить текущую конфигурацию с помощью интерфейса GTK + |
oldconfig | Используйте предоставленный .config в качестве основы для обновления текущей конфигурации |
localmodconfig | Обновить текущую конфигурацию, чтобы отключить выгруженные модули |
localyesconfig | Обновите текущую конфигурацию, которая конвертирует локальные моды в ядро |
defconfig | Новая конфигурация из defconfig, предоставленная Arch по умолчанию |
savedefconfig | Сохраните текущую конфигурацию как ./defconfig (минимальная конфигурация) |
allnoconfig | Новая конфигурация, где на все опции отвечает «Нет» |
allyesconfig | Используйте «Да», чтобы принять новую конфигурацию для всех параметров |
allmodconfig | Новейший модуль выбора конфигурации |
alldefconfig | Новая конфигурация со всеми символами по умолчанию |
randconfig | Новая конфигурация, случайный ответ на все варианты |
listnewconfig | Список новых опций |
olddefconfig | То же, что и oldconfig, но для нового символа устанавливается значение по умолчанию без запроса |
kvmconfig | Включить другие опции для поддержки гостевого ядра KVM |
xenconfig | Включить другие опции для поддержки xen dom0 и гостевого ядра |
tinyconfig | Настройте самое маленькое ядро |
Я думаюmenuconfigЭто самый популярный среди этих целей. Цели обрабатываются различными основными программами, которые предоставляются ядром и собираются во время сборки ядра. Некоторые цели имеют графический интерфейс (для удобства пользователя), а большинство — нет. Инструменты и исходный код, связанные с Kconfig, в основном находятся в исходном коде ядра.scripts / kconfig /Далее. отscripts / kconfig / MakefileВидно, что есть несколько хост-программ, в том числеconf,mconfиnconf, В дополнение кза пределами конфКаждый из них отвечает за одну из целей конфигурации на основе графического интерфейса, поэтомуconfРазобраться с большинством из них.
Логически говоря, базовая структура Kconfig состоит из двух частей: одна часть реализует один видНовый языкЧтобы определить элементы конфигурации (см. Файл Kconfig в исходном коде ядра), другая часть анализирует язык Kconfig и обрабатывает операции конфигурации.
Большинство целей конфигурации имеют примерно одинаковый внутренний процесс (показан ниже):
Обратите внимание, что все элементы конфигурации имеют значения по умолчанию.
Первым шагом является чтение файла Kconfig в исходном корневом каталоге для создания базы данных начальной конфигурации, затем он читает существующий файл конфигурации в соответствии с этим приоритетом для обновления исходной базы данных:
.config
/ lib / modules / $(shell,uname -r)/ .config /
etc / kernel-config
/ boot / config — $(shell,uname -r)
ARCH_DEFCONFIG
arch / $(ARCH)/ defconfig
Если вы пройдетеmenuconfigВыполнить конфигурацию на основе графического интерфейса или пройтиoldconfigДля конфигурации на основе командной строки база данных будет обновлена в соответствии с вашими настройками. Наконец, база данных конфигурации выгружается в файл .config.
Но файл .config не является окончательным материалом для сборки ядра, этоsyncconfigПричина, по которой цель существует.syncconfigРаньше былsilentoldconfigЦель конфигурации, но она не будет выполнять то, что говорит старое имя, поэтому она была переименована. Кроме того, поскольку он предназначен для внутреннего использования (не для пользователей), он был удален из списка.
Следующееsyncconfig изРоль:
syncconfigВозьмите .config в качестве входных данных и выводите много других файлов, эти файлы делятся на три категории:
auto.conf и tristate.conf
Используется для обработки текста make-файла. Например, вы можете увидеть этот оператор в make-файле компонента:
autoconf.hИспользуется для исходных файлов на языке C.
Пустые заголовочные файлы в ** include / config / ** используются для отслеживания зависимостей конфигурации во время kbuild, как описано ниже.
После завершения настройки мы узнаем, какие файлы и фрагменты кода не скомпилированы.
kbuild
Компонент сборки (называетсяРекурсивная марка) Это GNU make Общие методы управления крупными проектами. Kbuild — хороший пример рекурсивного создания. Путем разделения исходного файла на разные модули / компоненты каждый компонент управляется своим собственным make-файлом. Когда вы начинаете сборку, make-файл верхнего уровня вызывает make-файлы каждого компонента в правильном порядке, собирает компоненты и собирает их в программу окончательного выполнения.
Kbuild относится к разным типам make-файлов:
- MakefileЭто make-файл верхнего уровня в корневом каталоге источника.
- .configЭто файл конфигурации ядра.
- arch / $(ARCH)/ MakefileЭто архивный make-файл, который является дополнением к верхнему make-файлу.
- ** скрипты / Makefile. *** Описывает общие правила всех make-файлов kbuild.
- Наконец, около 500kbuild makefile。
top makefile содержит make-файл arch, прочтите файл .config, загрузите его в подкаталог,скрипты / Makefile. * СреднийС помощью определенных процедур он вызывается в make-файле каждого компонента.make, Постройте каждый промежуточный объект и свяжите все промежуточные объекты с vmlinux. Документация ядраDocumentation / kbuild / makefiles.txtОписывает все аспекты этих make-файлов.
В качестве примера давайте посмотрим, как сгенерировать vmlinux на x86-64:
(Иллюстрация основана на Ричарде СтивенеБлог, Он был обновлен и использован с разрешения автора. )
Введите все **. O из vmlinuxФайл сначала входит самостоятельноВстроенный .a **, через переменныеKBUILD_VMLINUX_INIT,KBUILD_VMLINUX_MAIN,Инструкции KBUILD_VMLINUX_LIBS, А затем собрал в файл vmlinux.
С помощью упрощенного кода makefile узнайте, как реализовать рекурсивное make в ядре Linux:
Рекурсивный рецепт был расширен, например:
Это значитmakeВойдетscripts / Makefile.buildПродолжайте строить каждыйВстроенная работа.а, вscripts / link-vmlinux.shС помощью файла vmlinux, наконец, находится в корневом каталоге источника.
Понимать vmlinux и bzImage
Многие разработчики ядра Linux могут не знать о связи между vmlinux и bzImage. Например, это их отношения в x86-64:
Исходный корень vmlinux извлекается, сжимается, ставитсяpiggy.SА затем связаться с другими сверстниками, чтобыarch / x86 / boot / compressed / vmlinux, В то же время, вarch / x86 / bootЗатем создается файл с именем setup.bin. Там может быть дополнительный третий файл с информацией о перемещении, в зависимости отCONFIG_X86_NEED_RELOCSКонфигурация.
Предоставлено ядромbuildХост-программа встраивает эти две (или три) части в окончательный файл bzImage.
Отслеживание зависимостей
Kbuild отслеживает три вида зависимостей:
- Все необходимые документы (*.cИ *.h)
- ** CONFIG _ ** параметры, используемые во всех необходимых файлах
- Зависимости командной строки для компиляции цели
Первый легко понять, но как насчет второго и третьего? Разработчики ядра часто видят следующий код:
когдаCONFIG_SMPПри изменении этот код должен быть перекомпилирован. Командная строка для компиляции исходного файла также важна, потому что разные командные строки могут привести к разным целевым файлам.
Когда **. CПередача файла# include ** При использовании заголовочных файлов вам необходимо написать следующие правила:
При управлении большими проектами многие из этих правил являются обязательными, их написание может быть утомительным и утомительным. К счастью, большинство современных компиляторов Си могут проверить ** # в исходном файлеЧтобы написать эти правила для вас. Для коллекции компиляторов GNU (GCC) просто добавьте параметры командной строки:-MD depfile**
Это создаст файл **. D ** со следующим содержанием:
Затем программа хостаfixdepПутем размещенияdepfileИ командную строку в качестве ввода для обработки двух других зависимостей, а затем вывод ** в синтаксисе makefile. Файл .cmd **, в котором в качестве цели записывается командная строка и все предварительные условия (включая конфигурацию). Это выглядит так:
** будет включен во время рекурсивного создания. Файл .cmd ** предоставляет всю информацию о зависимостях и помогает решить, следует ли перестраивать цель.
Секрет этого в том,fixdepБудет разбиратьdepfile(.dФайл), а затем проанализировать все внутренние зависимые файлы, найти всеCONFIG_Текст строки, преобразовать их в соответствующийМедведьФайлы и добавьте их в предварительные условия цели. Каждый раз, когда конфигурация изменяется, соответствующий пустой заголовочный файл также будет обновляться, поэтому kbuild сможет обнаружить изменение и перестроить целевой объект, который зависит от него. Поскольку командная строка также записывается, легко сравнить последние и текущие параметры компиляции.
Заглядывая в будущее
Kconfig / kbuild долгое время оставался неизменным, пока в начале 2017 года к нему не присоединился новый сопровождающий Масахиро Ямада, и теперь kbuild снова активно развивается. Не удивляйтесь, если скоро вы увидите что-то отличное от этой статьи.
Источник