кто знает, где раздобыть список поддерживаемых загрузочных опций для initrd (те что передаются в загрузчике в cmdline ядра)?
Цель — добавление opensuse на мультизагрузочную флешку.
список загрузочных опций для dvd/livecd
где раздобыть список поддерживаемых загрузочных опций для initrd
Из init сценария в initrd.
Создаёте директорию, куда будет распакова initrd и переходите в неё:
mkdir /tmp/initrd
cd /tmp/initrd
Распаковываете initrd:
unxz -c initrd | cpio -i -d -H newc
unxz использовать, если алгоритм сжатия lzma, алгоритм сжатия можно определить посредством утилиты file, может быть ещё gzip или bzip, соответстветтно ungzip -с и unbzip2 или как-то так, в общем разберётесь, вы же модератор, должны понять.
Далее смотрите сценарий init, может находиться в корне initrd или в /sbin/init или /bin/init, так же возможно нюансы, что в Init подключаются какие-либо скрипты из /etc/, но там все просто и зачастую обработчик параметров ядра находится в самом init, выглядит примерно вот так: Как исключить модуль из загрузки (LiveCD)
Показать
# Parse command line options
for x in $(cat /proc/cmdline); do
case $x in
init=*)
init=${x#init=}
;;
root=*)
ROOT=${x#root=}
case $ROOT in
LABEL=*)
ROOT="${ROOT#LABEL=}"
# support any / in LABEL= path (escape to \x2f)
case "${ROOT}" in
*/*)
if command -v sed >/dev/null 2>&1; then
ROOT="$(echo ${ROOT} | sed 's,/,\\x2f,g')"
else
if [ "${ROOT}" != "${ROOT#/}" ]; then
ROOT="\x2f${ROOT#/}"
fi
if [ "${ROOT}" != "${ROOT%/}" ]; then
ROOT="${ROOT%/}\x2f"
fi
IFS='/'
newroot=
for s in $ROOT; do
newroot="${newroot:+${newroot}\\x2f}${s}"
done
unset IFS
ROOT="${newroot}"
fi
esac
ROOT="/dev/disk/by-label/${ROOT}"
;;
UUID=*)
ROOT="/dev/disk/by-uuid/${ROOT#UUID=}"
;;
/dev/nfs)
[ -z "${BOOT}" ] && BOOT=nfs
;;
esac
;;
rootflags=*)
ROOTFLAGS="-o ${x#rootflags=}"
;;
rootfstype=*)
ROOTFSTYPE="${x#rootfstype=}"
;;
rootdelay=*)
ROOTDELAY="${x#rootdelay=}"
case ${ROOTDELAY} in
*[![:digit:].]*)
ROOTDELAY=
;;
esac
;;
resumedelay=*)
RESUMEDELAY="${x#resumedelay=}"
;;
loop=*)
LOOP="${x#loop=}"
;;
loopflags=*)
LOOPFLAGS="-o ${x#loopflags=}"
;;
loopfstype=*)
LOOPFSTYPE="${x#loopfstype=}"
;;
cryptopts=*)
cryptopts="${x#cryptopts=}"
;;
nfsroot=*)
NFSROOT="${x#nfsroot=}"
;;
netboot=*)
NETBOOT="${x#netboot=}"
;;
ip=*)
IP="${x#ip=}"
;;
boot=*)
BOOT=${x#boot=}
;;
ubi.mtd=*)
UBIMTD=${x#ubi.mtd=}
;;
resume=*)
RESUME="${x#resume=}"
;;
resume_offset=*)
resume_offset="${x#resume_offset=}"
;;
noresume)
noresume=y
;;
panic=*)
panic="${x#panic=}"
case ${panic} in
*[![:digit:].]*)
panic=
;;
esac
;;
quiet)
quiet=y
;;
ro)
readonly=y
;;
rw)
readonly=n
;;
debug)
debug=y
quiet=n
exec >/run/initramfs/initramfs.debug 2>&1
set -x
;;
debug=*)
debug=y
quiet=n
set -x
;;
break=*)
break=${x#break=}
;;
break)
break=premount
;;
blacklist=*)
blacklist=${x#blacklist=}
;;
netconsole=*)
netconsole=${x#netconsole=}
;;
BOOTIF=*)
BOOTIF=${x#BOOTIF=}
;;
hwaddr=*)
BOOTIF=${x#BOOTIF=}
;;
recovery)
recovery=y
;;
esac
Ну а дальше идут обработчики всего этого, если не понятно сразу что делает параметр, то нужно разбирать их.
Удачи.
я не такой наивный....
kostik87, это всё само собой сделал... но вот [console]$ file init
init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, BuildID[sha1]=b01d55a91d93f9cc9a888bb27d35d383470d3a63, stripped[/console]
нужны доки или хотя бы знать, из чего оно собирается...
[added]
Похоже init тут это родное сусёвоё поделие: https://github.com/openSUSE/linuxrc
Похоже init тут это родное сусёвоё поделие
А там уже не SystemD случаем? В Fedora LiveCD в initrd уже systemd, в таком случае нужно смотреть unit`ы systemd.
На LiveCD обычно список использованных опций ядерной командной строки можно добыть из {syslinux,isolinux}.cfg. Понимаю, что это совсем не то или не совсем то что нужно, но все же.
А чем это не устраивает?
Если вас интересует только загрузка, то загрузиться можно так:
для DVD:
linux /boot/$arch/loader/linux install=hd:/openSUSE-DVD.iso
initrd /boot/$arch/loader/initrdДля livecd:
linux /boot/$arch/loader/linux isofrom_device=/dev/sdaX isofrom_system=/openSUSE-Live.iso
initrd /boot/$arch/loader/initrdСмотрите в сторону kiwi
[console]
$ file init
init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, BuildID[sha1]=b01d55a91d93f9cc9a888bb27d35d383470d3a63, stripped
[/console]
Что-то вы путаете, скачал iso OpenSuse Gnome 13.1, вот содержимое /init: http://pastebin.com/HQ3sGGGu
А чем это не устраивает?
да это и искал... даже на страницу натыкался, но не думал, что дело в «install» +не нашёл в этом списке единственной опции, в которой доподлинно был уверен, что она поддерживается загрузчикам: showopts. Кстати, что это?
система загрузилась удовлетворительно...
Смотрите в сторону kiwi
на имя натыкался, пытался смотреть в её сторону, но так и не разобрался, что это... то ли приблуда для сборки живой/встроенной/виртуальной системы, то ли для сборки initrd, то ли часть системы начальной инициализации для хитрожопо-загружаемых систем...
На LiveCD обычно список использованных опций ядерной командной строки можно добыть из {syslinux,isolinux}.cfg. Понимаю, что это совсем не то или не совсем то что нужно, но все же.
livedvd похоже загружается грубом только он как-то наизнанку вывернут и конфига в открытом виде так и не нашёл... после того как прогнал через unetbootin я конечно дёрнул из syslinux'а пару значений, но ничего интересного...
Что-то вы путаете, скачал iso OpenSuse Gnome 13.1, вот содержимое /init: http://pastebin.com/HQ3sGGGu
аа... значит livecd собирается совсем по-другому... уже догадывался об этом, но был не до конца уверен...
ЗЫ: для истории, полный menuentry выглядит так:
menuentry "OpenSUSE-13.1-DVD-i586" {
set iso=/distro/openSUSE-13.1-DVD-i586.iso
set loader=/boot/i386/loader
loopback loop ${iso}
linux (loop)${loader}/linux initrd=${loader}/initrd install=hd:${iso}
initrd (loop)${loader}/initrd
}
ЗЗЫ: можно считать решено...
да это и искал... даже на страницу натыкался, но не думал, что дело в «install» +не нашёл в этом списке единственной опции, в которой доподлинно был уверен, что она поддерживается загрузчикам: showopts. Кстати, что это?
Опции передаваемые ядру на основе переменных киви. Именно эта наработка используется для сборки образов SUSE, а также предлагает сборку пользовательских проектов, используя susestudio. Это и есть основной причиной для записи образов на флеш носитель, используя собственную утилиту (imagewriter), а не подобные ей UNetbootin.