Porteus-initrd. PuppyRus модификация

Porteus initrd.

Особенности porteus-initrd

  • лог загрузки /var/log/porteus-livedbg
  • очень быстро грузится
  • не содержит либ ядра (при смене ядра не надо пересобирать). Ядро нужно с вкомпиленной поддержкой файловых систем.
  • база строится из любого количества модулей лежащих в /porteus/base. Слои по алфавиту. Верхний zzz*
  • загрузка всех или указанных модулей в память
  • выполнение после загрузки указанных скриптов
  • сохраненка на девайс, в папку или файл (можно зашифровать)
  • автозагрузка перечисленных модулей extramod=/mnt/sdb3/porteus-modules ; extramod=/mnt/sdb3/porteus-modules;/mnt/sdc4/inkscape_modules выше базы
  • можно указать опции mount : mopt=realtime,sync,users,nosuid,noexec
  • noload=module[1];module[n]
  • Выделение памяти под / :ramsize=40%
  • PXE загрузка из сети

Это не весь список. Полный в документации. Ниже перевод, сделанный for_wov и sfs. Перевод соответствует initrd из porteus v.2

Структура каталогов

Все модули грузятся в алфавитном порядке (z.pfs окажется выше a.pfs)

Слои aufs

AUFS

  • -низ-
  • /base
  • /modules
  • /optional
  • /extramod
  • 089-*.pfs (исправления ошибок)
  • 090-*.pfs (сохранение состояния системы в модуль)
  • /rootcopy ; magic-folgers ;сохраненка (файл, папка, раздел)
  • -верх-

/base

  • Базовые модули, файловые и оконные менеджеры, сохраненка.pfs
  • /base/000-kernel.pfs - модули ядра. Должны быть совместимы с дистрибутивом. Название менять нельзя. Модуль временно монтируется во время работы initrd

/modules

  • Модули.pfs автозагружаются в алфавитном порядке выше base
  • Рекомендуется для автоподключения постоянно используемых модулей софта. Например браузера, проигрывателя.
  • Модули не должны содержать /home /root. Иначе они перекроют сохраненкy.pfs

/optional

  • Модули.pfs загружаются в алфавитном порядке выше base, modules при указании load=module[1];module[n]
  • Рекомендуется для хранения и горячего подключения не постоянно используемых модулей софта. Например gparted
  • Модули не должны содержать /home /root. Иначе они перекроют сохраненкy.pfs

/extramod , /rootcopy

Параметры загрузки дистрибутива c porteus-initrd.

Параметры загрузки (cheatcodes) дописываются в конфигурационном файле загрузчика системы (например у grub4dos - menu.lst) в параметры ядра.

  • Список cheatcodes в алфавитном порядке
  • cheatcodes, приведенные в примерах, иногда заключены в одиночные кавычки (напр. 'example=somevalue') для выделения в общем тексте. При практическом использовании кавычки не нужны.
  • Помеченные в конце строки * - не работают или не тестировались в PuppyRus-A

autoexec=my_script

autoexec=my_script;reboot

Выполнить указанные команды перед входом в систему.
Используйте ";" как разделитель, без пробелов.
Если вам понадобится использовать пробелы в командной строке замените их на "~"
Например: 'autoexec=echo~Shutting~power;poweroff' выведет на консоль текст с пробелами вместо "~"

base_only

Загружаем только "базовые" модули (названия которых начинаются с base/0: 000-kernel.xzm, 001-core.xzm)
Это полезно при отладке, чтобы понять связаны ли ваши возможные проблемы с модулем, добавленным вами в систему.

changes=

  • changes=/dev/device раздел
  • changes=/path/ папка
  • changes=/path/file.dat контейнер
  • альтернатива - squashfs модуль сохранения или rootcopy

Без changes= все изменения в системе, до перезагрузки сохраняются в памяти

Если устройство (раздел жесткого диска) имеет linux файловую систему (напр. ext) можно использовать 
раздел ('changes=/dev/sdb2') или папку ('changes=/path/')
'/path/'- путь от корня раздела с файлами дистрибутива (т.е. без '/dev/')
При использовании папки - система создаст подпапку 'changes' внутри '/path'
Если нужно сохранять на разделах с FAT или NTFS - используйте контейнер (file.dat). 
Создается скриптом make-changes

copy2ram

