Linux boot parameter root

description of linux kernel boot parameters ‘real_root’ and ‘cdroot’

I have problems tuning them to create my own bootable LiveUSB system. Are they specific to my distribution (Gentoo)?

1 Answer 1

  • root is the device you want to be mounted up as the root file system when the kernel first starts. This is pretty self explanitory, but it gets complicated because this can actually change over time. The usual reason that happens is when the kernel doesn’t have the modules it needs to mount the root file system. In that case a system called initrd is used. An initrd image is basically a small compressed file system with a few goodies like drive controller or network modules that the kernel is going to need to read the real root file system and continue booting. In this case the initrd image becomes root, and.
  • real_root is going to be the actual root partition matching your entry in /etc/fstab . If you don’t use initrd, this option can be omitted in favor of just using root. As long as we’re on the topic, there is also nfsroot which is specifically for situations where the root file system will be an NFS mounted remote file system and networking needs to be initiated before the final root file system can be mounted.
  • cdroot I don’t recognize, but it probably has to do with the special way your Live distro is setup and would denote where to find the LiveCD/Image as opposed to the virtual file system or that is the root of the running live distro. In searching it seems to show up mostly with Gentoo LiveUSB/CD builds, so it may be proprietary. It often does not have an argument, so it might simply be a flag to denote that the root media is a CD so that later processes can know.

@Franciois: Be sure to check back, you might get some even better answers. There are people here that know more than I do about that area in general and Gentoo in specific, so don’t run too far away 🙂

Источник

Kernel parameters (Русский)

Состояние перевода: На этой странице представлен перевод статьи Kernel parameters. Дата последней синхронизации: 2 июля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Существует три способа передачи параметров ядру и контроля над ним:

  1. При сборке ядра — через файл config . Полная информация Ядро#Компиляция.
  2. При запуске ядра — используя параметры командной строки (обычно через загрузчик).
  3. На этапе выполнения — через файлы в /proc/sys/ (смотрите sysctl) и /sys/ ).
Читайте также:  Гибрид windows и linux

Настраиваемые в этих способах параметры различаются по доступности, имени и методу, в котором они указаны. Эта страница объясняет только второй метод (параметры командной строки ядра) и показывает список наиболее часто используемых параметров ядра в Arch Linux.

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

Параметры, задаваемые в командной строке, имеют формат параметр или параметр=значение .

Совет: Параметры для загружаемых модулей также можно задать через файлы .conf в каталоге /etc/modprobe.d/ . Смотрите Модуль ядра#С помощью файлов в /etc/modprobe.d/.

Настройка

  • Посмотреть параметры, с которыми сейчас загружена система, и проверить, применились ли ваши изменения, можно с помощью команды cat /proc/cmdline .
  • Установочный носитель Arch Linux использует Syslinux на BIOS-системах и GRUB на UEFI.

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

Примеры ниже демонстрируют, как добавить параметры quiet и splash в Syslinux, systemd-boot, GRUB, GRUB Legacy, LILO и rEFInd.

Syslinux

linux /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw initrd=/boot/initramfs-linux.img quiet splash
  • Для сохранения изменений между перезагрузками измените файл /boot/syslinux/syslinux.cfg и добавьте их в строку APPEND :
APPEND root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

Полную информацию по настройке можно прочитать в статье Syslinux.

systemd-boot

initrd=\initramfs-linux.img root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash
  • Если значение таймаута меню не установлено, во время загрузки зажмите пробел, чтобы меню systemd-boot появилось.
  • Если вы не можете изменить параметры из меню загрузки, может понадобиться изменить файл /boot/loader/loader.conf и добавить editor 1 чтобы разрешить редактирование.
  • Для сохранения изменений между перезагрузками измените файл /boot/loader/entries/arch.conf (предполагается, что у вас настроен системный раздел EFI) и добавьте их в строку options :
options root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash

Полную информацию по настройке можно прочитать в статье systemd-boot.

GRUB

