Сайт | Скачать | Видео | Wiki

Автор Тема: Установщик PuppyRus  (Прочитано 48729 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8633
  • Репутация: +187/-2
  • Старый чайник
Re: Установщик PuppyRus
« Ответ #15 : 24 Июль 2010, 13:12:33 »
 Конкретизируем задание для автоматической установки загрузчика по возможности без вопросов:
1. Производится поиск установленных загрузчиков на всех разделах. (GRUB, GRUB2, GRUB4DOS, LILO, BSD.....).
2. Если обнаружен GRUB или GRUB4DOS, в его menu.lst дописывается загрузочная секция PuppyRus.
3. Если обнаружен GRUB2, то в /etc/grub.d дописывается соответствующее правило и в /boot/grub/grub.cfg загрузочная запись PuppyRus, (здесь возможны проблемы с ext4 при установке Jeans)
4. Если LILO или BSD, пока не знаю, подскажите, кто знает.
5. Если обнаружена только Windows, устанавливается GRUB4DOS.
6. Если PuppyRus единственная ОС, устанавливается GRUB.
 Прошу замечания и дополнения.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн bit777

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1037
  • Репутация: +127/-0
Re: Установщик PuppyRus
« Ответ #16 : 24 Июль 2010, 13:15:58 »
Если обнаружена только Windows, устанавливается GRUB4DOS.
В Windows7 он уже стоит

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8633
  • Репутация: +187/-2
  • Старый чайник
Re: Установщик PuppyRus
« Ответ #17 : 24 Июль 2010, 14:19:21 »
Если обнаружена только Windows, устанавливается GRUB4DOS.
В Windows7 он уже стоит

Ну и хорошо. ;)

 Если включить в цикл такие строки?
Код
............
find /mnt/data/boot/grub/grub.cfg && BOOTLOADER=GRUB2
find /mnt/data/boot/grub/stage1 && BOOTLOADER=GRUB
find /mnt/data/boot/NST/stage1 && BOOTLOADER=GRUB4DOS
find /mnt/data/ntldr && BOOTLOADER=NTLDR
.........
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн bit777

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1037
  • Репутация: +127/-0
Re: Установщик PuppyRus
« Ответ #18 : 24 Июль 2010, 15:32:10 »
find /mnt/data/boot/NST/stage1 && BOOTLOADER=GRUB4DOS
В windows7 и папке c:\NST два файла NeoGrub.mbr и menu.lst , а файл NeoGrub находится в корне диска C:
Поэтому эту строку лучше переписать
так
Код
find /mnt/data/NST/NeoGrub.mbr && BOOTLOADER=NeoGrub

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8633
  • Репутация: +187/-2
  • Старый чайник
Re: Установщик PuppyRus
« Ответ #19 : 24 Июль 2010, 16:27:50 »
Код
#!/bin/sh[quote] /tmp/bootloader_list[/quote]
#Получаем таблицу разделов HD
PARTS=`probepart | grep -v none | grep -v swap | grep -v iso9660 | cut -f -2 -d '|' | cut -f 3 -d '/'`
#Проверяем наличие загрузчиков на разделах
for partl in `echo "$PARTS"`
do
part=`echo $partl | cut -f 1 -d '|'`
fs=`echo $partl | cut -f 2 -d '|'`
PNUM=`echo $part | sed -e 's/^.d.//'`
#PNUM=`echo $part | cut -b 4` как вариант
pnum=`expr $PNUM - 1`
mount -t "$fs" /dev/"$part" /mnt/data
#отсюда всё по новой............
BOOTLOADER=""
find /mnt/data/boot/grub/grub.cfg && BOOTLOADER=GRUB2
find /mnt/data/boot/grub/stage1 && BOOTLOADER=GRUB
#find /mnt/data/boot/ && BOOTLOADER=LILO
#find /mnt/data/boot/NST/stage1 && BOOTLOADER=GRUB4DOS
find /mnt/data/NST/NeoGrub.mbr && BOOTLOADER=NeoGrub
find /mnt/data/ntldr && BOOTLOADER=NTLDR
if [ "$BOOTLOADER" != "" ]; then
echo "$fs /dev/$part /mnt/data $BOOTLOADER" >> /tmp/bootloader_list
fi
umount /mnt/data
done

Это выдаёт таблицу загрузчиков.
 Теперь надо расставить приоритеты, какой загрузчик будет главным, если их несколько? У меня главным GRUB2, простой GRUB (LILO думаю тоже) Lubuntu-10,04 не загружает, но найти и загрузить всех Puppy автоматически я его заставил.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8633
  • Репутация: +187/-2
  • Старый чайник
