Как скопировать загрузчик linux
Перенос ОС и загрузчика с одно на другой жесткий диск.
Буду менять один жесткий на другой(по причине умирания первого). Бекапы есть,можно экспериментировать.
ОС Опенсюсе. Я делал раньше такой перенос простой переустановкой ОС,с переносом списка пакетов.(стандартными средствами яста при установке).
Также пытался однажды скопировать систему с установкой груба и созданием пункта в меню с путями.Грузилось-но куча ошибок при загрузке с именами старого диска-неочень обрадовали поэтому переустановил и там.
Вобщем вопрос: Есть диск в которых вся система(с соответствующими разделами). И пустой диск.
Как правильно перенести систему без переустановки? Правильно ли просто скопипастить с созданием груба на новый? Или копировать разделы Gparted-ом? Какие проблемы будут,или лучше переустановить со списком пакетов?
Вот пункт 3 мне кажется по времяпотерям сравним с переустановкой и автоматической установкой пакетов.
Тогда 1) с установкой UUID существовавшего раздела
Он создает только резервные копии установленных пакетов и недефолтных конфигов. хотя да можно попробовать.
можно весь диск скопировать с помощью dd.
а затем изменить размеры разделов с помощью gparted если надо.
можно попробовать цп или дд, а потом с лайв сиди восстановить загрузчик
Эмм..можно подумать что вбить 10 букв это сильно сложно
DD уже совветовали, еще можно воспользоваться clonzilla’ой
Четкие места где вбивать? (кроме груба и фстаб,что очевидно)
Я предполагаю что в какомнить удев в фигзнает каком конфиге указаные диски по uuid,или vinit у себя в сотнях конфигах гдето спрятал ид жесткого.
И именно то что я не хочу в качестве парсера изучать весь миллион конфигов,что абсурдно и по времяпотерям равносильно сидению за компом с чашкой чая и глядению в монитор на автоматическую установку пакетов в системе с нуля.
Не знаю, я тупо поправил fstab и lilo, груб у меня не пашет. заняло это полминуты, и все потом пахало
1.Перенос около 15гб рабочей системы(только корень) равносилен по времени скачиванию на 100Мб около 4.5Гб пакетов с их установкой,т..е копирование рабочей системы одинаково установке.
Т.е. вполне логично произвести автоматическую установку с установкой списка пакетов и репозиториев,после перенести home и все остальное.
Да я засекал-установка заняла 20 минут,копирование файлов+2 минуты на изменение старых имен дисков=20 минут.(жесткие диски сата2)
Я сделал сначала перенос,потом переустановку с загрузкой пакетов(ради науки естественно).
2.Я зря это затеял т.к. когда начал ковырять провода обнаружил что питание у старого жесткого отходило,поэтому он давал «лаг»,которого я пугался последние два дня.(хотя отмечу-линукс не падал,сыпал ошибками от ata. но жесткий щелкал и запускался,даже данные не потерялись,удивительно).И зря выходит обзавелся новым жестким.
🐺 Как создать резервную копию загрузчика Linux на USB для экстренных случаев
Загрузчик, с которым работает большинство операционных систем Linux, называется Grub.
Это простой инструмент, который можно настроить для загрузки дистрибутива Linux, а также других операционных систем из меню при запуске компьютера.
Grub – надежный инструмент по сравнению с другими альтернативными загрузчиками Linux, и по этой причине он остается фаворитом в сообществе.
Тем не менее, и он не идеален.
Как бы надежен он ни был, ошибки могут произойти, и Grub может сломаться.
Лучший способ подготовиться к тому моменту, когда ваш загрузчик Grub умрет, – создать резервную копию загрузчика Linux на внешнем жестком диске или USB-накопителе.
BIOS Grub – Резервное копирование MBR
Хотя многие пользователи Linux переходят на использование EFI в качестве стандарта, многие пользователи по-прежнему используют версию Grub для BIOS, поскольку не каждый компьютер может работать с EFI.
Если у вас установлен BIOS для Linux, ваш загрузчик Grub использует Master Boot Record.
Это означает, что во время установки вашей ОС Linux загрузчик был установлен в самых первых секторах на вашем жестком диске, а не в папке, как с вариантами Grub EFI.
Плюс MBR состоит в том, что очень легко сделать полную резервную копию Grub, скопировав сектора MBR вашей Linux-установки в файл TXT.
Чтобы начать процесс, откройте окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре.
Затем используйте команду lsblk, чтобы определить, какой у вас основной жесткий диск Linux.
Просмотрите вывод команды lsblk в терминале и найдите раздел с символом «/» под точкой монтирования.
Эта команда должна помочь вам найти ярлык вашего жесткого диска.
В этом примере метка диска будет «/dev/sda».
В терминале используйте команду DD, чтобы создать резервную копию вашей основной загрузочной записи в файл TXT.
Примечание: вы должны изменить /home/username/ в приведенной ниже команде на имя пользователя на вашем ПК с Linux! Не забудьте также изменить /dev/sda, чтобы отразить ярлык вашего фактического жесткого диска.
Инструмент DD создаст резервную копию достаточно быстро.
Когда это будет сделано, у вас будет файл в домашнем каталоге (
/) с пометкой «master-boot-record.txt».
Возьмите его и поместите на USB-накопитель или внешний жесткий диск USB для безопасного хранения.
Восстановить резервную копию MBR
Нужно восстановить резервную копию MBR?
Загрузите систему вашего сломанного Linux-компьютера с помощью одного из этих инструментов Grub.
Затем откройте терминал, подключите устройство USB с файлом «master-boot-record.txt», поместите файл обратно в домашний каталог (
/) и выполните следующую команду.
Примечание: как и прежде, очень важно, чтобы вы изменили /home/username/ и /dev/sda, чтобы отразить ваше имя пользователя и фактическую метку жесткого диска.
Резервное копирование конфигурации Grub
Те, кто использует UEFI Grub, не смогут использовать инструмент DD для резервного копирования загрузчика Grub.
К счастью, все еще можно создать полную резервную копию ваших файлов конфигурации, пользовательских загрузочных записей и т. д.
Примечание: если резервное копирование файлов конфигурации Grub недостаточно, попробуйте прочитать наше руководство о том, как создать резервную копию в Clonezilla. Он создаст полную резервную копию системы, включая UEFI Grub и т. д.
Чтобы создать полную резервную копию файла конфигурации Grub, начните с создания папки резервного копирования в вашем домашнем каталоге с помощью команды mkdir.
С помощью папки резервного копирования, созданной в вашем домашнем каталоге, мы можем сделать копию файла конфигурации Grub.
Это файл конфигурации Grub. Затем скопируйте записи загрузчика Grub из папки /etc/grub.d/.
Теперь подключите USB-флешку к вашему ПК с Linux.
После этого перетащите папку «grub-backup» на USB диск.
Восстановите резервную копию
Чтобы восстановить настройки и записи Grub на ПК с UEFI Linux, подключите USB-накопитель.
Затем следуйте пошаговым инструкциям ниже.
Шаг 1: Откройте ваш файловый менеджер Linux, нажмите на флешку и поместите папку «grub-backup» в вашу домашнюю папку (
Шаг 2: Запустите окно терминала на вашем ПК с Linux. Затем с помощью команды CD перейдите в «grub-backup».
Шаг 3: Восстановите файл «grub» в /etc/default/ с помощью команды mv.
Шаг 4: Восстановите записи загрузчика Grub в папку /etc/default/grub.d/.
После восстановления файлов обновите систему Grub.
Клонирование системного раздела в Linux
В данной инструкции я попробую рассмотреть различные сценарии, с которыми мы можем столкнуться при клонировании диска в Linux с системным разделом. В итоге мы должны будем запустить нашу систему с другого диска.
Данная процедура потенциально опасна для данных. Любое неверное действие или нюанс, связанный с уникальной настройкой, могут привести к потере данных. Обязательно, выполняем резервное копирование всех важных файлов. Также я рекомендую потренироваться в тестовой среде.
В зависимости от системы и типа разделов, действия могут отличаться, а могут появляться особенности, которые сделают работу сложнее. Клонирование диска может быть выполнено в несколько действий, а может превратиться в кошмар. Запасаемся временем и терпением.
Процесс будет выполнен в несколько шагов:
1. Клонирование диска
Первым делом мы создаем полную копию нашего диска. Это единственный этап, который может быть выполнен без нюансов на любой из систем, так как он выполняется с помощью утилиты dd.
Смотрим состояние дисков и разделов на текущий момент:
Определяемся, с какого диска на какой мы будем выполнять копию. Это может прозвучать банально, но тут важно не перепутать источник диска, с которого клонируется информация и целевой носитель.
dd if=/dev/sdx1 of=/dev/sdy1 bs=64K conv=noerror,sync
* Команда выполняет блочное копирование и запускается со следующими параметрами:
* Таким образом, мы клонируем диск или раздел с /dev/sdx1 в /dev/sdy1 (не путаем источник и назначение).
Команда будет выполняться некоторое время. После ее завершения можно снова посмотреть состояние дисков и разделов:
При клонировании диска мы должны увидеть, что целевой носитель приобрел такую же разметку.
Следующим шагом настроим загрузчик.
2. Загрузчик grub2
Для большинства современных систем характерно использование grub2. Его мы и будем рассматривать. Но если в вашем случае используется сервер с grub первой версии, то мы можем обратиться к инструкции How to Migrate the Root Filesystem to a New Disk.
Мы можем увидеть разные варианты строки, указывающей на загрузку системы.
а) В некоторых случаях это будет универсальная строка, которую не нужно менять, например:
GRUB_CMDLINE_LINUX=»crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet»
* в данной строке мы видим, что загрузчик будет искать том LVM centos/root. Так как после клонирования он не поменяется, то нам ничего не нужно редактировать.
б) В некоторых случаях строка может быть пустой:
* в данном примере также от нас не потребуется никаких действий.
в) В некоторых случаях указатель может вести на конкретные диски:
splash=silent quiet showopts»
Тогда нам понадобиться изменить строки, чтобы диск соответствовал новому.
Также стоит иметь ввиду, что если после копирования мы собираемся извлечь диск из компьютера, порядок дисков и имя могут поменяться, что приведет к неработоспособности загрузки.
Стоит сделать тестовое отключение с целью проверки, какое имя станет у диска.
3. Файл fstab
На следующем шаге мы проверяем настройки монтирования корневой директории и раздела boot при загрузке системы. Они задаются в файле fstab.
Есть два надежных способа указать диск при монтировании — использовать его идентификатор или точку монтирования тома LVM. Рассмотрим оба варианта.
Данный способ можно использовать частично, так как раздел boot не может использовать LVM, поэтому данное монтирование будет применяться только к корневому разделу.
Если мы используем LVM, то все, что нам нужно сделать, это открыть файл fstab и проверить, что в нем, на самом деле, используется LVM при монтировании корневого раздела:
Мы можем увидеть что-то на подобие:
.
/dev/mapper/centos-root / xfs defaults 0 0
.
Понять, используется ли LVM можно командой:
Мы должны увидеть пометку lvm:
.
centos-root 253:0 0 13.4G 0 lvm /
.
Как было сказано выше, в случае использования LVM, нам не придется редактировать fstab, так как точка монтирования не поменяется.
Использование идентификатора
Для получения списка дисков с их идентификаторами, вводим команду:
Мы получим что-то на подобие:
/dev/sdb1: UUID=»45053cf4-cb27-40b8-9b63-7f43fb123807″ TYPE=»xfs»
/dev/sdb2: UUID=»Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi» TYPE=»LVM2_member»
/dev/sda1: UUID=»45053cf4-cb27-40b8-9b63-7f43fb123807″ TYPE=»xfs»
/dev/sda2: UUID=»Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi» TYPE=»LVM2_member»
/dev/mapper/centos-root: UUID=»97ea6561-8e69-4a9d-b29b-5d6c68a5df64″ TYPE=»xfs»
/dev/mapper/centos-swap: UUID=»db800e72-c138-4050-9949-cf03b779b709″ TYPE=»swap»
* как видим, идентификаторы дисков совпадают, так как команды dd клонирует информацию полностью. Также обратите внимание, что разделы LVM также имеют свои идентификаторы. Это очень важный момент, так как точка монтирования в случае использования LVM должна указывать на него.
Чтобы лучше понять, какой идентификатор нам нужен, смотрим список раздело и их монтирования:
Находим раздел, который соответствует корневому и смотрим его идентификатор. После открываем файл:
Наши записи могут быть, примерно, такими:
UUID=Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi / xfs defaults 0 0
UUID=45053cf4-cb27-40b8-9b63-7f43fb123807 /boot xfs defaults 0 0
Но также никто нам не запретит использовать гибридный вариант, например:
/dev/mapper/centos-root / xfs defaults 0 0
UUID=45053cf4-cb27-40b8-9b63-7f43fb123807 /boot xfs defaults 0 0
* в данном варианте мы используем том LVM для корня и идентификатор для boot.
Буква (цифра) раздела
Также мы можем использовать монтирование при указании конкретного диска и раздела, например:
/dev/sda2 / xfs defaults 0 0
/dev/sda1 /boot xfs defaults 0 0
Данный метод ненадежный, так как при извлечении дисков или их переключении в другие порты, имена разделов могут поменяться.
4. Перезагрузка
Надеемся, что мы все сделали правильно и перезагружаемся. На данном этапе также могут быть варианты.
а) Если необходимо извлечь старый диск, то выключаем компьютер, отключаем диск, но не убираем его далеко, так как если система не загрузится, необходимо будет его вернуть, подключив в тот же порт материнской платы.
б) Если мы сохранили оба диска, нам нужно убедиться в настройках БИОС/UEFI, что загрузка выполняется с нового диска.
Если мы настроили систему правильно, то она загрузится с нового диска.
Как скопировать загрузчик linux
Такая задача возникает достаточно редко. Обычно, проще переустановить систему заново, чем переносить уже установленную версию на другой жёсткий диск или другой раздел. Но если у вас там есть важные программы, которые нежелательно удалять, или вы меняли настолько много настроек в системе, что её установка заново займёт намного больше времени, чем её перенос, то перенос будет предпочтительнее.
В этой статье мы рассмотрим, как перенести Linux на другой диск с помощью утилиты cp или архива tar. Второй способ интересен ещё тем, что вы можете создать резервную копию всей системы, а затем просто восстановить её при возникновении проблем.
Как перенести Linux на другой диск
Поскольку все данные, настройки и объекты операционной системы Linux — это файлы, то вы можете перенести свою операционную систему куда нужно, просто скопировав все нужные файлы. В Windows так де просто не получится, так, как там более сложная файловая система со сложными зависимостями.
1. Подготовка к переносу
Сначала рассмотрим, как использовать утилиту cp для переноса файлов операционной системы. В папку /mnt примонтируйте раздел, на котором будет располагаться новый Linux. Например, это /dev/sdb1:
sudo mount /dev/sdb1 /mnt
Теперь нужно рекурсивно скопировать все файлы из текущего корня в нашу папку /mnt. Лучше всего это делать, загрузившись с LiveCD диска, тогда точно все нужные данные будут сохранены. Но это не обязательно, вы можете делать перенос и работающей системы, только перед этим остановите все запущенные базы данных и сервисы по максимуму, чтобы они сохранили свои настройки и вы ничего не потеряли в новой версии системы. Например, если у вас запущена база данных MariaDB или MySQL, то её нужно остановить:
sudo systemctl stop mariadb
Аналогично сделайте со всеми другими не важными для операционной системы сервисами. Также очистите корзину, кэш пакетного менеджера и другие ненужные файлы, чтобы они не занимали место в архиве или новой системе.
2. Перенос Linux утилитой cp
Далее можно запускать сам перенос Linux на другой диск. Для этого запустите утилиту cp с опциями -a, -r и —x. Первая опция включает сохранение исходных прав и метаданных файла, вторая — рекурсивный обход файловой системы, а третья ограничивает рекурсию только текущей файловой системой:
Поскольку будут копироваться только файлы из текущей файловой системы, то если ваши каталоги /boot и /home находятся на других разделах, то их нужно скопировать отдельно:
Если вам не нужна домашняя папка, то вы можете её не копировать.
3. Перенос Linux утилитой tar
Это альтернативный вариант переноса, если вы не хотите использовать cp, то можете применить tar. Чтобы сразу перенести файлы в другое расположение, нужно создать туннель, на одном конце которого данные будут запаковываться, а на другом — распаковываться:
Опция -p — заставляет утилиту сохранять метаданные файлов при переносе. Опция —one-file-system указывает, что утилита будет брать файлы только из корневой файловой системы, поэтому все примонтированые файловые системы, как и в предыдущем варианте, будут пропущены. Поэтому каталоги /boot и /home вам придётся копировать аналогичной командой. Или же можно не использовать эту опцию и передавать всё, кроме ненужного:
Также вы можете создать архив, а потом его куда-нибудь скопировать, чтобы иметь резервную копию системы:
Вместо опции —one-file-system можно использовать опции —exclude, чтобы исключить ненужные каталоги, как в предыдущей команде. А для распаковки используйте команду:
Здесь, /mnt — это каталог, в который нужно извлечь файлы архива.
4. Перенос с помощью rsync
Утилитой rsync многие не хотят пользоваться, но она очень удобная, работает достаточно быстро и отображает прогресс копирования. Для переноса с помощью rsync выполните:
5. Правка /etc/fstab
Далее будем работать только с новой системой. Первым делом нужно исправить файл /etc/fstab, чтобы там был указан правильный UUID корневого раздела. Узнать UUID нужного раздела можно командой blkid:
Теперь замените полученным UUID, значение этого параметра корневого раздела в /mnt/etc/fstab:
sudo vi /mnt/etc/fstab
6. Установка загрузчика
Далее нужно установить загрузчик Grub в новом Linux. Сначала примонтируйте в него папки /sys, /proc и /dev:
Затем войдите в chroot окружение:
Затем установите загрузчик на тот диск, на который вы переносили Linux, в моём случае это /dev/sdb:
sudo grub-install /dev/sdb
И осталось только создать конфигурационный файл для загрузчика:
В дистрибутивах, не основанных на Ubuntu, вместо update-grub2 можно использовать команду:
7. Перезагрузка
Выйдите из chroot-окружения командой:
Затем размотрируйте системные каталоги и ваш раздел:
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
И перезагрузите компьютер. В BIOS вашего компьютера нужно выбрать диск, на который вы переносили Linux, в качестве первого источника для загрузки. После загрузки вы будете уже в новой операционной системе и всегда сможете вернуться в старую.
В этой статье мы разобрали, как перенести Linux на другой жёсткий диск с помощью утилит tar, cp или rsync. Как видите, это достаточно просто и быстро. Ещё мы могли бы использовать утилиту dd, однако она копирует весь диск побайтово, поэтому будет работать дольше и её архивы будут занимать больше места на диске. Ещё можно воспользоваться инструментом Clonezilla.
Как установить загрузчик на нужный мне диск?
После этого через Boot Menu замечаю, что у меня загрузчик оказался на внутреннем SSD. Что я делаю не так в разметке?
Какая-то странная у тебя разметка. Если у тебя есть win 10, то твой пк поддерживает EFI, тогда почему у тебя разметка под BIOS? Сделай на диске partition table GPT и вместо «ext4 1000mb /boot» сделай «fat32 128mb /boot/efi». Но даже с тем, что у тебя сейчас, у тебя загрузчик должен быть на внешнем ssd, должно быть ты что-то напутал
У тебя EFI, это значит boot меню хранится в NVRAM твоей материнки.
man efibootmgr
Но ведь в Boot Menu отображается как будто хранится на внутреннем SSD, где и Windows стоит
Ну, как бы и вот. ESP раздел на HD2, через него грузятся обе ОС. Если хочешь таскать внешний диск вместе с загрузчиком в GPT, то как минимум создай на нем ESP. Честно говоря, хз как поведет себя GRUB когда увидит второй ESP, наверное при таком раскладе grub-install /dev/sdX проинсталлит EFI загрузчик на указанный диск, никогда не пробовал.
Чтобы понять, что не так, нужно узать, что ты хочешь. Если хочешь два независимых диска, чтобы на каждом был свой загрузчик, то ситуация точно как в этой теме.
Тебе правильно написали.
Раньше в компьютерах был BIOS, теперь UEFI.
В случае BIOS первичный код загрузчика прописывался в главную загрузочную запись загрузочного устройства. В нулевой сектор.
А остальная его часть на раздел.
В случае UEFI код загрузчика помещается не в главной загрузочной записи, а в файле на разделе специального типа.
Т.е. на диске должна быть разметка GPT, раздел с типом EFI System Partition и файловой системой FAT32 и на этой файловой системе должен быть файл по пути /EFI/Boot/bootx64.efi
В твоей разметке ты на внешнем SSD диске не создавал EFI System Partition.
Поэтому EFI файл загрузчика был помещён на EFI раздел на внутреннем SSD.
Учи матчасть, а не говори «Увы, не получилось».