linux /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash
  • Для сохранения изменений между перезагрузками, если вы не используете grub-mkconfig, можно изменить эту же строку напрямую в файле /boot/grub/grub.cfg , а для grub-mkconfig измените файл /etc/default/grub и добавьте параметры внутри кавычек в строке GRUB_CMDLINE_LINUX_DEFAULT :
GRUB_CMDLINE_LINUX_DEFAULT
# grub-mkconfig -o /boot/grub/grub.cfg

Полную информацию по настройке можно прочитать в статье GRUB (Русский).

GRUB Legacy

kernel /boot/vmlinuz-linux root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash
  • Для сохранения изменений между перезагрузками измените файл /boot/grub/menu.lst и добавьте их в строку kernel аналогично примеру выше.

Полную информацию по настройке можно прочитать в статье GRUB Legacy (Русский).

LILO

image=/boot/vmlinuz-linux . quiet splash

Полную информацию по настройке можно прочитать в статье LILO.

rEFInd

  • На нужном пукте меню нажмите + , F2 или Insert и нажмите ещё раз в нужном подменю. Добавьте параметры ядра в конце строки:
root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw initrd=\boot\initramfs-linux.img quiet splash
  • Для сохранения изменений между перезагрузками измените файл /boot/refind_linux.conf и добавьте их внутри кавычек во всех нужных строках, например
"Boot using default options" "root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 rw quiet splash"
  • Если вы отключили автоматическое определение ОС в rEFInd и вместо этого определяете разделы ОС в esp/EFI/refind/refind.conf для загрузки своих ОС, вы можете отредактировать его следующим образом:
Читайте также:  Linux which command options

Полную информацию по настройке можно прочитать в статье rEFInd (Русский)

EFISTUB

dracut

dracut может встраивать параметры ядра в initramfs, что позволяет исключить их из конфигурации загрузчика. Смотрите dracut#Kernel command line options.

Взлом cmdline

Даже без доступа к загрузчику можно изменить параметры ядра, чтобы включить отладку (если у вас есть root-доступ). Это можно сделать, перезаписав /proc/cmdline , в котором хранятся параметры ядра. Однако /proc/cmdline недоступен для записи даже для root, но это можно обойти с помощью bind mount.

Сначала создайте файл, содержащий желаемые параметры ядра

root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3 ro console=tty1 logo.nologo debug

Затем сделайте bind mount, перекрыв старый файл с параметрами новым:

# mount -n --bind -o ro /root/cmdline /proc/cmdline

Параметр -n пропускает добавление записи в /etc/mtab , поэтому он будет работать, даже если корневая ФС примонтирована только для чтения. Вы можете выполнить cat /proc/cmdline , чтобы убедиться в успешности изменений.

Список параметров

Список не исчерпывающий. Полный список можно посмотреть в документации к ядру.

Параметр Описание
init Запустить указанный исполняемый файл вместо /sbin/init в качестве процесса init. Пакет systemd-sysvcompat создаёт символическую ссылку /sbin/init , указывающую на /usr/lib/systemd/systemd , для использования systemd. Укажите /bin/sh для загрузки в командную оболочку.
initrd Путь к образу начальной файловой системы (initramfs). Для загрузчиков UEFI и EFISTUB необходимо использовать обратный слэш ( \ ) в качестве разделителей в пути.
cryptdevice Расположение раздела, зашифрованного с dm-crypt, плюс имя device mapper.
debug Включить отладку ядра (уровень журнала событий).
lsm Установить порядок инициализации модулей безопасности Linux, используется для включения AppArmor, SELinux или TOMOYO.
maxcpus Максимальное количество процессоров, которые ядро SMP будет задействовать во время загрузки.
mem Принудительное использование определённого количества используемой памяти.
netdev Параметры сетевых устройств.
nomodeset Отключить Kernel mode setting.
panic Время до автоматической перезагрузки при панике ядра.
resume Указать устройство подкачки, которое будет использоваться при выходе из гибернации.
ro При загрузке монтировать корневую ФС только в режиме чтения (используется по умолчанию 1 ).
root Корневая файловая система. Смотрите список поддерживаемых форматов имён устройств в файле init/do_mounts.c. Имейте в виду, что initramfs с udev поддерживает больше форматов имён.
rootflags Параметры монтирования корневой ФС. Полезно для настройки параметров, которые нельзя применить при перемонтировании (например, с помощью systemd-remount-fs.service(8) ). Например, опция discard для XFS.
rw При загрузке монтировать корневую ФС в режиме чтения/записи.
systemd.unit Загрузка в указанную цель.
video Переопределить стандартные настройки фреймбуффера.