Копирует все модули в память. Вам потребуется как минимум 256mb. 
Система 64-бит с KDE-4 потребует не меньше 768mb.
'copy2ram' замедляет этап загрузки, но ускоряет работу системы.
Напоминание: cheatcode 'noeject' можно использовать вместе с 'copy2ram', чтобы предотвратить отмонтирование
вашего загрузочного устройства (CD/DVD,usbflash,card-reader,и.т.д.)
Так же можно использовать 'rammod' чтобы выборочно загружать модули в память (смотрите описание 'rammod' ниже)

debug

Запуск консоли отладки. Пошаговый режим

delay=

Например: 'delay=5' приостановит загрузку на 5 секунд. Необходимо устройствам, требующими допольнительного 
времени для настройки.

extramod=

extramod=/path/folder_with_modules;/path2/folder_with_modules

Загрузка модулей из одной или нескольких внешних папок (расположеных не в папке с файлами дистрибутива).
Если все папки на одном разделе с дистрибутивом - можно указать пути от корня раздела
Для нескольких папок на разных разделах нужно указывать полные пути с разделителем ";" без пробелов.
Например:
'extramod=/mnt/sdb3/porteus-modules'
'extramod=/mnt/sdb3/porteus-modules;/mnt/sdc4/inkscape_modules'

Если нужно подключение не всех модулей, а одного или нескольких - это можно сделать:

  • через noload=
  • если Ваш дистрибутив на ext разделе и Вы не используете noauto - можно сделать симлинк на модуль в /modules. Симлинк делать через /mnt/sda…

from=

from=/dev/device from=/path/folder from=/path/porteus.iso

Загружает систему с устройства, папки или ISO файла
Например:
'from=/dev/sdb2' загрузка со второго раздела на втором диске.
'from=/mnt/sda2/linux-testing'  загрузка из  папки 'linux-testing' на втором разделе.
'from=/linux-ISO/porteus.iso' загрузка из ISO-файла внутри папки 'linux-ISO'.
Если раздел не указан - загрузочный скрипт будет искать данные на всех разделах

fsck

Проверка разделов с ext(2,3,4) и reiserfs 
XFS не нуждается в проверке с параметром fsck т.к. проверка происходит автоматически во время монтирования.
На некоторых системах необходимо использовать 'delay=' для подготовки устройства. 
Это по большей части необходимо только для USB флеш-дисков.

kmap= *

kmap=раскладка_клавиатуры

Определяет предпочитаемую раскладку клавиатуры для KDE/LXDE/XFCE или другого рабочего окружения. 
Полный список поддерживаемых раскладок можно найти в  папке /etc/X11/xkb/symbols
Например: 'kmap=ru' установит русскую раскладку клавиатуры.

load=module

load=module[1];module[n]

Загрузка модулей из папки /optional/ на загрузочном устройстве. 
Модули разделяются ";" без пробелов.
Например: 'load=gimp;inkscape' - загрузка модулей, содержащих в названии строки 'gimp' и 'inkscape' 
из папки /porteus/optional

login=user_name *

Имя пользователя (можно 'root') для автологина
Если имя пользователя не указано, то загрузка приостанавливается на экране входа LXDM/KDM.

lxde *

Использовать рабочее окружение LXDE 

mopt

Настройка параметров монтирования файловых систем. По умолчанию : "noatime,nodiratime,suid,dev,exec,async". 
Каждый параметр разделяется с помощью "," без пробелов.
Например: 'mopt=realtime,sync,users,nosuid,noexec'. 

noauto

Отключить автомонтирование устройства во время загрузки. Каждый диск нужно будет монтировать вручную. 
Флэшка, подключенная до загрузки системы не автомонтируется

nocd

Не искать файлы на CD/DVD во время загрузки системы

noeject

Не извлекать CD/DVD диски во время загрузки и выключения.
Совместное использование 'copy2ram' и 'noeject' предотвратит размонтирование загрузочного устройства 
(CD/DVD, usb, card-reader, и т.д.). Чтобы извлечь CD вам нужно будет его отмонтировать из консоли,
вручную командами 'umount /mnt/sr0' и 'eject /dev/sr0' 

nohd

Не искать файлы на жестких дисках во время загрузки системы

nohotplug

Отключить автоопределение специфического оборудования в случае зависания системы. 
Использовуйте команду "modprobe" после входа в текстовый режим и загрузите необходимые драйвера вручную.

noload=module

noload=module[1];module[n]