Re: Установщик PuppyRus
« Ответ #20 : 26 Июль 2010, 14:25:05 »
 Ну, и куда все попрятались, как до дела дошло? А сколько разговоров было...
Вот. Испытывайте, проверяйте, исправляйте. Ошибок море. Не знаю, что делать с LILO. В некоторые дистрибутивы он включен как альтернатива, т. е. /etc/lilo.conf присутствует, но есть и grub. Как определить, который загрузчик установлен? Как автоматически переписать его запись из MBR в корень раздела?  ???
 Файл 25_pups это правило для GRUB2, должно автоматически копироваться в /etc/grub.d/
« Последнее редактирование: 29 Июль 2010, 18:49:06 от RulllJazzz »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн RulllJazzz

  • Постоялец
  • ***
  • Сообщений: 172
  • Репутация: +16/-1
Re: Установщик PuppyRus
« Ответ #21 : 29 Июль 2010, 14:53:46 »
Итак, опробовал. Если кто не в курсе, как эта штука работает:
Скачиваем, распаковываем, запускаем (через консоль, чтоб отписывался).

Может заявить premission denied, тогда надо поменять права (сделать выполняемым/доступным для поиска). Если запускать с LiveCD - запустится сразу и без проблем.

Комментарии к прикреплённым файлам:

  • В окне "имя каталога для установки" курсор по-умолчанию встаёт на вторую строку, что несколько сбивает с толку. Если, не переводя курсор на первую строку, во второй строке написать что-то, то при создании папки учтётся в результате только содержание 1-ой строки (PuppyRus).

  • Диск монтируется при запуске установщика в режиме "только чтение", поэтому установка GRUB обрывается и скрипт рапортует о завершении установки. Console_installer создаёт-таки папку /boot/grub, но файл menu.lst в ней пустой.

  • Полный вывод консоли при работе установщика.

Пробовал штатным установщиком GRUB повторить процедуру - тоже выдал ошибку из-за монтирования диска. Размонтировал - установщик отработал. Диск при этом не смонтировался.

Может стоит при начале установки GRUB дать команду на размонтирование диска, чтобы избежать этой проблемы?
« Последнее редактирование: 29 Июль 2010, 18:47:44 от RulllJazzz »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8633
  • Репутация: +187/-2
  • Старый чайник
Re: Установщик PuppyRus
« Ответ #22 : 29 Июль 2010, 17:50:10 »
1. Исправлено заменой echo на printf. (printf не переходит на новую строку)
2. Если console_installer находит GRUB, GRUB2 или GRUB4DOS выполнение скрипта автоматически прерывается, но menu.lst он должен создать. Пока непонятно, в чём проблема. У меня точно так же отказался копировать 25_puppys в /etc/grub.d на раздел с установленной Lubuntu, появился пустой файл, хотя на этот же раздел запись puppyrus в /boot/grub.grub.cfg сделал.   ??? мистика.
3. Это ругается find и подавить его ругань не получается. Попробую заменить на if [ -f /boot/grub/stage1 ]; такая конструкция не должна ругаться.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Lexeii

  • Почетный участник
  • Постоялец
  • *
  • Сообщений: 147
  • Репутация: +24/-0
    • блог Lexeii
Re: Установщик PuppyRus
« Ответ #23 : 29 Июль 2010, 18:23:36 »
Просто не могу пройти мимо :)

1. Исправлено заменой echo на printf. (printf не переходит на новую строку)

Попробуйте такой пример:
Код
echo -n "Подготовка списка файлов... "
echo "Готово!"

3. Это ругается find и подавить его ругань не получается.

Попробуйте следующую конструкцию:
Код
find ... 2> /dev/null
Linux is user friendly... It's just picky about who it  becomes friends with.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8633
  • Репутация: +187/-2
  • Старый чайник
Re: Установщик PuppyRus
« Ответ #24 : 29 Июль 2010, 18:33:54 »
Попробуйте такой пример:
Код
echo -n "Подготовка списка файлов... "
echo "Готово!"
Можно и так, но подвернулся случай printf применить, почему бы и не применить.
Попробуйте следующую конструкцию:
Код
find ... 2> /dev/null
Это я в первую очередь пробовал.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн RulllJazzz

  • Постоялец
  • ***
  • Сообщений: 172
  • Репутация: +16/-1
Re: Установщик PuppyRus
« Ответ #25 : 29 Июль 2010, 18:59:51 »
Такс....

В окне "имя каталога для установки" курсор встал на место, но если после PuppyRus поставить пробел (PuppyRus 4.20, например), то забабахает две папки: PuppyRus (пустую) и 4.20 (с файлами системы). Диалог установки GRUB теперь не появляется (либо очень быстро исчезает). После отработки создаётся пустой файл nohup.out.

