Страницы

Поиск по вопросам

Показаны сообщения с ярлыком grub. Показать все сообщения
Показаны сообщения с ярлыком grub. Показать все сообщения

вторник, 25 февраля 2020 г.

Как загрузить grub2 через pxe?

#linux #grub #pxe


Есть ли способ подгрузить на машину grub2 через pxe, по типу того, как подгружается
pxelinux?
    


Ответы

Ответ 1



Необходимо создать загрузочный образ grub2 для pxe. Пример: grub-mkimage -c grub.cfg -d /usr/local/lib/grub/i386-pc --format=i386-pc-pxe \ -o /tftpboot/grub.pxe pxe pxechain tftp http net \ part_bsd part_gpt part_msdos boot biosdisk ext2 xfs lvm drivemap \ gzio xzio lzopio cpio \ loopback linux iso9660 udf memdisk chain \ minicmd extcmd \ ahci ehci ohci uhci \ acpi lsacpi pci setpci reboot halt \ help echo gfxmenu gfxterm font date configfile ls search vga vbe png video videoinfo loadenv grub.cfg - файл конфигурации загрузчика Настройка DHCP и tftpd стандартно для любой аналогичной PXE загрузки

четверг, 23 января 2020 г.

Virtualbox и исчезновение /boot/grub

#linux #ubuntu #virtualbox #grub


Есть Windows 7 + Virtualbox и установленный Ubuntu Desktop 14.
Эпизодически создаются снапшоты от Vbox. В Ubuntu постоянно происходят обновление
системы, и в какой-то момент при следующей загрузке Ubuntu выдает ошибку 
error: file '/boot/grub/i386-pc/normal.mod' not found.
По-настоящему, папка /boot/ пустая вообще.

Я пытаюсь переключиться на предыдущий снапшот, но ошибка та же, и даже самый первый
образ тоже сломанный. То есть бэкапы я зря делал. За год такое уже повторилось 3 раза.


Почему могли исчезнуть данные из /boot/ ?
Почему сломаны все раннее сделанные снапшоты и оригинал?
Как можно это исправить, не начиная все с нуля?

    


Ответы

Ответ 1



1, 2. похоже, что в каталог /boot у вас монтировался раздел, находящийся на другом виртуальном (или реальном) блочном устройстве (т.н. диске). 3. наиболее простой путь: найти «пропавший» раздел. более сложный: загрузить эту виртуальную машину с какого-нибудь другого образа (подойдёт практически любой установочный/live/«спасательный»/и т.п. от любого дистрибутива gnu/linux), подлкючив его как дополнительное блочное устройство примонтировать все необходимые разделы, начиная с корневого, в каталог (к примеру) /mnt скачать и скопировать в /mnt файл с пакетом с подходящей версией linux-а сделать chroot /mnt там, в chroot-е, установить пакет с linux-ом: dpkg -i файл на всякий случай (по идее эта команда должна выполниться в процессе установки пакета с linux-ом) выполнить ещё и update-grub выйти из chroot-а отмонтировать то, что монтировали, перезагрузить виртуальную машину без вспомогательного образа

пятница, 10 января 2020 г.

Установить grub без замены загрузчика

#linux #windows #grub #dual_boot


После установки Windows первичным загрузчиком стал его собственный.
Имеется Linux Mint, поэтому нужно иметь grub.

Однако, вместо стандартного варианта, при котором первичным загрузчиком становится
grub, я хочу установить grub на отдельный раздел и прописать в виндовом загрузчике
команду для передачи управления grub'у. Естественно, виндовый загрузчик должен остаться
первичным.

Как установить grub, чтобы получилась такая конфигурация?
    


Ответы

Ответ 1



