Загрузка и установка РОСЫ со своего же HDD
Устанавливать РОСУ можно множеством различных способов — в частности, 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, и обновление этого файла оставить пользователю (т.е. при выходе нового релиза именно пользователь, а не пакетная система будет заменять этот файл). На самом деле, даже это надежно сделать будет непросто.) конечно оно и не нужно. В этой функции будет смысл если с ней сможет справиться мало мальски продвинутый пользователь, например вариант предложенный Ben Aceler
Войдите, чтобы комментировать.