GRUB установлен с каждой ОС. Какой на самом деле используется?

Этот сценарий жемчуга извлечет каждый .zip файл в свой собственный подкаталог. Запустите скрипт несколько раз для обработки вложенных zip-файлов. Это не удаляет .zip файлы после извлечения, но Вы могли внести то изменение путем добавления удаления связь () вызов.

#!/usr/bin/perl -w

# This script unzips all .zip files it finds in the current directory
# and all subdirectories.  Contents are extracted into a subdirectory
# named after the zip file (eg. a.zip is extracted into a/).
# Run the script multiple times until all nested zip files are
# extracted.  This is public domain software.

use strict;
use Cwd;

sub process_zip {
    my $file = shift || die;
    (my $dir = $file) =~ s,/[^/]+$,,;
    (my $bare_file = $file);
    $bare_file =~ s,.*/,,;
    my $file_nopath = $bare_file;
    $bare_file =~ s,\.zip$,,;
    my $old_dir = getcwd();
    chdir($dir) or die "Could not chdir from '$old_dir' to '$dir': $!";
    if (-d $bare_file) {
        chdir($old_dir);
        # assume zip already extracted
        return;
    }
    mkdir($bare_file);
    chdir($bare_file);
    system("unzip '../$file_nopath'");
    chdir($old_dir);
}

my $cmd = "find . -name '*.zip'";
open(my $fh, "$cmd |") or die "Error running '$cmd': $!";
while(<$fh>) {
    chomp;
    process_zip($_);
}
4
26.12.2013, 23:10
4 ответа

Это кажется на установку GRUB в главной загрузочной записи основного жесткого диска. Поскольку жесткие диски только имеют один MBR, только один загрузчик может находиться в нем за один раз. Вы также, кажется, сказали всем Вашим операционным системам устанавливать загрузчик.

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

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

2
27.01.2020, 20:51
  • 1
    Будет, "удаляя пакет личинки", возвращают систему ее предыдущему состоянию? Т.е., Вы знаете, сохраняет ли личинка копию исходного MBR с этой целью? –  goldilocks 29.01.2013, 13:24
  • 2
    Это не удалит MBR, если это будет тем, что Вы имеете в виду, но необходимо будет удостовериться, что установка GRUB, которую Вы в конечном счете имеете, является рабочей (т.е. это имеет начальную загрузку/, и т.д.). –  Chris Down 29.01.2013, 13:50
  • 3
    я немного смущен затем. Вы записали, "надлежащий способ обработать это состоит в том, чтобы мешать GRUB установить себя" и что "способ сделать это должно, вероятно, удалить пакет личинки", но если Вы удаляете пакет личинки, затем он уже установил себя на MBR... –  goldilocks 29.01.2013, 13:59
  • 4
    @goldilocks, Вы устанавливаете загрузчик GRUB от своей предпочтительной операционной системы сначала и затем удаляете пакет GRUB от других. –  Chris Down 29.01.2013, 14:02

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

Один способ выяснить состоял бы в том, чтобы видеть монитор когда Ваши загрузки компьютера, обычно существует распределение определенное сообщение.

Даже если это не имеет место, Вы могли бы внести изменения в любом дистрибутиве, что Вы в настоящее время используете и затем обновляете личинку, это обновит меню личинки, после которого Вы могли сделать a grub-install к mbr.

Также этот ответ говорит Вам, как можно найти, где различные этапы личинки.

2
27.01.2020, 20:51

Идеально, как nikhil говорит, "необходимо только установить личинку, после того как" затем "вручную добавляют записи для каждого нового дистрибутива, что Вы устанавливаете", или еще более идеально, имеете новую подсказку установок для местоположения Ваших файлов личинки и добавляете их собственную запись; я думаю, что некоторые дистрибутивы могут сделать это.

