Установка через GRUB

Здравствуй, сообщество.

Дано: OpenSuse, Win7, Grub v0.97
Задача: установить Calculate без использования внешних носителей (USB, CD, DVD)

И еще. Если уже есть установленная Calculate. Можно с помощью dd скопировать раздел. Работать будет?

Помогите.

menu.lst (1.81 KB)

Эге-ге-гееееееееей!!!

Кто-то с VirtualBox установленную систему переносил копированием. Конечно же всё можно, только сами поймите, это требует проведения похожего эксперимента, чтобы Вам досканально всё описать. Думаю поэтому никто и не ответил. Опять же, никто не знает Вашего уровня подготовки.

Вариант #1

PXE. Это если есть сервер.

Вариант #2:

в opensuse ядро какой версии?

Общий способ установки из любого линукса:
скачать iso
смонтировать iso
из смонтировать livecd.squashfs
выполнить следующие действия:

<code class="bash">
SQUASH_DIR=<путь куда смонтировали образ без завершающего слэша>
mkdir ${SQUASH_DIR}_rw
cp -a ${SQUASH_DIR}{,_rw}/boot
cp -a ${SQUASH_DIR}{,_rw}/etc
cp -a ${SQUASH_DIR}{,_rw}/var
mount -t {,,${SQUASH_DIR}/}proc
for d in sys dev{,/pts,/shm} ${SQUASH_DIR}_rw/{boot,etc,var}; do
    mount -v --bind {,${SQUASH_DIR}}/$d
done
## если следующая команда завершится неудачей,
## значит вам не повезло и у вас слишком старое ядро
chroot ${SQUASH_DIR} /bin/bash
## Если все в порядке, то обновляем окружение и приступаем к работе
env-update && source /etc/profile && PS1="(chroot)${PS1}"
</code>

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

Вариант #3:

Если нет свободного раздела, но существующие не заняты, а также есть не менее 2G памяти, то можно загрузиться непосредственно из iso(gentoo, а значит и calculate это поддерживают) с дальнейшим отвязыванием от всех носителей(это необходимо чтоб gparted мог нормально “играть” с размерами партиций).
Но об этом напишу попозже.

Через qemu/Vbox вполне можно поставить.

Желательно, чтоб при этом был свободный раздел заранее подготовлен. В крайнем случае можно прямо в виртуалке создать оный на физическом диске (на ваш страх и риск!).

Затем просто ставите систему как обычно на этот раздел. Можно без загрузчика и затем вручную прописать систему в ваш grub. Или воспользоваться версией grub из кальки.

Я похожим образом ставил в том числе винду - проблем никаких не возникло.

Собственно вариант с grub-ом:
Находим любую партицию со свободным местом под исошку на файловой системе не ntfs(для grub2 можно и ntfs) если есть opensuse, скорее всего /home отдельной партицией.
Монтируем ее если не примонтирована.

в корне подмонтированой партиции создаем директорию, допустим ${MOUNTPOINT}/cldg

копируем в нее нужный iso-образ.
Из образа из /boot вытаскиваем в ${MOUNTPOINT}/cldg/boot вытаскиваем vmlinuz и initrd

В grug:0 добавляем следующую запись

title calculate iso
root (hdX,Y)
## выше -^^ укажите реальный номер партиции
kernel /cldg/boot/vmlinuz root=/dev/ram0 init=/linuxrc looptype=squashfs unionfs 
  doload=squashfs,unionfs,isofs,<МОДУЛЬ_ДЛЯ_ФС_НА_КОТОРОЙ_iso-шка_К_ПРИМЕРУ_ext4> 
  loop=/livecd.squashfs nodevfs cdroot scandelay=3 scratch docache udev noresume doscsi 
  calculate=keymap:ru_RU,lang:ru_RU,timezone:Europe/Moscow 
  video=uvesafb:ywrap,1024x768-32@60,mtrr:3,splash=silent,theme:tty1 console=tty1 
  isoboot=/cldg/<НАЗВАНИЕ ИСОШКИ> 
initrd /cldg/boot/initrd