предуведомление: далее изложенное весьма упрощено и относится только к «традиционной» (или «старой») схеме разбивки диска под названием dos partition table (mbr-based partitioning). хотя, вероятно, отчасти справедливо и для guid partition table (gpt). но точно не относится к unified extensible firmware interface (uefi). упрощённо говоря, bios загружает в память первые 512 байт с указанного в его настройках блочного устройства, и передаёт управление этому «кусочку кода» (в терминах grub-а это называется «загрузчик первой стадии» — stage 1 loader). помимо исполняемого кода там есть и ещё кое-какая необходимая этому самому коду информация. понятно, что в такой мизерный объём кода что-то разумное уместить довольно сложно, и, фактически, этот код всего лишь загружает другую, значительно бо́льшую порцию кода (stage 2), и передаёт управление ей. откуда именно брать эту вторую порцию, «загрузчик первой стадии» узнаёт из той самой информации, которая записана рядом с ним в те самые 512 байт. в числе прочего там записаны, как минимум: адрес блочного устройства (ведь stage 2 может располагаться и на другом б.у.) и адрес сектора(-ов), который(-е) надо загружать в память. почему адрес сектора, а не имя файла? потому что в 512 байт невозможно «уложить» код, который умел бы работать с файловой системой. кстати, к слову: в случае перезаписи файла со stage2 его физическое местоположение с большой вероятностью изменится, и, соответственно, потребуется и корректировка содержимого тех самых 512 байт «загрузчика первой стадии». а вот уже тот код, что загрузился из stage 2, «понимает» и файловые системы, и конфигурационные файлы может прочитать, и вывести диалог пользователю, основанный на этих конфигурационных файлах, и выбранную программу, выполняющую функции ядра, загрузить (ту, загружать которую «обучен»: ntoskrnl.exe, linux и т.д. и т.п.). stage2-загрузчик от компании ms, понятно, не «обучен» загружать программу linux, а stage2-загрузчик grub (равно как и lilo и прочие) не «обучен» загружать ntoskrnl.exe. но все они могут загрузить другие stage1-загрузчики (и даже stage2-загрузчики) и передать управление им. а далее можно говорить лишь о степени автоматизации настройки этого процесса. в случае загрузчика от компании ms, понятно, никакой автоматизации настройки не предусмотрено: облегчение процесса использования «чужой» операционной системы — это «удар ниже пояса», т.е., по кошельку. как говорится, «это просто бизнес, ничего личного». для настройки нужно разжиться «загрузчиком первой стадии», записать эти 512 байт в файл (например, c:\bootsect.aln) и добавить строку в секцию operating systems конфигурационнога файла загрузчика c:\boot.ini примерно такого содержания: c:\bootsect.aln="alien operating system" не забудьте ещё каждый раз вручную обновлять содержимое этого 512-байтного файла после обновления stage2-загрузчика, на адреса секторов с которым он (файл) должен ссылаться! существуют, конечно, всякие «загрузочные менеджеры» (типа упомянутого в комментариях easybcd), а вот реализован ли хоть в каком-либо из них автоматический учёт обновления в stage2-файле того же grub-а, я не знаю. но подозреваю, что вряд ли (учитывая, во-первых, что разедов с grub-ами может быть значительно больше одного, а во-вторых, что «инициатива обновления» приходит со стороны grub-а, который, вполне естественно, вряд ли подозревает о существовании каких-либо «менеджеров загрузки»). в случае загрузчика grub подход диаметрально противоположен: всё (что возможно) сделано для упрощения настройки процесса загрузки других операционных систем. в «обычных условиях» всё вообще происходит «автомагически»: в процессе установки программы grub (и при обновлении файлов, содержащих stage2) вызывается программа update-grub (входит в состав пакета grub), которая (как правило, вполне удачно) «находит» на блочных устройствах и их разделах другие загрузчики, и добавляет пункты с ними в загрузочное меню. какой путь вам больше подходит — выбирайте сами. p.s. пожалуй, стоит отметить, что код «загрузчика второй стадии» программы grub давно разросся до такой степени, что разработчикам пришлось создать (правда, не только по этой причине) промежуточный загрузчик (который назвали stage 1.5). сути это не меняет, но про стадии 1, 1.5 и 2 написано даже в википедии, и упоминание будет уместным. дополнение по поводу того, куда ставить 512 байт stage1, чтобы не затереть mbr: ставьте не в mbr диска, а в vbr раздела. там есть достаточно места. установщики загрузчиков об этом знают, и умеют с ним обращаться.

Ответ 2



Всё очень просто - ntldr, используемый по сей день, не умеет читать ext4 и прочие ФС, которые обычно используются для grub. Нужно грузить grub через ntldr - пожалуйста, выводите grub на раздел с fat32 или ntfs. А установить grub без перезаписи бут-сектора реально, но сложно, если используется debian/ubuntu, т. к. в их пакетах прописана перезапись бут-сектора при установке grub'a.