К сожалению, это не всегда настолько просто, особенно если Вы бездельничаете с попыткой новых дистрибутивов, Вы незнакомы с, и т.д. и т.д., и после того как Ваш MBR перезаписывается, необходимо иметь дело с утомительной задачей переустановки старой личинки. MBR является физическим килобайтом первой половины диска (иначе. загрузочный сектор), загруженный и выполняемый BIOS ПК (читает больше), и это - то, где личинка запускается, но это затем загружает больше материала из раздела (например, материал, в котором Вы могли бы найти /boot/grub2/i386-pc).

Так, вот быстрый взлом/ярлык к тому, чтобы заниматься целой проблемой: прежде чем Вы установите дистрибутив, скопируете Ваш MBR. Позвольте установщику сделать то, что он хочет без любой суеты, затем позже, 1) откладываете свою копию MBR на загрузочный сектор, 2) добавляете запись в соответствующее меню личинки.

Шаг № 1 довольно прост, и является на самом деле хорошей идеей каждый раз, когда Вы делаете установку в случае, если что-то завинчено, и Вы просто хотите возвратиться туда, где Вы запустили. Остерегайтесь это не относится к отформатированным дискам нового Windows UEFI/GPT. Загрузочный сектор, содержащий MBR, - точно 512 байтов:

dd if=/dev/sda of=mbr.copy bs=512 count=1

"/dev/sda" должен быть физическим диском, MBR идет. Заметьте, что это не "/dev/sda1", который относится к первому разделу на/dev/sda.

Сделайте свою установку и начальную загрузку в новую систему. Можно затем смонтировать, куда когда-либо Вы помещаете свое резервное копирование MBR, и:

dd if=mbr.copy of=/dev/sda bs=512 count=1

Престо! Перезагрузка, и это похоже на ту новую установку, никогда не происходил. Это находится все еще там в его разделе, однако, и всем, что необходимо сделать, шаг № 2, добавляет запись меню личинки для него к старому меню личинки.

Шаг 2 является более твердым битом, потому что он требует, чтобы Вы тщательно исследовали /boot/grub2/grub.cfg на обоих разделах и решают, как добавить новую запись. Во-первых, сделайте резервную копию grub.cfg, как. Необходимо смочь просто сократить n', вставляют записи прямо, но остерегаются, если они ссылаются на некоторую функцию, которая определяется в файле, например:

    load_video
    insmod part_msdos

Рассмотрение остальной части grub.cfg, неявно, что вторая строка является встроенной функцией личинки, но первой, load_video определяется далее:

function load_video {
    [...]

Поэтому не забудьте включать то определение при включении ссылки на него. Не также бойтесь экспериментирования здесь, если оно не работает, можно все еще загрузить старую систему и начать задавать более конкретные вопросы ;). Худший прибывает в худший, и Вы полностью завинчиваете grub.cfg, загружаете живой CD и заменяете его резервной копией, которую Вы сделали.

2
27.01.2020, 20:51
  • 1
    MBR является килобайтом первой половины (не мегабайт) данных по диску. Википедия И конечно, Ваш dd команда скопирует 512 байтов, не 512 кибибайт или КБ. –  a CVn 29.01.2013, 14:42
  • 2
    ВОЗГЛАСЫ! Должен получить кофе... измененный "мега" на "килограмм" и "Кбит" к "байтам". dd был корректен, как Вы говорите. Я действительно делаю это сам, btw ;) –  goldilocks 29.01.2013, 14:50

Я рекомендую установить единственную версию Личинки в Вашем загрузочном секторе, том от Вашего самого стабильного распределения. Если Вы имеете другие операционные системы, устанавливаете их загрузчик в первом секторе их собственного раздела и chainload он от Личинки начальной загрузки. Тем путем у Вас всегда будет загрузочная система, и все механизмы обновления будут работать, как разработано.

Сценарии установки личинки способны к обнаружению ядер от других установок Linux также. Это - хорошее дополнительное, но это подвержено повреждению, например после того, как Вы обновили ядро, но не загрузили основную операционную систему. Так используйте то средство только в дополнение к chainloading.

(Но действительно, кто двойные начальные загрузки в наше время? С виртуальными машинами можно выполнить все Ose одновременно!)

1
27.01.2020, 20:51

Теги

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