Отключит загрузку перечисленных модулей. Распространяется на все модули, влючая папки /base и /modules
Пример: 'noload=kde' - отключит загрузку всех модулей с строчкой 'kde' в названиях. 
Полезен с 'copy2ram', потому, что лишние модули не будут копироваться в память. 
Можно указать много модулей с разделителем ";" без пробелов
Например: 'noload=lxde;devel' исключит загрузку модулей в названии которых содержатся строчки с 'lxde' и 'devel'

nomagic *

Не создавать "magic folders" во время загрузки. Полезно когда что-то пошло не так с настройками системы 
и вы хотите загрузиться в "Всегда свежый" ('Always Fresh') режим. Т.е. без сохранения

nonetwork

Отключает автоподключение к сети.
Внимание! Вносит изменения в систему, которые нужно восстанавливать вручную, 
поэтому рекомендуется использовать только в ("Always Fresh") режиме. 
Если вы проигнорировали этот совет и вам нужно восстановить ваше сетевое подключение, наберите в консоли:
chmod +x /etc/rc.d/rc.inet1 /etc/rc.d/rc.networkmanager
sed -i 's/Hidden=true//g' /etc/xdg/autostart/nm-applet.desktop

norootcopy

Не копирует файлы из папки rootcopy. Как и 'nomagic' полезен если что-то пошло не так с настройками 
и вы хотите загрузиться в 'Always Fresh' режим.

noswap

Запрещает автоматически использовать существующий раздел со swap (файл подкачки). 
По умолчанию система ищет на всех подключенных дисках swap-разделы и подключает их. 

ramsize=

Установить произвольный размер раздела с tmpfs, который используется как root (/) вашей live файловой системы,
т.е. когда изменения сохраняются только в памяти ('Always Fresh' режим, т.е. без использования changes=). 
Значение по умолчанию -- 60% доступной физической памяти (RAM).
Например: 'ramsize=40%'

rammod=

rammod=folder rammod=module[1];module[n];folder[1];folder[2]

Работает только вместе с 'copy2ram'. Только модули, перечисленные в rammod= модуль(и) или папку(и) с модулями копируются в
память(RAM)
Это позволит вам иметь преимущество в скорости 'copy2ram' для наиболее часто используемых модулей, не занимая
оперативной памяти модулями, которые вы используете реже. Модули, не указанные в rammod= будут подключены с носителя и
Вы не сможете его извлечь во время работы системы
Вы можете использовать полные или частичные названия модулей, но помните что все модули и папки, совпадающие с частью
названия будут загружены в папять (RAM); 
Если у вас есть дополнительные модули в папке с названием 'lxde' и вы используете 'rammod=lxde', 
тогда модуль 003-lxde.xzm из /base будет загружен дополнительно со всеми модулями в папке 'lxde'.
'rammod' нельзя использовать без 'copy2ram', и он так же не загрузит модули из /optional и прочих мест,
пока вы не укажите эти модули в  'load=' или 'extramod='.
     Например:
     'rammod=001;002;004;firefox'
     'extramod=/mnt/sdb3/porteus/gimp rammod=001;002;gimp'

rootcopy=

rootcopy=/путь/к_папке/с_файлами

Скопирует файлы из указанной папки прямо в live файловую систему.
Не рекомендуется использовать на fat и ntfs, т.к. на все файлы устанавливаются права 755 (чтение, запись и запуск) для всех. 
Эта папка будет использоваться вместо традиционной /rootcopy.
Например: 'rootcopy=/mnt/sda5/root-files'

sgnfile=

Указать идентификационный файл *.sgn, который система ищет при загрузке. 
Полезно если у Вас несколько копий системы на одном hdd(cd) диске. 
Должен находиться в каталоге дистрибутива (там же где base, modules ...)
Например: 'sgnfile=porteus-usb.sgn'

timezone=region/zone *

Полный список доступных временных зон можно найти в файле /usr/sbin/timeconfig
Например: 'timezone=Europe/Kiev'
Например: 'timezone=Factory'

vga_detect *

Автоматически определяет AMD или nVidia видео карты и загружает необходимые драйвера.
Модуль видео драйвера (nVidia или amd-catalyst) должен находиться в /optional/ и его название должны 
начинаться с 'nVidia-' или 'amd-catalyst'. Скрипт загрузки ищет модули драйверов по названию.
Позволяет переключатся между разными конфигурациями оборудования в то время как модули проприетарных 
драйверов (AMD, nVidia) могут находится вместе в папке /optional/ не мешая друг другу. 
Они активируются только когда потребуются.

volume