понедельник, 6 января 2020 г.

Поставить третью систему

#linux #windows #grub


Есть Windows 7 и Linix. Хочу дополнительно к ним поставить Windows 10.

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

Повторю, что в итоге я хочу получить Win7 + Linux + Win10.
    


Ответы

Ответ 1



После того, как вы установите Windows 10 (не повреждая файлы других ОС) нужно будет загрузиться с Linux и выполнить boot-repair в терминале. Не зависимо от того, увидит десятка семёрку или нет (хотя по идее должна увидеть), GRUB восстановит доступ ко всем трём ОС.

Ответ 2



Я думаю что надо поставить 10, а потом с флешки запилить grub и настроить его. Мне кажется так будет лучше.

четверг, 26 декабря 2019 г.

Как установить AltLinux 7.0.5 из .iso при помощи GRUB2?

#linux #grub #iso_образ #altlinux


Что надо написать в конфиг grub2, чтобы загрузился дистрибутив AltLinux 7.0.5 ?

Понятно, что нужно указать loop для grub.

menuentry "AltLinux 7.0.5"{
        insmod loopback
#       search --set --fs-uuid b316cbc2-4695-480c-b9b9-a555350d458a
        set isofile=/iso/altlinux-7.0.5-school-master-x86_64-ru-install-dvd5.iso
        loopback loop (${root})${isofile}
        linux (loop)/syslinux/alt0/vmlinuz iso-scan/filename=$isofile
        initrd (loop)/syslinux/alt0/full.cz
}


Непонятно, какие параметры передавать в строке параметров ядра,
так как для этого надо знать, как собирался full.cz (=initrd от altlinux) и какие
параметры он понимает.

Такая загрузка совершенно точно возможна в Ubuntu, в Debian и в Fedora.

вот такой же вопрос, только он там не отвечен:
https://www.linux.org.ru/forum/linux-install/5934581
вот этот вопрос в виде обобщенном для любых дистрибутивов:
Как загрузиться с iso?
(отвечен на примере Ubuntu)

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


Ответы

Ответ 1



menuentry "AltLinux 7.0.5, simply install" { set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 insmod xfs set bootpart=uuid:df46d821-e7f9-4e35-bbd2-728bdce8d89a set isodir=/iso/Alt705simple set isofile=altlinux-7.0.5-simply-x86_64-install-dvd5.iso loopback loop (${root})${isodir}/${isofile} linux (loop)/syslinux/alt0/vmlinuz automatic=method:disk,${bootpart},directory:${isodir}/${isofile} ramdisk_size=183210 changedisk lang=ru_RU splash noeject xdriver=auto quiet=1 showopts initrd (loop)/syslinux/alt0/full.cz }

Ответ 2



Пример моего 40_custom menuentry "AltLinux 7.0.5, simply install" { insmod loopback set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 insmod xfs set bootpart=uuid:603ef866-453a-4c27-9799-3f03e6c167de set isodir=/iso set isofile=altlinux-7.0.5-simply-x86_64-install-dvd5.iso loopback loop (${root})${isodir}/${isofile} linux (loop)/syslinux/alt0/vmlinuz automatic=method:disk,${bootpart},directory:${isodir}/${isofile} ramdisk_size=183210 changedisk lang=ru_RU splash noeject xdriver=auto quiet=1 showopts initrd (loop)/syslinux/alt0/full.cz } menuentry "Alt Linux 7.0.5 Simply failsafe" { insmod loopback set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 insmod xfs set bootpart=uuid:603ef866-453a-4c27-9799-3f03e6c167de set isodir=/iso set isofile=altlinux-7.0.5-simply-x86_64-install-dvd5.iso loopback loop (${root})${isodir}/${isofile} linux (loop)/syslinux/alt0/vmlinuz lowmem automatic=method:disk,${bootpart},directory:${isodir}/${isofile} ramdisk_size=183210 showopts noapic pci=nomsi acpi=off noload=ahci initrd (loop)/syslinux/alt0/full.cz } menuentry "Alt Linux 7.0.5 Simply LiveCD" { insmod loopback set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 insmod xfs set bootpart=uuid:603ef866-453a-4c27-9799-3f03e6c167de set isodir=/iso set isofile=altlinux-7.0.5-simply-x86_64-install-dvd5.iso loopback loop (${root})${isodir}/${isofile} linux (loop)/syslinux/alt0/vmlinuz lowmem lang=ru_RU automatic=method:disk,${bootpart},directory:${isodir}/${isofile} fastboot splash=silent splashcount=17 stagename=live showopts noeject noprompt -- initrd (loop)/syslinux/alt0/full.cz } menuentry "Alt Linux 7.0.5 Simply rescue" { insmod loopback set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 insmod xfs set bootpart=uuid:603ef866-453a-4c27-9799-3f03e6c167de set isodir=/iso set isofile=altlinux-7.0.5-simply-x86_64-install-dvd5.iso loopback loop (${root})${isodir}/${isofile} linux (loop)/syslinux/alt0/vmlinuz lowmem automatic=method:disk,${bootpart},directory:${isodir}/${isofile} ramdisk_size=183210 fastboot stagename=rescue showopts initrd (loop)/syslinux/alt0/full.cz } Образ лежит в отдельном разделе /boot (ext2/3/4) UUID которого указан в скрипте, в папке /iso. Подставьте свои значения и будет вам щастие. Единственный момент - в режиме Live CD у меня не работала ВаФля.

