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

Автор Тема: Grub4dos. Использование переменных (унификация, универсализация).  (Прочитано 850 раз)

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

Оффлайн knn

  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +4/-0
http://www.rmprepusb.com/tutorials/grub4dos
Задание, просмотр, сброс параметров загрузки (пока: диска, раздела, дирректории, версии ядра) по запросу, запуск с заданными параметрами (!пока "раздельный" для sda и sdb).
работтает (и загрузка из одноименнных папок на разных разделах, и нестандартные имена папок)
Проверялось на PRA.
"Открытый горизонт" для дальнейшей универсализации, унификации, оптимизации.
                          Строки загрузки для menu.lst - gamma-версия :):
ввод параметров диска, раздела hd(h,p)
title ▒▒ zadanie parametrov zagruzki(hd=0,1...)
set /a /p:5 h=disk-0,1..(within 3 seconds ENTER)--h:
if "%h%"=="" pause --wait=3 TOO SLOW! && configfile /menu.lst
set /a /p:5 p=№ razdel-1,2,3..(within 3 seconds ENTER)--p:
if "%p%"=="" pause --wait=3 TOO SLOW! && configfile /menu.lst
configfile /menu.lst

ввод директории и версии ядра
title ▒▒ zadanie parametrov zagruzki(dir=(primer:pra)|vers-kernel=(primer:-4.7.0-pf1)
set /p:5 d=dir. distra (within 3 seconds ENTER)--d:
if "%d%"=="" pause --wait=3 TOO SLOW! && configfile /menu.lst
set /p:5 s=signature file name(within 3 seconds ENTER)--s:
if "%d%"=="" pause --wait=3 TOO SLOW! && configfile /menu.lst
set /p:7 v=kernel version (primer -4.8.10-pf8)(within 7 seconds ENTER)--v:
if "%v%"=="" pause --wait=3 TOO SLOW! && configfile /menu.lst
configfile /menu.lst

сброс параметров
title ▒▒  sbros parametrov
set *
configfile /menu.lst

просмотр парам.
title ▒▒  prosmotr parametrov
set
pause --wait=10
configfile /menu.lst

запуск сборки с sda
title ▒▒ zapusk - formula sdA
set /a r=%p%-1
set P=%p%
root (hd%h%,%r%)/%d%
kernel /vmlinuz%v% from=/dev/sda%P% dir=%d%  sgnfile=%s% quiet  copy2ram noswap  noload=nvidia
initrd /initrd.xz

запуск сборки с sdb
title ▒▒ zapusk - formula sdB (flash?)
set /a r=%p%-1
set P=%p%
root (hd%h%,%r%)/%d%
kernel /vmlinuz%v% from=/dev/sda%P% dir=%d% sgnfile=%s% quiet  copy2ram noswap  noload=nvidia
initrd /initrd.xz

запуск G4d (с другого носителя - например с флешки)
title ▒▒>> Gr4d-zapusk-s-SETroot
root (hd%h%,%r%)
 kernel /boot/grub4dos/grub.exe
 rootnoverify (hd%h%,%r%)

запуск Grub2
title       Chainload into GRUB v2
root        (hd%h%,%r%)
kernel      /grub/i386-pc/core.img

открытие (другого) menu.lst (если не в корне - %d% задавать  /dir ?)
title ▒▒>> configfile menu.lst-s-SETroot
configfile=(hd%h%,%r%)%d%/menu.lst
« Последнее редактирование: 05 Март 2017, 12:47:38 от knn »
Samsung RV510 : intel pent.T4500; чипсет intel Gl40; ATI mob. Radeon HD 5145, RAM=3Gb; hd1=320Gb - Grub2+G4d; hd2=230 Gb - Grub4Dos; PRA, PRA-64-07 - frugal.
PRA-модули

Оффлайн knn

  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +4/-0
 задание версии ядра, например 4.8.10-pf8 отдельной строкой:
title ▒▒ set kernel=4.8.10-pf8
set v=4.8.10-pf8
configfile /menu.lst
Samsung RV510 : intel pent.T4500; чипсет intel Gl40; ATI mob. Radeon HD 5145, RAM=3Gb; hd1=320Gb - Grub2+G4d; hd2=230 Gb - Grub4Dos; PRA, PRA-64-07 - frugal.
PRA-модули

Оффлайн knn

  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +4/-0
ссылка на док. по G4D:
http://www.rmprepusb.com/tutorials/grub4dos
  Нужно ещё: выделить переменную t=a/d/c ( http://forum.puppyrus.org/index.php?topic=19525.0.) - для большей универсальности (?).
  В перспективе:
   - исследовать возможность осуществления задания (вводом переменных)
      --параметров загрузки ядра (портеус? - copy2ram  и др...);
      -- команд kernel, linux, initrd.
   - организация задания "дефолтных" наборов параметров.
« Последнее редактирование: 18 Январь 2017, 19:57:11 от knn »
Samsung RV510 : intel pent.T4500; чипсет intel Gl40; ATI mob. Radeon HD 5145, RAM=3Gb; hd1=320Gb - Grub2+G4d; hd2=230 Gb - Grub4Dos; PRA, PRA-64-07 - frugal.
PRA-модули

Оффлайн knn

  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +4/-0
  Описание выделенных переменнных.
 
h - "индекс диска (0, 1 ...)
 p - номер раздела диска (1,2...)
 r - =p-1, номер раздела диска для (G4d)
 v - версия ядра, индекс (всё, что после vmlinuz)
 t - =a,b,c.. (от "letter") индекс диска при определении как sda, sdb...
 P - =p (для sda)
 d - дирректория дистрибутива ( без/)
s - имя файла (для sgnfile=)
« Последнее редактирование: 19 Январь 2017, 13:11:11 от knn »
Samsung RV510 : intel pent.T4500; чипсет intel Gl40; ATI mob. Radeon HD 5145, RAM=3Gb; hd1=320Gb - Grub2+G4d; hd2=230 Gb - Grub4Dos; PRA, PRA-64-07 - frugal.
PRA-модули

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17992
  • Репутация: +138/-0
    • PuppyRus-A
Хорошо бы по итогу сделать статью для вики
Сложно для понимания излагаете. Не понятно какую задачу решаете
Оптимально добавить примеров :
Задача - конфиги решения
Спасибо+

Оффлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 4639
  • Репутация: +95/-0
    • RoDoN
А можно "на пальцах" объяснить для чего такой огород городить с такой кучей переменных? Лично для себя кроме "d" и "v" практической пользы не увидел. Конкретные примеры можно увидеть?

Acer Aspire One AO751h (Atom Z520, Intel GMA500)
Acer Extensa 5620Z (T7500, Intel 965GM)
PuppyRus-JWM-13.12, PRA, Upup Precise, Tahr Puppy.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17992
  • Репутация: +138/-0
    • PuppyRus-A
На примере пра : создаем в папке с дистром файл metka  (уникальная метка). На других разделах не должно таких быть с одинаковым путем
Переменные использованы - чтобы не писать длинно руками повторы + удобно - меняем в одном месте
title PRA.
    set d=pra
    set s=metka
    find --set-root --ignore-floppies --ignore-cd /%d%/%s%
    kernel /%d%/vmlinuz dir=%d% sgnfile=%s%  quiet
    initrd /%d%/initrd.xz
Когда это не сработает , что и зачем можно улучшить? Добавить http://wiki.puppyrus.org/soft/porteus-initrd#from для подстраховки?
Это точно надо? Есть рецепт не писать в него руками, а как-то определить через метку?
« Последнее редактирование: 19 Январь 2017, 10:44:52 от sfs »

Оффлайн knn

  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +4/-0
Добавил %s%, sgnfile=.
Samsung RV510 : intel pent.T4500; чипсет intel Gl40; ATI mob. Radeon HD 5145, RAM=3Gb; hd1=320Gb - Grub2+G4d; hd2=230 Gb - Grub4Dos; PRA, PRA-64-07 - frugal.
PRA-модули

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17992
  • Репутация: +138/-0
    • PuppyRus-A
А зачем остальные навороты?

Оффлайн knn

  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +4/-0
sfs, там (http://www.rmprepusb.com/tutorials/grub4dos) много чего - нужно исследовать, разбираться, практиковать. На данный момент точного не скажу.
Вроде попадалось про запуск find с выдачей параметров; про то что переменные храняться в двух уровнях.
Нужны точные условия задания переменных (какие символы можно), проведения операцицй с ними.
98%- без dir модули не грузятся. Похоже, sgnfile и from задают местоположение d для dir.
По возможности буду разбиратья (может кто еще чего добавит).
Нужно попробовать разделить %d% на две (или 3) перем-х => +%dk (для kernel), +%di% (для initrd).
для чего такой огород городить
Это "разборная конструкция" = остов +переменные (экзоскелет :-\).
Анализ-Синтез.
« Последнее редактирование: 19 Январь 2017, 18:17:17 от knn »
Samsung RV510 : intel pent.T4500; чипсет intel Gl40; ATI mob. Radeon HD 5145, RAM=3Gb; hd1=320Gb - Grub2+G4d; hd2=230 Gb - Grub4Dos; PRA, PRA-64-07 - frugal.
PRA-модули

Оффлайн knn

  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +4/-0
А зачем остальные навороты?
для наглядности.
Samsung RV510 : intel pent.T4500; чипсет intel Gl40; ATI mob. Radeon HD 5145, RAM=3Gb; hd1=320Gb - Grub2+G4d; hd2=230 Gb - Grub4Dos; PRA, PRA-64-07 - frugal.
PRA-модули

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17992
  • Репутация: +138/-0
    • PuppyRus-A
Оптимально добавить примеров :
Задача - конфиги решения

Оффлайн knn

  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +4/-0
В роде бы если при задании переменной по запросу нажать "Ентер", переменная или не задается, или оставляет ранееустановленнное значение (экскурс).
Для задания переменных можно использовать свою строку /~и загрузки со своим набором заданных по "set / x=y" переменных (затем запуск).
В принципе возможно задание "ядер" выбором из предлагаемого строкой загрузки списка.
Samsung RV510 : intel pent.T4500; чипсет intel Gl40; ATI mob. Radeon HD 5145, RAM=3Gb; hd1=320Gb - Grub2+G4d; hd2=230 Gb - Grub4Dos; PRA, PRA-64-07 - frugal.
PRA-модули

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17992
  • Репутация: +138/-0
    • PuppyRus-A
возможно задание "ядер" выбором из предлагаемого строкой загрузки списка.
Можете сделать самоформирующийся список загрузки имеющихся ядер?

Оффлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 4639
  • Репутация: +95/-0
    • RoDoN
В принципе возможно задание "ядер" выбором из предлагаемого строкой загрузки списка.
Ну, вот первый реально востребованный пример, еще бы как его написать в menu.lst, вот тогда проявится полезность этой темы

Acer Aspire One AO751h (Atom Z520, Intel GMA500)
Acer Extensa 5620Z (T7500, Intel 965GM)
PuppyRus-JWM-13.12, PRA, Upup Precise, Tahr Puppy.