3

У меня ноутбук с более чем одной ОС.

Есть ли какая-нибудь команда, с помощью которой я могу закрыть текущую ОС и загрузить другую ОС?

windows-> Ubuntu и наоборот

благодарю вас

3 ответа3

2

Эти детали могут не совсем соответствовать тому, как UEFI обрабатывает GPT-системы, но они описывают системы на основе MBR.

Официальным (старым) стандартом является использование того, что есть в Master Boot Record. Команда "fdisk" может использоваться для изменения деталей MBR.

Традиционная MBR содержит некоторые биты, которые указывают, помечен ли раздел. Стандарт определяет, что помечен только один раздел, хотя это не обязательно обеспечивается загрузочным кодом. Когда пользователь указывает, что конкретный раздел должен быть помечен, традиционная программа fdisk обычно проверяет наличие другого помеченного раздела и, если он найден, удаляет его. Могут быть альтернативные слова, используемые для описания "помеченного" раздела, например "выбранного" раздела.

Затем традиционный MBR содержит некоторый "код" (инструкции). Когда система загружается, этот код запускается. Код проверит MBR, чтобы увидеть, насколько велик каждый раздел, и посмотреть, какой раздел помечен. Затем он продолжит процесс загрузки, запустив дополнительный код, который находится в разделе, который помечен.

Итак, этот стандарт широко поддерживается. К сожалению, этот стандартный метод включает в себя переход на fdisk и взаимодействие с ним вручную. Так что это не просто одна программа, которую вы можете запустить. Это, однако, наиболее широко поддерживаемый стандарт.

Процитирую FAQ по OpenBSD: Мультизагрузка:

Практически каждая ОС предлагает программу для этого; OpenBSD - это fdisk(8), аналогичные именованные программы есть в Windows 9x и DOS, а также во многих других операционных системах. Это может быть очень желательно для ОС или систем, которые требуют много времени для выключения и перезагрузки - вы можете установить его и запустить процесс перезагрузки, затем уйти, взять чашку кофе и вернуться к системе, загрузив путь Вы хотите - не нужно ждать, пока Magic Moment выберет следующую ОС.

Забавно, что со всеми изумительными заменами, которые сделали люди, преимущества наиболее широко поддерживаемого официального процесса можно так часто упускать из виду.

Я знаю, что это может быть не так автоматизировано, как хотелось бы, хотя в заданном вопросе не указывалось отсутствие интерактивности. Итак, простой ответ: да, такая команда существует. Это "fdisk".

Теперь есть и другие варианты, и, возможно, автоматизация возможна, если вы ищете такое решение. Вы можете проверить свои операционные системы на наличие команды с именем "boot" или чего-то в этом роде; Я знаю, что старая операционная система OS/2 содержала команду "BOOT", которая могла изменить, какая операционная система была запущена. Точные команды, которые вам нужно будет выполнить, зависят от того, какой код загрузки вы на самом деле используете. Доступно несколько программ "менеджера загрузки", и эта функциональность теперь встроена в большее количество операционных систем. Это хорошие новости. Плохая новость заключается в том, что процесс не настолько стандартизирован, поэтому я не могу просто предоставить вам один конкретный процесс, который хорошо сочетается с различными вариациями каждого. По сути, вам нужно выбрать решение и использовать его. Основная проблема, вероятно, заключается в том, чтобы найти процесс, который может быть выполнен из нескольких операционных систем и который можно использовать для записи в разделы диска, которые обрабатываются во время загрузки системы. Эти разделы, как правило, не являются частью файловой системы, и антивирусные функции могут пытаться ограничить способность человека выполнять запись в эти критические разделы диска.

По сути, этот процесс будет включать в себя изменение битов флага раздела или изменение загрузочного кода MBR, или изменение поведения кода, который находится на разделе, который MBR использует для продолжения загрузки. Итак, это три разных подхода, и каждый из этих подходов фактически используется некоторыми из доступных вариантов.

Четвертый подход может состоять в том, чтобы изменить, с какого диска загружается BIOS. Тем не менее, этот подход традиционно был гораздо менее совместимым между различными системами, так что этот подход является скорее теоретической возможностью, чем чем-то, что фактически используется. (Хотя многие пользователи использовали этот подход в интерактивном режиме, часто нажимая клавишу F12 или что-то еще, чтобы открыть меню загрузки; иногда они просто входят в настройку BIOS и изменяют диск по умолчанию, который будет использоваться при последующих загрузках.)

