задание версии ядра, например 4.8.10-pf8 отдельной строкой:
title ▒▒ set kernel=4.8.10-pf8
set v=4.8.10-pf8
configfile /menu.lst
На примере пра : создаем в папке с дистром файл 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 для подстраховки?
Это точно надо? Есть рецепт не писать в него руками, а как-то определить через метку?
задание "ядер" выбором из предлагаемого строкой загрузки списка.
Приблизительно так - с поправками путей/?переменных "под себя", под свои нужды:
[cut]
title ▒▒ %%% input hd=h,p kern (h=0,1...) (p=1,2...)
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
set /a r=%p%-1
set P=%p%
root (hd%h%,%r%)/%d%
pause --wait=10
title ▒▒ %%% input nomera indexa kernel(1,2...)
echo for vmlinuz -4.6.2-pf1 ==1
echo for vmlinuz -4.7.0-pf1 ==2
echo for vmlinuz -4.8.10-pf8 ==3
echo for vmlinuz -4.9.5 ==4
echo for vmlinuz -4.9.5-pf4 ==5
set /p:7 kn=№ kernel version (primer 1,2.3...)(within 7 seconds ENTER)--kn:
if "%kn%"=="" pause --wait=7 TOO SLOW! && configfile /menu.lst
if "%kn%"=="1" set ki=-4.6.2-pf1
if "%kn%"=="2" set ki=-4.7.0-pf1
if "%kn%"=="3" set ki=-4.8.10-pf8
if "%kn%"=="4" set ki=-4.9.5
if "%kn%"=="5" set ki=-4.9.5-pf4
title ▒▒▒▒>>> zapusk -Form sdB (flash?)
set d=pra
set pf=2
root (hd%h%,%r%)/%d%
kernel /base/vmlinuz%ki% from=/mnt/sdb%pf% dir=%d% quiet copy2ram noswap noload=nvidia
initrd /initrd.xz
title ▒▒ @@@@ view Form
set d=pra
set pf=2
echo (hd%h%,%r%)/%d%
echo kernel /base/vmlinuz%ki% from=/mnt/sdb%pf% dir=%d% quiet copy2ram noswap noload=nvidia
echo initrd /initrd.xz
pause --wait=12[/cut]
Для данных строк - положть ядра ( vmlinuz-nnn и 000-vmlinuz-nnn.pfs) в /pra/base.
Можно ложить и "пачку", но, например, при наличии "очень похожих" 000-vmlinuz-4.9.5.pfs и vmlinuz-4.9.5-pf4.pfs грузит оба, в остальном - вроде нормально.
Дальнейшее добавление ядер в menu.lst - по аналогии.
vmlinuz-nnn и initrd.xz, в принципе можно загружать с других различных разделов, задавать "переменными".
Размер vmlinuz мал - решил "складывать" вместе с 000-vmlinuz.pfs
Исправил первоначально выложенный "предварительный просмотр" .
gamma-2.0 :-\- строки запуска отображают в меню задаваемые переменные + смена ядер: 11 штук + запуск одноменных папок/подпапок.
Добавить строки в menu.lst.
title
lock
title ▒▒ %%%<< input hd=h,r (№ diska -1, № razd -1) (h=0,1...) (r=0,1,2...) (attention - up menu)
set /a /p:5 h=disk-0,1..(within 5 seconds ENTER)--h:
if "%h%"=="" pause --wait=5 TOO SLOW!
set /a /p:5 r= razdel-0,1,2,..(within 5 seconds ENTER)--r:
if "%r%"=="" pause --wait=5 TOO SLOW!
set /a p=%r%+1
root (hd%h%,%r%)
pause --wait=5
title ▒▒== %%% set /base (optional)
set b=/base
title ▒▒== %%% set d=pra
set d=pra
title ▒▒== %%% set d=pra64
set d=pra64
title ▒▒ %%?<< vybor nomera indexa kernel iz spiska |kn=(primer:1,2...;41,42...)
echo for vmlinuz -4.6.2-pf1 ==1
echo for vmlinuz -4.7.0-pf1 ==2
echo for vmlinuz -4.8.10-pf8 ==3
echo for vmlinuz -4.9.5 ==4
echo for vmlinuz -4.9.5-pf4 ==5
echo for vmlinuz -4.6.2-pf1_64 ==41
echo for vmlinuz -4.7.0-pf1_64 ==42
echo for vmlinuz -4.8.10-pf8_64 ==43
echo for vmlinuz -4.9.3-pf3_64 ==44
echo for vmlinuz -4.9.5-pf4_64 ==45
echo for vmlinuz -4.10.1-pf2_64 ==46
set /p:7 kn=№ kernel version (primer 1,2.3...)(within 5 seconds ENTER)--kn:
if "%kn%"=="" pause --wait=5 TOO SLOW!
if "%kn%"=="1" set ki=-4.6.2-pf1
if "%kn%"=="2" set ki=-4.7.0-pf1
if "%kn%"=="3" set ki=-4.8.10-pf8
if "%kn%"=="4" set ki=-4.9.5
if "%kn%"=="5" set ki=-4.9.5-pf4
if "%kn%"=="41" set ki=-4.6.2-pf1_64
if "%kn%"=="42" set ki=-4.7.0-pf1_64
if "%kn%"=="43" set ki=-4.8.10-pf8_64
if "%kn%"=="44" set ki=-4.9.3-pf3_64
if "%kn%"=="45" set ki=-4.9.5-pf4_64
if "%kn%"=="46" set ki=-4.10.1-pf2_64
if "%kn%"=="" pause --wait=5 TOO SLOW!
title ▒▒ %%%<< input-manual parametrov zagruzki(dir- NO-1-st slash (primer:pra))| kernel-index=(primer:-4.7.0-pf1)
set /p:5 d=dir. distra (within 3 seconds ENTER)--d:
if "%d%"=="" pause --wait=3 TOO SLOW!
set /p:5 ki=kernel version manual(primer -4.8.10-pf8)(within 5 seconds ENTER)--ki:
if "%v%"=="" pause --wait=3 TOO SLOW!
title
lock
title ▒▒▒▒ >>> boot !/SDA!:root (hd%h%,%r%)/%d%; kernel %b%/vmlinuz%ki% from=/dev/sda%p% dir=%d%
root (hd%h%,%r%)/%d%
kernel %b%/vmlinuz%ki% from=/dev/sda%p% dir=%d% quiet copy2ram noswap noload=nvidia
initrd /initrd.xz
title ▒▒▒▒ >>> boot !/SDB! :root (hd%h%,%r%)/%d%; kernel %b%/vmlinuz%ki% from=/dev/sdb%p% dir=%d%
root (hd%h%,%r%)/%d%
kernel %b%/vmlinuz%ki% from=/dev/sdb%p% dir=%d% quiet copy2ram noswap noload=nvidia
initrd /initrd.xz
title
lock
title ▒▒== Set-param (moy nabor pra1612m sda8)
set /a h=0 && set /a r=7 && set d=pra1612m && set ki=-4.8.10-pf8
set /a p=%r%+1
---------------------------------
title >>> CHAINloader (hd%h%,%r%)-R mapW -bootload s razdela (init13-support)
map (hd0) (hd1)
map (hd1) (hd0)
root (hd%h%,%r%)
chainloader +1
boot
title >>> CHAINloader (hd%h%) -H mapW -bootload s kornya ustroystva
map (hd0) (hd1)
map (hd1) (hd0)
chainloader (hd%h%)+1
boot
title >>> CHAINloader (hd%h%) -H no-map --bootload s kornya ustroystva
chainloader (hd%h%)+1
boot
Для "стандартного" запуска сборки:
- задать параметры с помощью строк (перемещение по меню -лев., право, вверх, вниз) - hd %h%,%r%(№ диска -1, № раздела -1 -как в g4d), dir(строка set d=pra?/pra64? или строка -input-manual -без! первого слэша - papka; papka/podpapka), %ki% (индекс ядра - "из списка" или "вручную" -input-manual);
set /base - НЕ надо.
- запустить - строки - boot:....sda?/sdb? соответственно.
Для смены ядер:
-положить (без папки!) "коллекцию" vmlinuz-ов и vmlinuz.pfs-ов в /base запускаемого дистрибутива;
- в меню g4d задать/выбрать параметры: hd, dir, ki;
- задать %b% (строка - set /base);
- запуск
Добавка ядер - по аналогии.
Можно использовать свои готовые наборы параметров, прописывая в строке меню пр.:
title ▒▒== Set-param (moy nabor pra1612m sda8)
set /a h=0 && set /a r=7 && set d=pra1612m && set ki=-4.8.10-pf8
set /a p=%r%+1
можно загрузиться, как с CD-шника
У меня в меню.лст "загрузка из *.iso" приблизительно так :
tittle ........
set iso=/ISOs-linux-some/any.iso
map (hd%h%,%r%)%iso% (hd32)
map --hook
root (hd32)
chainloader (hd32)
boot
( + %h%,%r% - "соответствующие").
-- "выборку %iso%" можно сделать например в "отдельном "menu-entry" или ... вплоть до задания в grub4dos "руками";
--Насчет загрузки именно "дефрагментированных .исо" точно не скажу - у меня каталог с *.iso на ext4 ( :) работает).
------------------------------------
p.s.
g2 -> g4dos (пока не проверял) из http://tdkare.ru/sysadmin/index.php/Grub4dos :
menuentry "Grub4Dos" --class gnu-linux {
linux16 /boot/grub4dos/grub.exe --config-file=/boot/grub4dos/menu.lst
}
-- из нового для себя увидел "--class gnu-linux" (--config-file=.... тожн пригодится)
наверное на этой странице :
Цитата: knn от Сегодня в 12:19:23
http://tdkare.ru/sysadmin/index.php/Grub4dos
Ага, я так и делал через условие "если не одно так другое"
Как "получить" дефрагментированный образ(чтоб попробовать)?
Вы хотите это попробовать?:
map --sectors-per-track=0 --heads=0 /<ОБРАЗ>.iso (0xff) || map --sectors-per-track=0 --heads=0 --mem /<ОБРАЗ>.iso (0xff)
К примеру у вас есть образ размером 1 гиг. Тогда забиваете весь раздел под завязку файлами меньше чем этот размер в несколько раз следующей командой:
split -d -b 300M /dev/zero
У вас на диске появятся файлы соответствующего размера с именами x00, x01 и так далее.
Затем когда раздел забьется полностью удалите столько файлов сколько будет достаточно для копирования туда вашего образа. Но удалять надо файлы с номерами идущими не по порядку, чтоб на разделе освободилось место на разных его участках. Когда вы скопируете на это свободное пространство ваш исо образ он гарантированно будет фрагментирован.
Как "теоретически" к этому методу(фрагментации) "отнесётся" EXT4 - не дефрагментирует ли(обратно) ?
Думаю не дефрагментирует.
успешно грузится
Если вы в загрузчике прописали:
map /<ОБРАЗ>.iso (0xff) || map --mem /<ОБРАЗ>.iso (0xff)
То загрузиться должно в любом случае. Там в принципе видно когда в ОЗУ копируется.
Мне вообще кажется он не ставит себе задачу полностью дефрагментировать файл.
Мне так же показалось, но при этом iso грузятся с grub4dos.
% e4defrag -v /mnt/sda3/iso/
[249/254]/mnt/sda3/iso/prar-1811-lxqt-01.iso: 100% extents: 22 -> 8 [ OK ]
[251/254]/mnt/sda3/iso/Fedora-Workstation-Live-x86_64-29-1.2.iso: 100% extents: 16 -> 16 [ OK ]
[253/254]/mnt/sda3/iso/pra03-1808retro.iso: 100% extents: 4 -> 2 [ OK ]
P.s. Хотел полный вывод под кат, но вспомнил о проблемах на хромиеподобных. :) Хорошая реклама для firefox или palemoon. )
при этом iso грузятся с grub4dos.
Создал новый раздел с ext4. Дал права на запись обычному юзеру. Скопировал туда файловым менеджером iso образ. Пробую запамить, grub4dos ругается. ЧЯДНТ?
e4defrag -c MX-18_x64.iso
<File> now/best size/ext
MX-18_x64.iso 11/1 128000 KB
Total/best extents 11/1
Average size per extent 128000 KB
Fragmentation score 0
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This file (MX-18_x64.iso) does not need defragmentation.
Done.
может "свои строки" покажете ...
title pra-roll-180101-gtk2-04.iso
set d=/pra-roll-180101-gtk2-04.iso
find --set-root %d%
map --sectors-per-track=0 --heads=0 %d% (0xff) || map --sectors-per-track=0 --heads=0 --mem %d% (0xff)
map --hook
chainloader (0xff)
boot
попробовал :
-грузит iso в память
-выходит на изовское menu.lst
-выбираю пункт меню
-начинает работать initrd , пишет - устройство не готово, ждет 6 сек..
-выходит на сообщение : модули устройства не найдены, скорее всего вы используете не поддерживаемое загрузочное устройство, ...