суббота, 7 декабря 2019 г.

Перезагрузка из Windows в Linux

#linux #windows #grub #поиск_программ #dual_boot


Установлены две системы - Windows 7 и Linux Mint 17. Загрузчик - grub, по умолчанию
загружает Windows (и это так и надо).

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

Возможно ли как-то в виндоусе организовать автоматическую перезагрузку в линукс,
чтобы не надо было руками ничего выбирать в меню?

Драйвер файловой системы установлен и файлы линуксового раздела доступны, однако,
по умолчанию, это readonly-доступ. Изменить можно, но что-то мне подсказывает, что
неспроста он readonly. Есть ли варианты кроме разрешения доступа на запись и изменения
конфигурации grub'а перед перезагрузкой с последующим восстановлением конфигурации
из Linux'а? Насколько плоха такая идея? Или как лучше всего её реализовать?
    


Ответы

Ответ 1



например, можно перенести содержимое каталога /boot в раздел с файловой системой, с которой отлично работают и ms/windows и gnu/linux — msdos/fat (оно же fat32, оно же vfat и т.п.). тогда можно будет устанавливать в файле /boot/grub/grubenv переменной окружения next_entry нужный пункт из загрузочного меню (нумерация начинается с нуля). важный момент: этот файл должен быть размером ровно 1024 байта. как именно должно выглядеть содержимое файла с новой командой, можно выяснить «на кошках», передав первым параметром путь к какому-нибудь тестовому файлу. вот эта команда установит значение переменной next_entry: $ grub-editenv /tmp/file set next_entry=1 а вот эта — удалит упоминание данной переменной: $ grub-editenv /tmp/file unset next_entry p.s. после переноса содержимого надо, естественно, добавить строчку в /etc/fstab для монтирования раздела, куда вынесено содержимое каталога /boot. примерно так: /dev/раздел /boot auto defaults 0 0 или так: UUID="uuid-раздела" /boot auto defaults 0 0 uuid-раздела можно узнать из вывода команды: $ sudo blkid /dev/sda1: UUID="7ff90d2c-656f-4d31-bde3-6aa0f57c57e1" TYPE="ext2" /dev/sdb1: UUID="BB52-4408" TYPE="vfat" PARTUUID="e5311d67-01" обновление. протестировал. вполне уверенно срабатывает «одноразовая» функциональность: после загрузки значение переменной next_entry в файле /boot/grub/grubenv было благополучно «затёрто».

воскресенье, 1 декабря 2019 г.

Как восстановить GRUB?

#linux #windows #grub #boot #dual_boot


Стоял Linux Mint и Windows 7.
Слетела винда.
Переустановил  Windows и затерся grub.  Можно ли без переустановки восстановить загрузочный
сектор для linux ?
    


Ответы

Ответ 1