Наиболее распространенный метод, вероятно, заключается в создании 512-байтового образа всей MBR при загрузке системы в одной операционной системе, а затем в сохранении 512-байтового образа всей MBR при загрузке системы с другой операционной системой. Затем используйте любое необходимое программное обеспечение для прямой записи этих 512 байт в первые 512 байт диска. (Что-то вроде "dd" поможет.) Самой большой проблемой в этом случае может быть только разрешение операционной системы.

Ответ AFH, кажется, показывает, как это можно сделать в Linux с помощью grub. Диспетчер загрузки Windows со времен XP/2003 использовал бы секторальные образы такого типа (на которые ссылается файл «Boot.ini»), поэтому выход из Windows может быть сделан путем изменения текстового файла Boot.ini. (Этот процесс мог измениться в Vista/2008, поэтому проверьте его в новом менеджере загрузки, прежде чем пробовать это на более новых системах.) Точный способ реализации любого из этих решений будет зависеть от того, какую операционную систему вы пытаетесь прекратить использовать. (Например: какая версия Microsoft Windows.)

1

Да, это возможно, если вы используете Grub для выбора загрузки:-

  • Загрузиться в Linux.
  • Включите привилегии суперпользователя , войдя в систему или используя su или sudo -s .
  • Скопируйте /boot/grub.cfg в /boot/grub.win или /boot/grub.lin , в зависимости от настроек по умолчанию.
  • Отредактируйте /etc/default/grub чтобы изменить GRUB_DEFAULT= на номер альтернативной ОС в списке загрузки (считая с нуля).
  • Запустите update-grub , затем скопируйте /boot/grub.cfg в /boot/grub.lin или /boot/grub.win , в зависимости от ситуации.
  • Восстановите GRUB_DEFAULT= к его предыдущему значению в /etc/default/grub .
  • Создать bootlin и bootwin содержащий:
    cp /boot/grub.lin /boot.cfg или cp /boot/grub.win /boot.cfg
    shutdown -r now

Теперь вы можете позвонить в bootlin или bootwin из Ubuntu.

В Windows вам нужно будет сделать то же самое:

  • Сначала установите ext2fsd.
  • Присвойте букву диска (например, U: :) разделу Ubuntu и сделайте его доступным для записи.
  • Теперь вы можете создать bootlin.cmd и bootwin.cmd содержащие соответствующую команду copy для перезаписи U:\boot\grub.cfg , а затем:
    shutdown -r

Если вы загружаетесь с помощью ntldr вы можете использовать похожую технику с двумя копиями boot.ini (вам может понадобиться сначала очистить атрибуты «Только чтение», «Системный» и «Скрытый»). Может быть похожая техника, которую вы можете использовать с другими загрузчиками, но я оставляю это другим, чтобы предложить, что будет работать с ними.

ВНИМАНИЕ: Я считаю, что ext2fsd хорошо работает в режиме только для чтения, но я никогда не использовал его в режиме записи: знайте, что он может повредить вашу систему Ubuntu, поэтому убедитесь, что он хорошо зарезервирован, пока вы не попробовали его несколько раз, и заверил себя, что все работает правильно. Для Windows может быть безопаснее редактировать grub.cfg in situ, что не потребует смены каталога, но вам понадобится какой-то встроенный редактор Windows, который не использует рабочие файлы в той же файловой системе, или сбивает несколько строки C чтобы сделать это.

0

в то время как когда мы вызываем аппаратную перезагрузку, она более или менее идентична отключению и последующему включению. таким образом вся оперативная память теряется. и когда мы включаем питание, процесс загрузки обрабатывается прошивкой материнской платы. если мы хотим сообщить прошивке материнской платы какое-либо сообщение , мы не должны оставлять такое сообщение в оперативной памяти. но мы можем записать что-нибудь (что угодно) на диск (или на какой-нибудь другой постоянный носитель, и я считаю, что efi предоставляет механизм для установки энергонезависимой переменной).

Помимо вышеупомянутых подходов, ядра Linux имеют функциональность kexec для "передачи контроля" другой системе без аппаратного сбоя . хотя ядро Windows не может быть непосредственно включено в kexec, существует обходной путь, если kexec входит в программу загрузчика и позволяет программе загрузчика инициализировать систему windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .