Загрузка чистой системы(livecd), без использования CD или флешек

Порой бывает так - что после обновления система ведет себя неадекватно.
И так сразу не скажешь - это связано с недоделанным обновлением, или что-то в системе поломали(лось).
Также иногда хочется потыкать другой дистр, но только потыкать. Без установки его на соседний раздел, как мало это не занимало бы времени, и насколько ни к чему не обязывающей процедурой это небыло бы. Яркий пример - при переходе с gnome2 на gnome3 хочется попробовать cldx или CLsD .
@ @
В общем - я сейчас хочу рассказать о livecd или live-flash но не livecd и не live-flash :wink:
Дело в том, что gentoo linuxrc загрузчик из initrd (это такой скрипт, который разбирает большинство параметров передаваемых ядру при загрузке, и исходя из них выполняет необходимые действия) умеет монтировать iso-образ как cd-диск при помощи параметра isoboot.
@ @
С другой стороны - grub2 обладает очень приятной особенностью - он умеет подключать файлы-образы известных ему файловых систем(в т.ч. и iso9660) как loopback-устройства, и брать с них нужные файлы (в нашем случае vmlinux и initrd)
@ @
Итак, не буду больше размусоливать и перейду к описанию действий:
Для начала определимся ОТКУДА и КАКОЙ iso-образ мы собираемся грузить.
Допустим - вы сделали все по документации, и скачали образ в /var/calculate/linux
Таким образом предположим, что полное имя файла образа у вас /var/calculate/linux/cldx-11.15-i686.iso
теперь узнаем на какой партиции у вас этот образ лежит
Если при установке вы все делали по документации - то у вас получится нечто вроде
*@
df -h /var/calculate/linux/cldx-11.15-i686.iso*Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/sda5 XXXG YYYG ZZZG NN% /var/calculate
@
Я же использовал lvm, и поэтому у меня получилось слегка подругому

*@
df -h /var/calculate/linux/cldx-11.15-i686.iso*Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/mapper/VgName-var_calculate XXXG YYYG ZZZG NN% /var/calculate
@
Если же вы не выделяли отдельную партицию под /var/calculate, то результатом для вас будет нечто вроде
/dev/sda2 XXXG YYYG ZZZG NN% /
В любом случае - запоминаем значения “Файловая система” и “Cмонтировано в”
и создаем в корне этой партиции “маркер” livecd
echo calculate >/var/calculate/livecd

Теперь открываем из под root-а конфиг grub-а
nano -Ysh /boot/grub/grub.cfg
Находим строку
### END /etc/grub.d/10_linux ###
и вписываем после этой строки следующее

<code class="bash">
set calculate_iso="<полное имя файла, без точки монтирования>"
## для классического случая, когда /var/calculate в /dev/sda5
## либо моего случая с /var/calculate в LogicalVoluve
## и при полном имени файла /var/calculate/linux/cldx-11.15-i686.iso
## получим:
 # set calculate_iso="/linux/cldx-11.15-i686.iso"
## Если /var/calculate не находится в отдельной партиции
## то получаем
 # set calculate_iso="/var/calculate/linux/cldx-11.15-i686.iso"

## задаем партицию на которой находится образ
## тут проще привести пример
## /dev/sda5
 # set iso_dev="(hd0,msdos5)"
## /dev/mapper/VgName-var_calculate
 # set iso_dev="(VgName-var_calculate)"

## укажем тип fs на которой лежит образ, узнать можно
## grep /var/calculate /proc/mounts
## у меня это
 # set dev_fs="ext4"

## Все, теперь создаем пункт меню
menuentry "boot ${calculate_iso} as LiveCD" --class calculate --class gnu-linux --class gnu --class os {
  echo "Set parameters"
  set calculate="lang:ru_RU"
  set calculate="${calculate},keymap:ru_RU"
  set calculate="${calculate},timezone:Europe/Chisinau"
  ## тут задайте свое ---------------^^^
  set calculate="${calculate},video=auto"
  set calculate="${calculate},composite=off"
  ## два предыдущих параметра также укажите свои
  set calculate="calculate=${calculate}"

  set kernel_scratch="scratch"
  set kernel_docache="docache"
  ## оба предыдущих параметра по желанию
  set md_dm_dev="domdadm dolvm"
  ## это --------^^ и это -^^ задать при необходимости
  echo "Set loopback device ${calculate_iso}"
  loopback loop "${iso_dev}/${calculate_iso}"
  echo 'Load kernel...'
  linux (loop)/boot/vmlinuz "isoboot=${calculate_iso}" root=/dev/ram0 init=/linuxrc looptype=squashfs unionfs doload=squashfs,unionfs,isofs,${dev_fs} loop=/livecd.squashfs nodevfs cdroot video=uvesafb:ywrap,1024x768-32@60,mtrr:3,splash=silent,theme:tty1 console=tty1 udev noresume doscsi scandelay=3,panic=15 ${md_dm_dev} ${kernel_scratch} ${kernel_docache} ${calculate}
  echo 'Load initrd...'
  initrd (loop)/boot/initrd 
  echo 'boot...'
}
</code>