Нужно загрузиться с LiveCD, далее смонтировать корневой раздел установленной Linux системы, например, в папку /mnt. Станем суперпользователем $ sudo su Узнаем какие Linux увидел разделы и файловые системы # fdisk -l /dev/sda # blkid # lsblk Монтирование корня # mount /dev/sda3 /mnt Где sda3 - раздел с корневой файловой системой установленного Linux. Если содержимое /boot было расположено в отдельном от корневой файловой системы разделе, его тоже необходимо монтировать. Но в начале конечно всегда монтируется корень, после уже файловая система с boot в /mnt/boot Необходимо, если после монтирования корня каталог /boot установленной системы пуст. Пример монтирования /boot. # mount /dev/sda4 /mnt/boot/ Потом выполнить монтирование виртуальных ФС # mount --bind /dev /mnt/dev # mount --bind /dev/pts /mnt/dev/pts # mount --bind /proc /mnt/proc # mount --bind /dev /mnt/dev # mount --bind /sys /mnt/sys Сменим текущий корень # chroot /mnt Вы окажетесь уже в вашей старой системе, после этого выполнить # grub-install # update-grub2 Выйдем из корня установленной системы # exit Первая команда установит загрузчик stage1 grub2 в MBR, вторая обновит список загрузки - выполнит поиск систем и добавит их в меню загрузки. Далее необходимо размонтировать все файловые системы в обратном порядке # umount /mnt/sys # umount /mnt/dev # umount /mnt/proc # umount /mnt/dev/pts # umount /mnt/dev # umount /mnt/ Далее выключите компьютер. Включите. Установите загрузку с жесткого диска. # reboot

Ответ 2



Это самый безопасный метод востановления GRUB. Для него не нужно chroot-окружение, даже не нужны блочные устройства из /dev. Пояснение: GRUB определяет жесткие диски, подсоединеные к интерфейсам SATA и IDE, как (hdномер устройства); нумерация начинается с нуля. Раздел определяется следующим номером после номера устройства. Примеры: (hd0) — 1-й жесткий диск целиком; (hd0,0) — 1-й раздел на 1-ом диске; (hd0,1) — 2-й раздел на 1-ом диске; и так далее. GRUB2 начинает нумеровать раздела с 1, а устройства по прежнему с нуля.* Внимание: GRUB позволяет получить эту и другую функциональность ещё до загрузки OS. Во избежания взлома надо установить глобальный пароль. Для получения дальнейших подробностей смотрите документацию к загрузчику. Порядок действий: Грузим GNU/Linux с CD или USB. Запускаем от root-а GRUB в режиме shell-оболочки: # grub Далее определяем как определено устойство grub-ом, для этого вводим следующую команду: если /boot — отдельная ФС: # find /grub/stage1; если нет: find /boot/grub/stage1. GRUB в ответ выведит раздел на котором этот файл. Он та и нужен для следующих манипуляций. Сказать GRUB'у где boot-раздел/каталог # root (номер_нужного_диска,номер_нужного_раздела) Пример: # root (hd0,0) Указать устройство для записи в MBR первого сектора: # setup (нужный_раздел) Пример: # setup (hd0) Всё сделано. GRUB настроил MBR на загрузку себя с нужного вам раздела. Выходим из GRUB: # quit

среда, 17 июля 2019 г.

при очередной загрузке Ubuntu появилось меню GNU GRUB

Всем привет! При очередной загрузке Ubuntu 16.04 появилось меню GNU GRUB В нем выбираю первый пункт, этот выбор приводит к:
Подскажите, как мне вернуть работоспособоность системы.


Ответ

Почему появился этот экран?
Во время работы OS были обнаружены ошибки на диске (ошибки файловой системы). И система "просит", чтобы вы провели сканирование диска 'fsck' вручную. Это нормальная ситуация, OS пытается избежать потери данных.
Как решить?
можно подключить диск к другому серверу и протеcтировать можно использовать Ubuntu LiveCD использовать RecoveryMode или Single user mode
Важно! Причиной возникающих ошибок может быть неисправность диска и в первую очередь нужно убедиться, что диск исправен.
Если это ваша основная система - выполните резервное копирование диска или ключевых данных.
p.s. Подобные ситуации сильно напрягают поначалу, но помогают лучше разобраться в логике работы и понять алгоритм восстановления системы.

понедельник, 15 июля 2019 г.

GRUB не отображается на компьютере с UEFI

