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

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

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

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-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 »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
  • Автор темы
 задание версии ядра, например 4.8.10-pf8 отдельной строкой:
Код
title ▒▒ set kernel=4.8.10-pf8
set v=4.8.10-pf8
configfile /menu.lst
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-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 »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-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 »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн sfs

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

Онлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6282
  • Репутация: +141/-0
А можно "на пальцах" объяснить для чего такой огород городить с такой кучей переменных? Лично для себя кроме "d" и "v" практической пользы не увидел. Конкретные примеры можно увидеть?
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-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

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
  • Автор темы
Добавил %s%, sgnfile=.
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн sfs

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

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-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 »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
  • Автор темы
А зачем остальные навороты?
для наглядности.
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн sfs

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

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
  • Автор темы
В роде бы если при задании переменной по запросу нажать "Ентер", переменная или не задается, или оставляет ранееустановленнное значение (экскурс).
Для задания переменных можно использовать свою строку /~и загрузки со своим набором заданных по "set / x=y" переменных (затем запуск).
В принципе возможно задание "ядер" выбором из предлагаемого строкой загрузки списка.
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн sfs

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

Онлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6282
  • Репутация: +141/-0
В принципе возможно задание "ядер" выбором из предлагаемого строкой загрузки списка.
Ну, вот первый реально востребованный пример, еще бы как его написать в menu.lst, вот тогда проявится полезность этой темы
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE