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

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

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


Угораздило меня установить разработческую версию 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/sad2 /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 при установке системы.

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

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

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

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

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

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

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