как включить persistent не пойму.
Вообще, там сказано, хоть и кратко. Пункт 8.
Но подскажу. Во первых, на текущий момент этот код у меня выглядит так:
submenu '*buntu live' {
iso_path='/opt/rescatux-0.51b3.iso'
iso_path='/opt/super_grub2_disk_x86_64_efi_2.02s10.iso'
iso_path='/opt/runtu-lite-18.04.1-amd64_20180801.iso'
iso_path='/opt/ubuntu-10.04.4-desktop-i386.iso'
iso_path='/opt/ubuntu-16.04.4-desktop-amd64.iso'
iso_path='/opt/ubuntu-18.04-desktop-amd64.iso'
src='/opt/ub18'; key="boot=casper cdrom-detect/try-usb=true noprompt quiet --"
#version='.efi'
#insmod regexp; insmod part_gpt
root='x'; search -n -s -f "${iso_path}"
if [ "${root}" = 'x' ]
then if regexp "buntu-16.04.4" "${iso_path}"; then src='/opt/ub16'; fi
if regexp "buntu-10" "${iso_path}"; then src='/opt/ub10'; fi
search -n -s -f "${src}/casper/vmlinuz${version}"
if [ "${root}" = 'x' ]
then src='*buntu live'
else if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=${src} ${key}"; fi
src="${src}/casper"; key="elevator=noop ignore_uuid live-media-path=${src} ${key}"
if regexp "buntu-10" "${iso_path}"; then key="i915.modeset=1 ${key}"; fi
if [ -e "${src}/initrd${version}" ]; then avinit="initrd ${src}/initrd${version}"; else avinit="initrd ${src}/initrd.lz"; fi
avload='linux'; src="${src}/vmlinuz${version} ${key}"
fi
else msg="Load $iso_path from $root"
export iso_path; loopback loop ${iso_path}
root=(loop)
if [ -e "/boot/grub/loopback.cfg" ]
then avload='configfile'; src='/boot/grub/loopback.cfg'
# loopback --delete loop
else key="file=/cdrom/preseed/ubuntu.seed iso-scan/filename=${iso_path} ${key}"; src='/casper'
if regexp "buntu-10" "${iso_path}"; then key="i915.modeset=1 ${key}"; fi
if [ -e "${src}/initrd${version}" ]; then avinit="initrd ${src}/initrd${version}"; else avinit="initrd ${src}/initrd.lz"; fi
avload='linux'; src="${src}/vmlinuz${version} ${key}"
fi
fi
if [ "${root}" = 'x' ]; then msg="$src not exist!"; else if [ -z "${msg}" ]; then msg="Load $src from $root"; fi; fi
echo "$msg"; sleep -v 4
if [ -n "${avload}" ]; then ${avload} ${src}; if [ -n "${avinit}" ]; then ${avinit}; fi; fi
}
if [ $root = x ] не подскажите что оно проверяет?
Эта проверка выполняется после команды поиска. Если находится искомое, то переменная root получает значение раздела, на котором найден, например файл. Если осталось "х" - значит не найдено.
Вообще, все начинается с поиска исо-образа, заданного в переменной iso_path. Если найден, то начнется загрузка из исо-образа. На этот случай персистент у меня не предусмотрен.
Если образ не найден, тогда начинается поиск системы, в каталоге заданном переменной src.
search -n -s -f "${src}/casper/vmlinuz${version}"
if [ "${root}" = 'x' ]
Если ядро найдено, то в root будет указан раздел, на котором найдено ядро, а следовательно и система. Дальнейшие действия будут относится к этому разделу.
Далее, в этом каталоге проверяется наличие файла casper-rw, именно в нем и сохраняются все изменения.
else if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=${src} ${key}"; fi
Если файл существует, то добавляются параметры ядра, необходимые для режима "persistent".
В этой версии также проверяется имя файла инитрд и подставляется правильное.