Все, можете перезагружать компьютер.
Последним пунктом в меню груба будет загрузка вашего образа

PS

Я специально предложил редактировать grub.cfg, поскольку ОСТАВЛЯТЬ ЭТОТ ПУНКТ МЕНЮ GRUB-а ОЧЕНЬ НЕБЕЗОПАСНО с liveCD очень легко получить root-а и делать с системой и данными все что угодно. А этот файл каждый раз при обновлении ядра пресоздается. И следовательно, этот пункт меню будет жить до ближайшего апдейта.

UPD
PPS
Если очень хочется сохранить этот пункт даже после обновления ядра несмотря на небезопасность (кстати, тут опыты с паролем на grub2 очень в тему), прописать это все можно в файл /boot/grub/custom.cfg (почему - думаю тем кто смотрел /boot/grub/grub.cfg объяснять не надо)

http://lugnsk.org/lugnskru/2010/12/stavim-parol-na-zagruzku-windows-xp-v-grub2.html
Вариант с установкой пароля на загрузку определенного пункта в меню груб2.

Классно, давно пора в кальке в шаблонах добавить возможность установить пароль на загрузку, особенно при вводе в домен, хеш пароля можно и из /var/calculate/calculate.env брать, вдряд ли он кому что даст.
Кстати, при использовании grub2 в pxe (я чуть раньше начинал об этом) тоже будет в тему.
Да и по этой теме тоже подойдет.

Предлагаю удобнее вариант:
запускать через виртуальную машину (KVM/VirtualBox/VMware), без перезагрузки стабильно работающей рабочей станции :wink:
Инструкция: 1. вставить виртуальный iso file, 2. запустить виртуальную машину.

Порой бывает так - что после обновления система ведет себя неадекватно. И так сразу не скажешь - это связано с недоделанным обновлением, или что-то в системе поломали(лось)…

Предлагаю удобнее вариант:
запускать через виртуальную машину (KVM/VirtualBox/VMware), без перезагрузки стабильно работающей рабочей станции :wink:

Вот и запустите в виртуалке iso-шку на машине на которой, к примеру, после неудачного обновления Х-ы не стартуют.
И потом из нее сделайте chroot в основную систему дабы разобраться чего и где не хватает.

А еще b если рама - 512-1G

@Михаил у Вас мама-папа был?.. Че наезжаем-то сразу и без повода??

Я, похоже, неправильно понял. Вы пытались запустить ISO на поломанной машине, без X-ов (т.е. “ведет себя неадекватно” ??), с минимальной конфигурацией, стоя в гамаке? Тогда - да, мой метод не подойдет. Извиняюсь.

@Михаил у Вас мама-папа был?.. Че наезжаем-то сразу и без повода??

Нет меня звери в лесу воспитали. И представляете Антон, какой глупости они научили - сначала читать пост на который отвечаешь.

Вы пытались запустить ISO на поломанной машине, без X-ов (т.е. “ведет себя неадекватно” ??), с минимальной конфигурацией, стоя в гамаке?

Да, вы видимо как постоялец на этом форуме тоже сталкивались с постами где стояла задача запуска LiveCD без CD/usb-flash. Вот хотябы тут . Вот решил расписать подробнее что к чему.

Я, похоже, неправильно понял.

Попытка извинения принимается.

Михаил Гагауз писал(а):

Попытка извинения принимается.

Это было язвическое замечание, а не извинение. Я не кашпировский, и переводить “неадекватно” в “не стартуют X-ы” не умею. И совсем не понимаю хамства с одной стороны и желание “расписать подробнее” с другой. Тяжело относиться к людям как обществу друзей которые заняты одним делом? Не лезьте в open source.

Это было язвическое замечание, а не извинение.

Ах какой же я недогадливый… ну извините, я не Кашпировский.

Тяжело относиться к людям как обществу друзей которые заняты одним делом? Не лезьте в open source

Простите, а каков ваш вклад в open source? Ну кроме этих <<дельных замечаний>> по этой, видимо <<никчемной теме>>.