LinuxForum.Fans
Тема

список загрузочных опций для dvd/livecd

Автор: Fat-Zer 9 сообщений 2244 просмотров
31.08.2014 14:48 #391435

кто знает, где раздобыть список поддерживаемых загрузочных опций для initrd (те что передаются в загрузчике в cmdline ядра)?

Цель — добавление opensuse на мультизагрузочную флешку.

31.08.2014 16:52 · отредактировано #391459
"Fat-Zer" написал:
где раздобыть список поддерживаемых загрузочных опций для initrd

Из init сценария в initrd.

Создаёте директорию, куда будет распакова initrd и переходите в неё:

text

mkdir /tmp/initrd
cd /tmp/initrd

Распаковываете initrd:

text

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)

Показать
text

# 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

Ну а дальше идут обработчики всего этого, если не понятно сразу что делает параметр, то нужно разбирать их.

Удачи.

31.08.2014 17:59 · отредактировано #391474

я не такой наивный....
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

31.08.2014 19:06 #391479
"Fat-Zer" написал:
Похоже init тут это родное сусёвоё поделие

А там уже не SystemD случаем? В Fedora LiveCD в initrd уже systemd, в таком случае нужно смотреть unit`ы systemd.

31.08.2014 21:24 #391515

На LiveCD обычно список использованных опций ядерной командной строки можно добыть из {syslinux,isolinux}.cfg. Понимаю, что это совсем не то или не совсем то что нужно, но все же.

31.08.2014 22:03 · отредактировано #391517

А чем это не устраивает?
Если вас интересует только загрузка, то загрузиться можно так:
для DVD:

text
linux /boot/$arch/loader/linux install=hd:/openSUSE-DVD.iso
initrd /boot/$arch/loader/initrd

Для livecd:

text
linux /boot/$arch/loader/linux isofrom_device=/dev/sdaX isofrom_system=/openSUSE-Live.iso
initrd /boot/$arch/loader/initrd

Смотрите в сторону kiwi

31.08.2014 22:34 #391525
"Fat-Zer" написал:

[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

01.09.2014 07:57 #391557
"aliaksei1818" написал:
А чем это не устраивает?

да это и искал... даже на страницу натыкался, но не думал, что дело в «install» +не нашёл в этом списке единственной опции, в которой доподлинно был уверен, что она поддерживается загрузчикам: showopts. Кстати, что это?
система загрузилась удовлетворительно...

"aliaksei1818" написал:
Смотрите в сторону kiwi

на имя натыкался, пытался смотреть в её сторону, но так и не разобрался, что это... то ли приблуда для сборки живой/встроенной/виртуальной системы, то ли для сборки initrd, то ли часть системы начальной инициализации для хитрожопо-загружаемых систем...

"yars" написал:
На LiveCD обычно список использованных опций ядерной командной строки можно добыть из {syslinux,isolinux}.cfg. Понимаю, что это совсем не то или не совсем то что нужно, но все же.

livedvd похоже загружается грубом только он как-то наизнанку вывернут и конфига в открытом виде так и не нашёл... после того как прогнал через unetbootin я конечно дёрнул из syslinux'а пару значений, но ничего интересного...

"kostik87" написал:
Что-то вы путаете, скачал iso OpenSuse Gnome 13.1, вот содержимое /init: http://pastebin.com/HQ3sGGGu

аа... значит livecd собирается совсем по-другому... уже догадывался об этом, но был не до конца уверен...

ЗЫ: для истории, полный menuentry выглядит так:

text

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
}

ЗЗЫ: можно считать решено...

07.09.2014 06:33 · отредактировано #392123

да это и искал... даже на страницу натыкался, но не думал, что дело в «install» +не нашёл в этом списке единственной опции, в которой доподлинно был уверен, что она поддерживается загрузчикам: showopts. Кстати, что это?

Опции передаваемые ядру на основе переменных киви. Именно эта наработка используется для сборки образов SUSE, а также предлагает сборку пользовательских проектов, используя susestudio. Это и есть основной причиной для записи образов на флеш носитель, используя собственную утилиту (imagewriter), а не подобные ей UNetbootin.

Войдите или зарегистрируйтесь, чтобы ответить.