Всем доброго времени суток! Есть комп с UEFI и предустановленной Windows 7. Установлена Linux из-под live-usb (разделы размечены автоматом, gpt). В итоге загрузчик grub отображается только при подключении live-usb в режиме 'Security Boot - Enabled' и только как командная строка. Раздел с Linux из-под стандартного загрузчика, конечно, не виден (только usb, lan, hdd с Windows), и как загрузиться с него - непонятно. Были попробованы разные варианты решения, как, например, из-под терминала на live-usb:
$ sudo mount /dev/sda6 /mnt $ sudo grub-install —root-directory=/mnt /dev/sda $ sudo update-grub
А также из-под терминала grub2:
$ set root=(hd1,gpt6) $ linux (hd1,gpt6)/boot/vmlinuz-3.<...>-generic root=/dev/sda6 $ initrd (hd1,gpt6)/boot/initrd.img-3.<...>-generic $ boot
Однако к желаемому результату (отображению grub'а в виде списка ОСей и без подключения флэшки) они не привели. Что посоветуете еще попробовать предпринять?


Ответ

Все оказалось просто: для того, чтобы grub2 благополучно установился, необходимо выставить перед установкой Linux 'UEFI only'-mode.

вторник, 4 июня 2019 г.

Как загрузить grub2 через pxe?

Есть ли способ подгрузить на машину grub2 через pxe, по типу того, как подгружается pxelinux?


Ответ

Необходимо создать загрузочный образ grub2 для pxe. Пример:
grub-mkimage -c grub.cfg -d /usr/local/lib/grub/i386-pc --format=i386-pc-pxe \ -o /tftpboot/grub.pxe pxe pxechain tftp http net \ part_bsd part_gpt part_msdos boot biosdisk ext2 xfs lvm drivemap \ gzio xzio lzopio cpio \ loopback linux iso9660 udf memdisk chain \ minicmd extcmd \ ahci ehci ohci uhci \ acpi lsacpi pci setpci reboot halt \ help echo gfxmenu gfxterm font date configfile ls search vga vbe png video videoinfo loadenv
grub.cfg - файл конфигурации загрузчика
Настройка DHCP и tftpd стандартно для любой аналогичной PXE загрузки

пятница, 15 марта 2019 г.

Virtualbox и исчезновение /boot/grub

Есть Windows 7 + Virtualbox и установленный Ubuntu Desktop 14. Эпизодически создаются снапшоты от Vbox. В Ubuntu постоянно происходят обновление системы, и в какой-то момент при следующей загрузке Ubuntu выдает ошибку error: file '/boot/grub/i386-pc/normal.mod' not found. По-настоящему, папка /boot/ пустая вообще.
Я пытаюсь переключиться на предыдущий снапшот, но ошибка та же, и даже самый первый образ тоже сломанный. То есть бэкапы я зря делал. За год такое уже повторилось 3 раза.
Почему могли исчезнуть данные из /boot/ ? Почему сломаны все раннее сделанные снапшоты и оригинал? Как можно это исправить, не начиная все с нуля?


Ответ

1, 2. похоже, что в каталог /boot у вас монтировался раздел, находящийся на другом виртуальном (или реальном) блочном устройстве (т.н. диске).
3. наиболее простой путь: найти «пропавший» раздел.
более сложный:
загрузить эту виртуальную машину с какого-нибудь другого образа (подойдёт практически любой установочный/live/«спасательный»/и т.п. от любого дистрибутива gnu/linux), подлкючив его как дополнительное блочное устройство примонтировать все необходимые разделы, начиная с корневого, в каталог (к примеру) /mnt скачать и скопировать в /mnt файл с пакетом с подходящей версией linux-а сделать chroot /mnt там, в chroot-е, установить пакет с linux-ом: dpkg -i файл на всякий случай (по идее эта команда должна выполниться в процессе установки пакета с linux-ом) выполнить ещё и update-grub выйти из chroot-а отмонтировать то, что монтировали, перезагрузить виртуальную машину без вспомогательного образа

вторник, 26 февраля 2019 г.

Поставить третью систему

Есть Windows 7 и Linix. Хочу дополнительно к ним поставить Windows 10.
Вопрос, надо ли что-то делать с grub'ом переду установкой Win10? Или можно по стандартной схеме просто поставить Win10, затем загрузиться с LiveUSB, откуда установить и настройть grub? Или же следует сначала откатиться от grub'а до виндового загрузчика, чтобы Win10 при установке смог его определить?
Повторю, что в итоге я хочу получить Win7 + Linux + Win10.


Ответ

После того, как вы установите Windows 10 (не повреждая файлы других ОС) нужно будет загрузиться с Linux и выполнить boot-repair в терминале. Не зависимо от того, увидит десятка семёрку или нет (хотя по идее должна увидеть), GRUB восстановит доступ ко всем трём ОС.

четверг, 29 ноября 2018 г.

Как установить AltLinux 7.0.5 из .iso при помощи GRUB2?

Что надо написать в конфиг grub2, чтобы загрузился дистрибутив AltLinux 7.0.5 ?
Понятно, что нужно указать loop для grub.
menuentry "AltLinux 7.0.5"{ insmod loopback # search --set --fs-uuid b316cbc2-4695-480c-b9b9-a555350d458a set isofile=/iso/altlinux-7.0.5-school-master-x86_64-ru-install-dvd5.iso loopback loop (${root})${isofile} linux (loop)/syslinux/alt0/vmlinuz iso-scan/filename=$isofile initrd (loop)/syslinux/alt0/full.cz }
Непонятно, какие параметры передавать в строке параметров ядра, так как для этого надо знать, как собирался full.cz (=initrd от altlinux) и какие параметры он понимает.
Такая загрузка совершенно точно возможна в Ubuntu, в Debian и в Fedora
вот такой же вопрос, только он там не отвечен: https://www.linux.org.ru/forum/linux-install/5934581 вот этот вопрос в виде обобщенном для любых дистрибутивов: Как загрузиться с iso? (отвечен на примере Ubuntu)
Этот вопрос социально значимый и глобального масштаба, так как флешки - это дополнительные материальные расходы, а возможность устанавливать без них увеличивает степень проникновения Linux в бедных регионах.


Ответ

menuentry "AltLinux 7.0.5, simply install" { set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 insmod xfs set bootpart=uuid:df46d821-e7f9-4e35-bbd2-728bdce8d89a set isodir=/iso/Alt705simple set isofile=altlinux-7.0.5-simply-x86_64-install-dvd5.iso loopback loop (${root})${isodir}/${isofile} linux (loop)/syslinux/alt0/vmlinuz automatic=method:disk,${bootpart},directory:${isodir}/${isofile} ramdisk_size=183210 changedisk lang=ru_RU splash noeject xdriver=auto quiet=1 showopts initrd (loop)/syslinux/alt0/full.cz }

вторник, 9 октября 2018 г.

Как восстановить GRUB?

Стоял Linux Mint и Windows 7. Слетела винда. Переустановил Windows и затерся grub. Можно ли без переустановки восстановить загрузочный сектор для linux ?


Ответ

Нужно загрузиться с LiveCD, далее смонтировать корневой раздел установленной Linux системы, например, в папку /mnt
Станем суперпользователем
$ sudo su
Узнаем какие Linux увидел разделы и файловые системы
# fdisk -l /dev/sda # blkid # lsblk
Монтирование корня
# mount /dev/sda3 /mnt
Где sda3 - раздел с корневой файловой системой установленного Linux.
Если содержимое /boot было расположено в отдельном от корневой файловой системы разделе, его тоже необходимо монтировать. Но в начале конечно всегда монтируется корень, после уже файловая система с boot в /mnt/boot Необходимо, если после монтирования корня каталог /boot установленной системы пуст.
Пример монтирования /boot.
# mount /dev/sda4 /mnt/boot/
Потом выполнить монтирование виртуальных ФС
# mount --bind /dev /mnt/dev # mount --bind /dev/pts /mnt/dev/pts # mount --bind /proc /mnt/proc # mount --bind /dev /mnt/dev # mount --bind /sys /mnt/sys
Сменим текущий корень
# chroot /mnt
Вы окажетесь уже в вашей старой системе, после этого выполнить
# grub-install # update-grub2
Выйдем из корня установленной системы
# exit
Первая команда установит загрузчик stage1 grub2 в MBR, вторая обновит список загрузки - выполнит поиск систем и добавит их в меню загрузки.
Далее необходимо размонтировать все файловые системы в обратном порядке
# umount /mnt/sys # umount /mnt/dev # umount /mnt/proc # umount /mnt/dev/pts # umount /mnt/dev # umount /mnt/
Далее выключите компьютер. Включите. Установите загрузку с жесткого диска.
# reboot