Как делает sudo-E, работают здесь?

Вопрос № 1

Мое понимание - то, что загрузчик GRUB2, смонтирован к начальной загрузке/. Когда каталог,/boot, находится на отдельном разделе sda2, однако, как получается, что это может произойти, прежде / на самом деле смонтирован?

Я не думаю, что Вы понимаете, совершенно правильно здесь. От страницы GNU GRUB Wikipedia:

выборка

Когда компьютер включен, BIOS компьютера находит настроенное основное загрузочное устройство (обычно жесткий диск компьютера) и загружает и выполняет начальную программу самозагрузки из главной загрузочной записи (MBR). MBR является первым сектором жесткого диска и имеет номер 0 (подсчет секторов запускается в 0). В течение долгого времени размер сектора составил 512 байтов, но с 2009 существуют жесткие диски, доступные с размером сектора 4 096 байтов, названных Усовершенствованными дисками Формата. По состоянию на октябрь 2013 к таким жестким дискам все еще получают доступ в 512-байтовых секторах путем использования 512e эмуляция.

В версии 2 GRUB происходит следующее:

выборка

Начальная загрузка компьютера

Когда питание включено, следующее происходит:

  • Аппаратные средства инициализируют, устанавливают ЦП на реальный режим (никакая виртуальная память) и переходят к фиксированному местоположению 0xFFFF0 (соединенный проводами в схемах ЦП)
  • Код BIOS, сохраненный в ROM или флэш-памяти, отображенной на том местоположении, поэтому выполнен.
  • Код BIOS смотрит на данные конфигурации BIOS для наблюдения, который является устройством загрузки. Эти данные конфигурации BIOS могут обычно редактироваться путем нажатия некоторого специального сочетания клавиш сразу после включения питания, заставляя программу конфигурации BIOS работать. Среди прочего устройство загрузки может обычно выбираться здесь.
  • Код BIOS загружает MBR устройства загрузки в RAM. Помните, что MBR - всего 512 байтов! Загруженные данные являются, конечно, программой и данными, которые установка личинки динамично создала и записала там, когда программа установки личинки была выполнена.
  • Переходы кода BIOS к начальному адресу загруженного MBR (т.е. код Личинки выполняется впервые начиная с включения питания).
  • Код MBR личинки загружает единственный сектор, адрес которого соединен проводами в блок MBR. Это затем циклы по (адрес, len) пары в том секторе, загружающем все эти данные из диска в память (т.е. загрузки содержание файла /boot/grub/core.img, или его “встроенная” копия). Код MBR затем переходит к загруженному коду, т.е. “выполняет” программу в core.img.
  • Как описано в разделе “Installing Grub”, этот прием встраивания адресов блока неструктурированного диска позволяет сохранить core.img в пространстве, которое не находится в разделе, и это никогда не форматировалось как файловая система во всем (“встраивание”). И в этом случае, если core.img изменяется, пока новая версия “встраивается” в то же местоположение, код MBR не должен быть обновлен.
  • С другой стороны, это возможно для core.img быть в реальной файловой системе, и чтобы Личинка читала core.img содержание файла, не имея драйвера для той файловой системы. Однако в этом случае, если core.img изменяется затем, первому блоку файла можно дать новый адрес на диске; если это происходит затем, MBR должен быть обновлен для указания на это новое местоположение. Тем не менее, как core.img обычно обновляется рабочей установкой личинки, это обычно не проблема.
  • Отметьте это теоретически, если core.img находится на другом устройстве, чем MBR, и новые аппаратные средства добавляются затем, сгенерированная Личинкой запись MBR не смогла правильно загружаться core.img файл; идентификатор устройства, на который первый сектор core.img должен быть найден соединен проводами в MBR, не разыскиваемый. Однако нет никакого решения для этого; нет никакого способа встроить эквивалент команды “поиска” Личинки в 512-байтовый MBR. Эта проблема маловероятна хотя; обычно core.img встраивается в то же устройство как MBR. И однажды core.img был загружен это может использовать search.mod для нахождения всех далее /boot/grub файлы, и поэтому неуязвимы для аппаратных перестановок.
  • Выполняемый core.img код теперь инициализирует все модули, которые встроены в него (связанный в core.img); один из этих модулей будет драйвером файловой системы, способным к чтению файловой системы на который каталог /boot/grub жизни.
  • Это также регистрирует ряд встроенных команд: набор, сброс, ls, insmod.
  • Если “файл конфигурации” был связан в core.img, это затем передается очень простой сборке - в синтаксическом анализаторе сценария для обработки. Сценарии команд в файле конфигурации могут только вызвать встроенный или связанный - в командах. Для простых сценариев (например, начальная загрузка обычного настольного компьютера от локального диска) не нужен никакой файл конфигурации; это средство используется для вещей как начальная загрузка через pxe, удаленную nfs или когда /boot/grub находится на устройстве LVM.
  • Core.img теперь файл загрузок “/boot/grub/normal.mod” динамично от диска и переходов к его функции записи. Обратите внимание, что этот шаг требует, чтобы соответствующий драйвер файловой системы был настроен (т.е. встроенный).

     ss of boot process