1 mkinitcpio использует ro по умолчанию, если загрузчик не устанавливает ни rw , ни ro . Загрузчики могут устанавливать используемое значение, например, GRUB по умолчанию использует rw (смотрите FS#36275).

Читайте также:  Rename file in directory linux

Смотрите также

Источник

Загрузка операционной системы из командной строки Grub

У меня на домашнем компьютере стоит две операционные системы, Windows 7 и Linux (Arch). Причем вторая появилась относительно недавно. Да и особых знаний о новой (для меня) ОС не было. Тем не менее систему я поставил и даже относительно настроил под себя. Энтузиазм и программерское любопытство меня пересиливало, поэтому, в качестве ознакомления, стал экспериментировать с различного рода пакетами. К сожалению, не всегда вчитываясь в детали.
Решил я переставить Grub, а точнее обновиться до Grub2. (Слышал я такое мнение, что в духе Linux принято держать последнюю версию пакета… Про изменения Grub2 хорошо написано тут.)
Ну и как результат «спешной» установки — перестала грузиться система. Единственное за что можно было зацепиться — это приглашение командной строки:

По нажатию на Tab вываливается список возможных команд. Их существенно меньше чем в командной строке Linux, но их достаточно для загрузки системы. Почитав про grub тут я решил загрузить Windows, все-таки тут я пока себя чувствую увереннее. Для этого нужно было указать где находиться загрузчик ОС и передать ему управление:

grub> root (hd0,2) [Устанавливаем корневой раздел и монтируем. Тут главное помнить, на каком разделе стоит операционная система]

Запись (hd0,2) означает устройство диска номер 0 (мастер), раздел номер 2.
что соответствует устройству /dev/sda2 (в моем случае). У вас это может быть или /dev/hd2, или еще что-нибудь, в зависимости от дистрибутива. Нумерация устройств идет по-порядку и начинается с (hd0,1) или /dev/sda1.
Далее вводим:

grub> chainloader +1 [пробел перед «+» важен. сhainloader — передает управление загрузкой по цепочке другому загрузчику. В моем случае это был NTLDR]
grub> boot

NTLDR — это загрузчик Windows.
Система стала грузиться, а раз это дало результат — можно копаться дальше (все-таки не Windows теперь предмет изучений).
Перезагружаемся и вводим снова.

grub> root (hd0,6)
grub> linux /boot/vmlinuz26 root=/dev/sda6 [Загружает указанное linux-ядро (/boot/vmlinuz26) с параметрами(root=/dev/sda6)]

Тут стоит различать команду root (hd0,6) и параметр root=/dev/sda6. Первое монтирует раздел к среде выполнения. А второе указывает где находиться root загружаемой ОС. В моем случае ядро и корень оказались на одном разделе, хотя это может быть не так.

grub> initrd /boot/kernel26.img [Загружает указанный initrd-образ]
grub> boot

  • для загрузки Windows вместо root (h d0,2) надо набирать rootnoverify (hd0,1). Нумерация устройств начинается с (hd0,0), а не (hd0,1). А командой rootnoverify вы устанавите корневое устройство, но не смонтируете его.
  • для загрузки Linux поменяется другая команда: вместо linux вам понадобится команда kernel (полный аналог, даже параметры теже).

UPD: дописал про отличия загрузки с grub от grub2. Спасибо bliznezz

Источник

Оцените статью
Adblock
detector