Устанавка громкости динамиков (Master Volume channel) на указанное значение (в процентах). 
Значение по умолчанию -- 75%.
Например: 'volume=0%' запустит сеанс графического интерфейса беззвучно.

xfce *

Использовать XFCE как рабочее окружение по умолчанию.

zram *

Задейстует использование zram - блочного устройства внутри памяти (RAM) которое ведет себя как swap. 
Zram работает быстрее чем swap на жестком диске и создает больше (виртуальной) памяти чем использование 
только памяти (RAM), т.к. данные внутри сжаты. Это даст прирост производительности на системах с 
меньшим количеством памяти (RAM), но для этого используется больше частоты процессора (для компресси и 
декомпрессии данных) чем при работе со swap.
Например: 'zram=33%' назначит 33% вашей памяти(RAM) для zram-диска.

ПРИМЕЧАНИЕ ПО ИСПОЛЬЗОВАНИЮ 'LABEL' И 'UUID':

  • Все части этих команд чувствительны к регистру.
  • Используйте в терминале команду 'blkid', чтобы увидеть UUID и LABEL устройства.
  • UUID и LABEL являются уникальными для вашего устройства. Файлы дистрибутива будут правильно найдены.
  • 'LABEL' и 'UUID' можно использовать с любым cheatcode, содержaщим /путь
Например:
changes=UUID:СТРОКА-ЗНАЧЕНИЙ/путь/файл.dat
extramod=LABEL:НазваниеВашейМетки/путь/к_папке/с_файлами
from=UUID:СТРОКА-ЗНАЧЕНИЙ/путь/папка
rootcopy=LABEL:азваниеВашейМетки/путь/к_папке/с_файлами

ПРИМЕЧАНИЕ ПО ИСПОЛЬЗОВАНИЮ 'changes' ВМЕСТЕ С РАСШИРЕНИЕМ 'EXIT:':

  • Расширение 'EXIT:' указывает 'changes=' сохранять все изменения, сделанные за время сеанса в памяти до перезагрузки/выключения. Запись изменений на диск производится 1 раз при корректмом выключении.
  • Конструкция 'changes=EXIT:' имеет следующие преимущества:
    • Система работает так же быстко как и в 'Always Fresh' режиме т.к. все изменения производятся в памяти (RAM).
    • Уменьшенное количество цыклов чтения/записи должно продлить жизнь SSD.
  • Единственный недостаток расширения 'EXIT:' при аварийном завершении работы (зависание, пропадание питания) все изменения будут утеряны. Используйте осторожно!
Например:
changes=EXIT:/dev/device
changes=EXIT:/path/
changes=EXIT:UUID:STrING-0F-ChARACtERS/путь/файл.dat

Примечание переводчика (for_vow)

  • Для sdd и прочих [usbflash] устройств, использующих Nand-flash могла бы хорошо подойти f2fs (flash friendly filesystem дружественная к флеш» файловая система) активно внедряемая в последних версиях Puppy Slacko.

ПРИМЕЧАНИЕ ДЛЯ ИСПОЛЬЗУЮЩИХ LILO:

  • Если был установлен загрузчик lilo, у вас будет текстовое меню со стандартными параметрами загрузки (KDE, LXDE, Always Fresh, и.т.д).
  • Используйте клавиши стрелок чтобы выделить желаемый путкт меню (если вы используете первое значение (KDE), нажмите down, потом up чтобы выделить KDE). Название вашего загрузочного параметра добавится в строку 'boot:' и вы сможете печатать cheatcodes после этого.
Например:
boot:  KDE debug noauto - загрузить KDE со всеми стандартными кодами для KDE, плюс отладка и noauto. 
  • Если хотите использовать LILO с настроеными вами cheatcodes при каждой загрузке без их ручного ввода - вы должны изменить /boot/syslinux/lilo.conf и потом повторить установку запустив утититу /boot/Porteus-installer-for-Linux.com т.к. LILO должен перезагрузить свою конфигурацию.

Доработки porteus-initrd для PuppyRus-A (расширение функционала)

В porteus этот функционал отсутствует

  • Изменено расширение модулей.
    • В porteus: .xzm.
    • В PRA: .xzm и .pfs
  • Изменено название модуля модулей ядра.
    • В porteus: 000-kernel.pfs (в PRA тоже работает)
    • В PRA 000-kernel-версия_64.pfs, где «версия» - то что для этого ядра выводит uname -r. _64 - архитектура (для 32 -пусто). Из модулей ядра загрузится только 000-kernel-версия_64.pfs, и из видеодров загрузятся только для текущего ядра. Т.е. не надо в load= noload= писать фильтры для разных ядер
  • Cоздание /mnt/home - симлинк на раздел с файлами дистрибутива (как в puppyrus)
  • Убран raiserfsfsck