Вывод консоли существенно сократился (прикрепил к сообщению).

upd:
Удалил ради чистоты эксперимента папку /boot, присутствующую на целевом диске (/dev/sda2). Каталог /boot/grub со всеми внутренностями создался, файл menu.lst присутствует, записи в нём - тоже. Прикрепил за компанию.

На целевом диске присутствовали папки с другими PuppyRus'ами, которые в menu.lst не попали (а должны были?). Windows, как и устанавливаемый PuppyRus, в menu.lst присутствуют и исправно грузятся.

При наличии папки /boot/grub (и файла menu.lst, соответственно) при установке данные дописываются (записи PuppyRus и Windows).
« Последнее редактирование: 29 Июль 2010, 19:24:09 от RulllJazzz »

Оффлайн RulllJazzz

  • Постоялец
  • ***
  • Сообщений: 172
  • Репутация: +16/-1
Re: Установщик PuppyRus
« Ответ #26 : 29 Июль 2010, 19:37:20 »
Перегрузился в систему, инсталированную при помощи console_installer (система, понятное дело, чистая).
Папку /boot положил на место, в menu.lst дописал пунктик для загрузки windows из  menu.lst, прикреплённого в прошлом сообщении.

Запустил снова console_installer. Отработал без ошибок (вывод консоли прикрепил). Однако стоит отметить, что в menu.lst добавился пункт не только устанавливаемого Puppy (PuppyRus_X), но и пункт Windows, который в файле уже присутствовал.

Дубляж получается.

Файл nohup.out не появился.
« Последнее редактирование: 02 Август 2010, 03:18:05 от RulllJazzz »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8633
  • Репутация: +187/-2
  • Старый чайник
Re: Установщик PuppyRus
« Ответ #27 : 29 Июль 2010, 19:41:25 »
 Ругается на уже примонтированный раздел (у меня не ругается  ??? ). Какая FS? NTFS?
 Если есть ещё GRUB, то в его menu.lst должна появмится запись PuppyRus.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн RulllJazzz

  • Постоялец
  • ***
  • Сообщений: 172
  • Репутация: +16/-1
Re: Установщик PuppyRus
« Ответ #28 : 29 Июль 2010, 19:49:06 »
Ставлю я на /dev/sda2 - ext2. На нём уже стоят папирусы, так что он смонтирован изначально как /home. Также во время инсталяции монтируется /dev/sda4 (NTFS) и появляется красный ахтунг о форс-монтировании в режиме "только чтение".

В предыдущем сообщении упоминул, что при наличии другого Grub пункт дописывается, но кроме папируса (который мы инсталим), дописывается ещё и найденная на диске /dev/sda3 винда (хотя запись о ней уже присутствует в menu.lst до инсталяции).

« Последнее редактирование: 29 Июль 2010, 20:23:46 от RulllJazzz »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8633
  • Репутация: +187/-2
  • Старый чайник
Re: Установщик PuppyRus
« Ответ #29 : 29 Июль 2010, 21:11:45 »
Ставлю я на /dev/sda2 - ext2. На нём уже стоят папирусы, так что он смонтирован изначально как /home. Также во время инсталяции монтируется /dev/sda4 (NTFS) и появляется красный ахтунг о форс-монтировании в режиме "только чтение".

В предыдущем сообщении упоминул, что при наличии другого Grub пункт дописывается, но кроме папируса (который мы инсталим), дописывается ещё и найденная на диске /dev/sda3 винда (хотя запись о ней уже присутствует в menu.lst до инсталяции).
Сделал точно так же, выбрал /dev/sda2 (ext3) он же home на котором тоже стоят папирусы, ругани нет, загрузчики прописались. Загрузился из меню GRUB2, пмшу сейчас из свежеустановленного. Надо искать почему у вас ругается и не монтирует. Из-за этого и не записывается новый Puppyrus в mrnu.lst. Дело в том. что запись Windows идёт в menu.lst только на разделе с puppy, а запись puppyrus во все найденные. Для этого прописаны разные пути.
Код
echo "title Windows....и т. д." >> $ONEMNT/boot/grub/menu.lst

echo "$PGRUBTXT" >> /mnt/data/boot/grub/menu.lst
По второму пути если монтирования по данному пути нет (о чём и ругается) то и записи не будет.
 Повторное прописывание windows можно убрать добавив опцию "если нет"
Код
if [ -f /mnt/data/ntldr -o "`cat $ONEMNT/boot/grub/menu.lst | grep Windows`" = "" ]; then 
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64