Я не знаком с psg
, но я знаю (твердый путь, так сказать), если я работаю ps ax | grep progname
видеть, работает ли какой-либо процесс, который содержит progname
, Я буду всегда получать a с тех пор grep progname
самостоятельно команда, которая содержит "progname".
Я не знаю жемчуг, но в ударе, я обхожу это как это, например, если я хочу проверить, работает ли какой-либо экземпляр progname, я работаю ps ax | grep -c "[p]rogname"
, который решает проблему всегда получения да.
Это дано во время начальной загрузки Вашим загрузчиком, например, Личинка.
Для наблюдения, с которых аргументов было запущено ядро сделайте это:
$ cat /proc/cmdline
Для меня, этого ouputs:
BOOT_IMAGE=/vmlinuz-3.5.0-13-generic root=/dev/mapper/crypt-precise--root ro
Таким образом, initrd/initramfs попытается смонтировать мой /dev/mapper/crypt-precise--root
(зашифрованный LVM) логический том как /
.
Можно реконфигурировать Личинку, чтобы загрузить другие операционные системы из жесткого диска с помощью того же ядра (мультиначальная загрузка) или отредактировать это время выполнения строки путем нажатия e при выборе (еще не загружающийся) запись Личинки.
Для недавних находящихся в Debian дистрибутивов, изменяя его постоянно работает как это:
(будьте осторожны, Вы не можете загружаться в свою исходную операционную систему снова!)
В файле /etc/default/grub
установите некоторых GRUB_CMDLINE_LINUX="root=/dev/mydevice"
самостоятельно и Личинка обновления путем выполнения update-grub
.
Однако я рекомендую Вам настроить мультиначальную загрузку, иначе не возможно изменить или обновить Вашу конфигурацию Личинки снова легко.
Учитывая загрузочный образ, Вы могли найти внутреннюю строку версии ядра с file
команда:
%> file /boot/vmlinuz-linux
/boot/vmlinuz-linux: Linux kernel x86 boot executable bzImage, version 3.5.3-1-NAME (X@Y) #1 SMP PREEMPT WEEK MON DAY, RO-rootFS, swap_dev 0x5, Normal VGA
На большинстве установок Вы указываете корневое устройство к загрузчику. Корневое устройство передается ядру, в качестве параметра названному root
. В зависимости от загрузчика это может быть частью параметров командной строки ядра (который может быть похожим ro quiet root=/dev/sda1
) или отдельная установка. Для некоторых общих загрузчиков:
/etc/lilo.conf
), существует a root
директива для указания на корневое устройство Linux./boot/grub/menu.lst
), корневое устройство передается как часть командной строки ядра (kernel
директива). Обратите внимание, что существует другое root
директива для самой Личинки; это говорит Личинку, где искать файлы, такие как ядро. Во многих системах конфигурационный файл Личинки сгенерирован update-grub
сценарий, который заполняет корневое устройство от установленной системы (использование /boot/grub/device.map
)./boot/grub/grub.cfg
), корневое устройство передается как часть командной строки ядра (linux
директива). Обратите внимание, что существует другое root
переменная (set root=(hd0,1)
) это говорит Личинку, где искать файлы, такие как ядро. Во многих системах конфигурационный файл Личинки сгенерирован update-grub
сценарий, который заполняет корневое устройство от установленной системы (использование /boot/grub/device.map
).bootargs
переменная среды. Двоичный файл подводной лодки содержит значение по умолчанию, испеченное в во время компиляции, который может быть переопределен установкой во флэш-памяти (если устройство разрешает).В отсутствие a root
параметр командной строки, initrd или initramfs, если используется, может попытаться найти, что корневой раздел монтируется. Даже в присутствии a root
аргумент, initrd или initramfs могут решить использовать другое устройство. Вызовы кода switch_root
переключаться от initrd до фактического корня.
Корневое устройство по умолчанию, когда существует нет root
параметр командной строки определяется во время компиляции. Можно изменить то значение в двухуровневом изображении с rdev
утилита.
На загруженном ядре Вы видите root
параметр (если таковые имеются), который был передан ядру в /proc/cmdline
. Вы видите существующее устройство, смонтированное на /
в /proc/mounts
.
Не уверен, что это все еще интересно, но для будущих гуглеров, таких как я:
При загрузке / установке из grub используются два отдельных корневых
каталога. Это корень grub и корень linux (я не уверен, что это технический термин).
Корень grub может быть установлен в grub.cfg
, и он определяет, какие файлы легко видны в grub. Корневой каталог grub по умолчанию должен быть корневым каталогом загрузочного диска grub, поэтому, если содержимое вашего загрузочного диска:
/boot/
/boot/grub2/
/boot/grub2/grub.cfg
...
Тогда расположение grub.cfg из корня grub будет /boot/grub2/grub.cfg
Корень grub можно изменить в grub.cfg, используя set root =
.
Вы можете использовать это, чтобы установить корень в каталог внутри текущего корня ( set root = / boot /
приведет к тому, что grub.cfg
будет расположен по адресу /grub2/grub.cfg
), который ведет себя аналогично chroot
в Linux.
Вы также можете изменить текущий корень на другой диск ( set root = (hd0,1)
установит ваш корень на hd0, раздел 1. Полный список устройств, которые вы можете использовать, см. страница grub об этом http://www.gnu.org/software/grub/manual/grub.html#Device-syntax ).
Хотя изменение корневого каталога grub может быть полезно, вы также можете префикс любого пути тем, что вы собираетесь использовать (например, linux (hd0,1): / boot / OS / RHEL / isolinux / vmlinuz
вместо сначала установите root = (hd0,1)
).Кроме того, после запуска ядра корень grub не имеет значения
Что касается корня Linux , это параметр, который вы можете передать ядру (vmlinuz) при его загрузке. Для этого вы можете передать ядру параметр root =
(это значение появится в / proc / cmdline)
Однако важно отметить, что этот новый корень, как ожидается, будет содержать корневую файловую систему Linux (см. для / etc / / var / и так далее). При установке вы предоставляете initrd (INITial Ram Disk), который содержит эти элементы, поэтому вам, вероятно, не нужно / не нужно менять корень Linux во время установки.
Если вы все же меняете корень Linux, будьте осторожны с установочным носителем Linux, который не является корневой файловой системой Linux, хотя внутри находится initrd.img.
Если вы пытаетесь использовать файлы в вашем iso в качестве аргументов вашего ядра, тогда есть решение. Если вы создадите устройство loopback в grub, оно будет сохраняться при запуске ядра (так что вы должны увидеть устройство с именем / dev / loop0
в корне Linux во время установки)
Я дам небольшой фрагмент файла grub.cfg, который относится к ISO и RHEL, в частности:
menuentry "RHEL" {
set isofile='/boot/iso/RHEL.iso' #this is just a grub variable
loopback loop $isofile #mount the $isofile with label=loop as a loopback device
set root=(loop) #set the grub root to the mounted iso (so / is the top level directory in the iso)
#this starts the kernel and passes the paramter inst.stage2 using the ISO and kickstart as a location on the loopback device created by grub (the syntax for this line is liable to change between distros)
linux /isolinux/vmlinuz noeject inst.ks=hd:/dev/loop0:/ks/ks.cfg inst.stage2=hd:LABEL=USBDRIVELABEL:/$isofile
initrd /isolinux/initrd.img #provide an initial ramdisk (which will become the **Linux root**
}
Имейте в виду, что синтаксис строки ядра в grub.cfg следующий:
linux [path to kernel] [kernel argument 1] [kernel argument 2] ...
Все аргументы ядра появятся в / proc / cmdline
. Важно отметить, что, поскольку они обрабатываются, синтаксис grub ядра недопустим.
Вы можете найти больше об этом в документации grub ( http://www.gnu.org/software/grub/manual/grub.html#Introduction )
и на странице Archwiki параметров ядра ( https://wiki.archlinux.org/index.php / kernel_parameters # GRUB )
, а также параметры загрузки для соответствующего дистрибутива (RHEL https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/ chap-anaconda-boot-options.html # list-boot-options-sources )
hd-media
префикс в документах. Кроме того, "Реальный корень настроен вinit
сценарий [...]" <-взят от параметра ядра, если initrd не настраивается для загрузки его из где-то в другом месте (как Debianhd-media
версия initrd.) – gertvdijk 01.10.2013, 19:54