Примечание: Когда Вы видите типичное меню GRUB2, где Вы выбираете, который ОС/ядро загрузиться, Вы ссылаетесь на систему /boot/grub каталог в этой точке.

                                         ss of grub tui

Ссылки

2
13.04.2017, 15:22
1 ответ

Если вы используете прокси, чтобы сделать подключение к Интернету, возможно, ваша система устанавливает некоторую переменную среды для вашего пользователя, чтобы установить IP-адрес прокси-сервера Отказ При использовании Sudo без параметра -E вариант ваши переменные среды не сохраняются, поэтому вы не можете подключиться к Интернету, вызывая ADD-APT-репозиторий показывает эту ошибку. Проверка Add-APT-REPOSITY Исходный код, вы можете увидеть:

try:
    ppa_info = get_ppa_info_from_lp(user, ppa_name)
except HTTPError:
    print _("Cannot add PPA: '%s'.") % line
    if user.startswith("~"):
        print _("Did you mean 'ppa:%s/%s' ?" %(user[1:], ppa_name))
        sys.exit(1) # Exit because the user cannot be correct
    # If the PPA does not exist, then try to find if the user/team 
    # exists. If it exists, list down the PPAs
    _maybe_suggest_ppa_name_based_on_user(user)
    sys.exit(1)

, так что если вы не можете подключиться к Интернету, _maybe_suggest_ppa_name_based_on_user () . И вот его реализация:

def _maybe_suggest_ppa_name_based_on_user(user):
    try:
        from launchpadlib.launchpad import Launchpad
        lp = Launchpad.login_anonymously(lp_application_name, "production")
        try:
            user_inst = lp.people[user]
            entity_name = "team" if user_inst.is_team else "user"
            if len(user_inst.ppas) > 0:
                print _("The %s named '%s' has no PPA named '%s'" 
                        %(entity_name, user, ppa_name))
                print _("Please choose from the following available PPAs:")
                for ppa in user_inst.ppas:
                    print _(" * '%s':  %s" %(ppa.name, ppa.displayname))
            else:
                print _("The %s named '%s' does not have any PPA"
                        %(entity_name, user))
        except KeyError:
            pass
    except ImportError:
        print _("Please check that the PPA name or format is correct.")

Вы можете увидеть, он покажет сообщение , пожалуйста, проверьте, что имя или формат PPA является правильным , если он не может импортировать PARKPAD . Вам нужно установить Python-launchPadlib , чтобы сделать импорт успешно.

Примечание

Я думаю, что это неоднозначно сообщать о том, что, поскольку, когда PARTPADLIB также нужно подключение к Интернету для работы. В этом случае скрипт должен проверить погоду, подключение к Интернету снижается или не сообщает более четко.

4
27.01.2020, 22:00

Теги

Похожие вопросы