changes=RO:

  • 'changes' ВМЕСТЕ С РАСШИРЕНИЕМ 'RO:':
    • Расширение 'RO:' указывает 'changes=' подключаться в режиме «только чтение». Запись изменений в этом случае не производится. RO можно использовать только с сохранением в файл. Монтируется в слой aufs выше всех .pfs перед rootcopy. С параметром copy2ram сохраненка копируется в память
    • Конструкция 'changes=RO:' имеет следующие преимущества:
      • Сохраненка «неубиваема».
      • В отличие от .pfs сохранения, возможно шифрование, но нет сжатия
Например:
changes=RO:/path/файл.dat
changes=RO:UUID:STrING-0F-ChARACtERS/путь/файл.dat

dir=

Название каталога (не путь) с файлами дистрибутива. Обязательно указывать

Например:
dir=pra

sort=

Сортировка нумерных (название модуля начинается с трех цифр, например 001-Pra03arch12nos.pfs) модулей в AUFS

Необязательный параметр. Удобен для многовариантной загрузки с компоновкой DE из модулей в /optional c помощью load=

Например : 
sort=456789 или sort=4-9

Модули, начинающиеся с 0xy- , будут загружены верхний слой AUFS по алфавиту (т.е. перекроют остальные модули)

  • x - указанное Вами маска в sort=
  • y - любая цифра
Например :
/mnt/sda1/pra3/base/000-kernel.pfs
/mnt/sda1/pra3/base/001-Pra03arch12nos.pfs
/mnt/sda1/pra3/base/040-jwm-pra3c.pfs
/mnt/sda1/pra3/base/070-Pra-151119.pfs
/mnt/sda1/pra3/base/089-pra-up.pfs
/mnt/sda1/pra3/base/090-save-150921net-pra.pfs
/mnt/sda1/pra3/modules/042-cow-notify-s04.pfs
/mnt/sda1/pra3/optional/075-Systemd-217-8-s03.pfs

с sort=4-9 :
/mnt/sda1/pra3/base/000-kernel.pfs
/mnt/sda1/pra3/base/001-Pra03arch12nos.pfs
/mnt/sda1/pra3/base/040-jwm-pra3c.pfs
/mnt/sda1/pra3/modules/042-cow-notify-s04.pfs
/mnt/sda1/pra3/base/070-Pra-151119.pfs
/mnt/sda1/pra3/optional/075-Systemd-217-8-s03.pfs
/mnt/sda1/pra3/base/089-pra-up.pfs
/mnt/sda1/pra3/base/090-save-150921net-pra.pfs

Прочие параметры загрузки ядра

Стандартные

quiet

Уменьшает вывод на экран и ускоряет загрузку

modprobe.blacklist

Запрет загрузки модулей ядра.

Например : Отключить ip версии 6 и встроенный динамик

modprobe.blacklist=pcspkr,ipv6

Systemd

Только при использовании systemd

1 - восстановительный режим

  • примерно соответствующего прежнему уровню выполнения 1
  • Например, загрузиться в консоль без Х.
  • Это режим эффективен для решения проблем, возникающих на этапе запуска обычных служб, когда ключевые компоненты системы уже инициализированы. В такой ситуации, вы можете просто отключить проблемную службу.

emergency - аварийный режим

Если загрузка не доходит даже до восстановительного (1) режима — попробуйте менее требовательный, аварийный (emergency) режим.

systemd.unit=

Стандартная цель - default.target, которая по умолчанию является псевдонимом юнита graphical.target (примерно соответствующего прежнему уровню выполнения 5). Для изменения цели при загрузке по умолчанию, добавьте следующий дополнительный параметр ядра в вашем загрузчике:

  • systemd.unit=multi-user.target (что примерно соответствует прежнему уровню выполнения 3),
  • systemd.unit=rescue.target (что примерно соответствует прежнему уровню выполнения 1).

net.ifnames=0 biosdevname=0

Чтобы имена интерфейсоы не менялись - с systemd используйте в menu.lst параметр ядра net.ifnames=0 biosdevname=0

Всегда будет eth0 wlan0

Утилиты, совместимые с porteus-initrd

Печать/экспорт