В данном случае все параметры как обычно при загрузке из LiveCD. Лишь добавляется isoboot=/cldg/<НАЗВАНИЕ ИСОШКИ>
Для удобства прочтения я одну длинную строку разбил на множество подстрок заканчивающихся обратным слешем(\) поскольку такое возможно во многих конфигах. Не уверен насколько подобная форма записи корректна для grub.conf, так что - если что объедините это все в одну строку.


Если у вас не grub2, и вам не интересно как в нем можно было бы сделать проще - дальше можете не читать, остальным надеюсь будет интересно.
В grub:2 есть возможность монтировать файловую систему в файле. Слегка модифицировав приведу пример записи menuentry из своего grub.cfg на флешке. Не выкладываю весь grub.cfg, поскольку он у меня еще откровенно сырой. Но обо всем по порядку:

menuentry "boot ${calculate_iso}" --class calculate --class gnu-linux --class gnu --class os {
  set calculate="calculate=keymap:ru_RU,lang:ru_RU,timezone:Europe/Moscow"
  set calculate_iso=/clgd/<ИМЯisoШКИ>

  echo "Set loopback device ${calculate_iso}"
  loopback loop "${calculate_iso}"

  echo 'Load kernel...'
  linux (loop)/boot/vmlinuz "isoboot=${calculate_iso}" root=/dev/ram0 init=/linuxrc 
    looptype=squashfs unionfs doload=squashfs,unionfs,isofs,ext4 loop=/livecd.squashfs 
    nodevfs cdroot video=uvesafb:ywrap,1024x768-32@60,mtrr:3,splash=silent,theme:tty1 
    console=tty1 udev noresume doscsi scandelay=3 scratch docache ${calculate}
  echo 'Load initrd'
  initrd (loop)/boot/initrd 

Весь конфиг не выкладываю, поскольку в нем есть мои попытки(пока безуспешные) создать подменю с выбором lang, keymap, timezone и video и самое главное - iso-шек из тех, что на данный момент находятся в нужной директории.

PS
<<Все написанное ниже имеет смысл если вы собираетесь делать некие действия с партициями того носителя с которго загрузились>>
Если свободной партиции нет, или еще по какой причине вы хотите изменить разбивку партиций, а сделать это из живой системы не можете, то описанный выше способ как раз подходит.
Вот только с “освобождением” партиции где находится образ пока есть небольшие заморочки - отмонтировать директорию примонтированную из initrd простой возможности я не нашел (кстати наперед - надо будет подправить на этот счет /usr/share/genkernel/defaults/{initrd.scripts,linuxrc}).
Сейчас же я делаю “ход конем”.
Сразу отмечу - метод работает лишь если весь образ получилось “запихнуть” в память параметром docache. Если образ желаемой вами системы слишком велик - для переразбивки диска просто попробуйте другой образ. К примеру cldx или CLsD , а уж как потом из одной кальки устанавливать другую(из другой iso-шки) - это вы в man cl-install найдете. Итак приступим:

grep newroot /proc/mounts
## так узнаем партицию на которой лежит iso-шка
ROOTDEV=/dev/sdaN
## это --------^^ собственно нужная партиция
mkdir -p /mnt/flash
mount -vo ro ${ROOTDEV} /mnt/flash
umount -v ${ROOTDEV}
grep ${ROOTDEV} /proc/mounts
## проверка - реально ли мы отмонтировали этот том

Все, теперь можно хоть разделы сносить, хоть *parted-ом разделы двигать, хоть вообще носитель извлекать (если это флешка или другой hotplug носитель).

PPS
Кстати, если памяти уж совсем впритык, то “двигание партиций” может зависнуть в процессе и возможно поломать данные. Чтоб этого избежать подключите swap(обычно он в начале диска и “двигание” его не затронет).
Если же вы хотите уменьшить своп, то отключите его, удалите, создайте заново нужного размера(по идее это съест меньше памяти) и подключите обратно.

Сделал загрузку с флешки с помощью wingrub. iso-образ закинул и menu.lst отредактировал как сказано в 6-ом посте

Вот что пишет:

Судя по всему у вас установился grub-0.9х(какой-то)
приложите к сообщению ваш конфиг grub-а
Также приложите список файлов
если у вас винда, то в cmd выполните

dir f:

где f: - ваша флешка