Загрузка и установка РОСЫ со своего же HDD

Материал из Rosalab Wiki
Перейти к: навигация, поиск

Устанавливать РОСУ можно множеством различных способов — в частности, c ISO-образа, расположенного на вашем жестком диске. Однако описанный в нашей вики способ подразумевает также наличие на вашей машине полноценно работающей ОС, в которой надо произвести некоторые подготовительные действия перед установкой. Однако может случиться, что такой системы на машине нет, равно как нет возможности загрузиться с внешнего устройства. Именно в такой ситуации оказался недавно наш коллега Сергей Соколов, и ниже мы приводим его рассказ о том, как он из этой ситуации выпутался.

Памятник Мюнгхаузену, вытаскивающему самого себя из болота.jpg

Угораздило меня установить разработческую версию Fresh R4 себе на рабочий ноут. Прихожу утречком пораньше на работу, ставлю кучу обновлений и перезагружаюсь. А в этот момент в репозиториях, оказывается, как раз шел процесс обновления systemd и еще кучи всего системного. Короче, система не загружается, а вываливается в консоль dracut.

Так и эдак потыкался, никак система не поднимается. В общем, нужно переустанавливать. Флешки нет, CD/DVD привода нет, в офисе тоже никого нет, чтобы записать установочную флешку. Ну или представьте ситуацию, что система умерла где-нибудь в отпуске, а ноут вот прямо сейчас очень нужен.

Решил я малость поэкспериментировать с загрузкой с ISO-образа, расположенного на моем SSD/HDD носителе, да еще и на том самом, на который будет устанавливаться система.

# fdisk -l /dev/sda

Disk /dev/sda: 480.1 GB, 480103981056 bytes, 937703088 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1            2048    33556479    16777216   82  Linux своп / Solaris
/dev/sda2        33556480    96471039    31457280   83  Linux
/dev/sda3        96471040   937703087   420616024    5  Расширенный
/dev/sda5        96473088   937703087   420615000   83  Linux

В общем-то, тут

  • /dev/sda1 — своп раздел который у меня когда-то был, но сейчас просто отключен,
  • /dev/sda2 — мой рут,
  • /dev/sda5/home

От системы у меня в наличии только initrd и вываливается dracut

Вот его-то оказалось вполне достаточно:

mkdir /mnt
mount /dev/sda2 /mnt
mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /mnt/dev/pts
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount /dev/sda5 /mnt/home
chroot /mnt
dd if=/home/path/to/ROSA.FRESH.KDE.R3.x86_64.iso of=/dev/sda1 bs=8M
touch /boot/resque.iso
vi /boot/grub2/grub.cfg

В конфигурационном файле grub находим строку содержащую rescue.iso и приводим эту часть файла к следующему виду:

### BEGIN /etc/grub.d/43_resque ###
if [ -f  /boot/resque.iso -o -f /boot/sgb.iso ]; then
submenu 'Repair tools' {
if [ -f  /boot/resque.iso ]; then
menuentry "Boot rescue CD" {
linux (hd0,1)/isolinux/vmlinuz0 boot=live iso_filename=/dev/sda1 root=live:/dev/sda1 rootfstype=auto ro rd.live.image rhgb splash=silent logo.nologo rd.luks=0 rd.md=0 rd.dm=0
initrd (hd0,1)/isolinux/initrd0.img
}
fi

Синкаем файловую систему командой sync и перезагружаемся. Теперь у нас есть recovery раздел, с которого без проблем устанавливается система. Главное здесь — не запускать форматирование раздела sda1 при установке системы.


Кстати, мы внутри неоднократно обсуждали, нужен ли при загрузке опциональный режим «восстановления через переинсталляцию», а именно:

  • В инсталляторе предложить пользователю сохранить на /boot (если он создан) или /root- разделе собственно сам ISOшник, в виде файла installer.iso, с которого проходит инсталляция.
    • Да, в /boot его положить лучше, ибо тогда можно будет переинсталлировать и полностью убитые /root-разделы, но это отдельный UX-вопрос, как предложить это проще, не перегружая и так непростой инсталлятор. Пока можно просто предложить такую опцию, интерфейсно аналогично как в конце инсталляции предлагается выбрать swap-файл, если swap-раздела не найдено — т.е. еще один вопрос в конце инсталляции.
  • В GRUB-меню, в раздел Troubleshooting добавить и пункт «Переинсталляция», которный собственно и даст возможность переинсталлировать базовую систему (для начала без специальных типа сохранения /etc/passwd, и прочего) — т.е. опция скорее для не очень простых пользователей, хотя, если это ноутбук, который использует один человек, то, т.к. переформатирования /home не будет, то средней вменяемости пользователь уже сможет себе восстановить систему практически без приседаний.

Вопрос, интересно ли это нашим пользователям, иметь возможность держать полтора гига на винте, под возможность быстрой базовой переинсталляции?

Идея «Troubleshooting-восстановление через переинсталляцию»:

Отличная37
90%
Хорошая0
0%
Плохая (поясню почему)4
10%

[ Хронологический вид ]Комментарии

Так можно и OEM Install собрать.

Будет очень хорошо, если получится система переустановки как в Ноутбуках с Windows - на уровне Bios нажал на пункт "переустановка" и все новое. Но для этого надо iso файл держать не в /Boot или в /, а в отдельном загрузочном (может даже скрытом разделе) + позволить Root обновлять файл образа (это ХP больше 10 лет "не стареет" Linux так не сможет), чтобы при переустановке можно было установить актуальную версию "с чистого листа" (даже с форматированием /boot, / и Home).

Мы хотим пока начать с малого:

  • понять, действительно ли это многих заинтересует, или интересно считанным пользователям (ведь есть сотни проблем, затрагивающих очень большую аудиторию, а ресурсы наши ограничены)
  • если начнем решать — попробуем с простого, т.е. просто ISO-файл на отдельном разделе, /boot, /root, /rescue, и обновление этого файла оставить пользователю (т.е. при выходе нового релиза именно пользователь, а не пакетная система будет заменять этот файл). На самом деле, даже это надежно сделать будет непросто.
  • И без хитростей (спасение настроек, аккаунтов и т.п.). А дальше посмотрим, нужно ли это или «нинужно» — при вездесущем интернете может это будет только потеря драгоценного SSD-гигабайтов.

как раз в таком виде как вы предлагаете (если начнем решать — попробуем с простого, т.е. просто ISO-файл на отдельном разделе, /boot, /root, /rescue, и обновление этого файла оставить пользователю (т.е. при выходе нового релиза именно пользователь, а не пакетная система будет заменять этот файл). На самом деле, даже это надежно сделать будет непросто.) конечно оно и не нужно. В этой функции будет смысл если с ней сможет справиться мало мальски продвинутый пользователь, например вариант предложенный Ben Aceler

Войдите, чтобы комментировать.