Linux: загрузка в однопользовательском режиме (single mode)
Сегодня в статье поговорим о однопользовательском режиме (single mode). Single mode прекрасно подходит для изменения конфигурации системы или выполнения задач по ее обслуживанию. Кроме того, этот режим может быть единственно доступным при работе в поврежденной системе.
Чаще всего переход в однопользовательский режим выполняют путем передачи аргументов программе начальной загрузки. Однако обычно переход в однопользовательский режим с другого уровня выполнения можно выполнить с помощью команды telinit 1 . При этом перезагрузку можно и не выполнять. Если только не требуется устранять какую- либо проблему начальной загрузки.
В качестве меры безопасности корневой каталог системы монтируется в режиме только для чтения. Это вызывает ряд неудобств, если вам надо исправить что либо в системе. Чтобы выйти из положения, начните однопользовательский сеанс с повторного монтирования корневой директории в режиме чтения/записи. Нужное действие выполняет команда:
Конкретные процедуры перехода в однопользовательский режим при использовании загрузчиков GRUB и LILO различаются между собой.
7.3.3. Третий этап, /boot/loader
Передача управления загрузчику является последним, третьим этапом в
процессе начальной загрузки, а сам загрузчик находится в файловой
системе, обычно как /boot/loader.
Загрузчик являет собой удобный в использовании инструмент для
настройки при помощи простого набора команд, управляемого более мощным
интерпретатором с более сложным набором команд.
7.3.3.1. Процесс работы загрузчика
Во время инициализации загрузчик пытается произвести поиск
консоли, дисков и определить, с какого диска он был запущен.
Соответствующим образом он задаёт значения переменных и запускает
интерпретатор, которому могут передаваться пользовательские команды
как из скрипта, так и в интерактивном режиме.
Затем загрузчик читает файл
/boot/loader.rc, который по умолчанию использует
файл /boot/defaults/loader.conf, устанавливающий
подходящие значения по умолчанию для переменных и читает файл
/boot/loader.conf для изменения в этих
переменных. Затем с этими переменными работает
loader.rc, загружающий выбранные модули и
ядро.
И наконец, по умолчанию загрузчик выдерживает 10-секундную паузу,
ожидая нажатия клавиши, и загружает ядро, если этого не произошло.
Если ожидание было прервано, пользователю выдается
приглашение, которое воспринимает простой набор команд, в помощью
которых пользователь может изменить значения переменных, выгрузить
все модули, загрузить модули и окончательно продолжить процесс
загрузки или перезагрузить машину.
7.3.3.2. Встроенные команды загрузчика
Далее следуют наиболее часто используемые команды загрузчика.
Полное описание всех имеющихся команд можно найти на странице
справки о команде loader(8).
- autoboot секунды
-
Продолжает загрузку ядра, если не будет прерван в течение
указанного в секундах промежутка времени. Он выводит счетчик,
и по умолчанию выдерживается интервал в 10 секунд. - boot
[-параметры]
[имя ядра] -
Продолжить процесс загрузки указанного ядра, если оно было
указано, и с указанными параметрами, если они были
указаны. - boot-conf
-
Повторно провести тот же самый процесс автоматической
настройки модулей на основе переменных, что был произведен при
загрузке. Это имеет смысл, если до этого вы выполнили команду
unload, изменили некоторые переменные,
например, наиболее часто меняемую kernel. - help
[тема] -
Вывод сообщений подсказки из файла
/boot/loader.help. Если в качестве темы
указано слово index, то выводится список
имеющихся тем. - include имя файла
… -
Выполнить файл с указанным именем. Файл считывается и
его содержимое интерпретируется строчка за строчкой. Ошибка
приводит к немедленному прекращению выполнения команды
include. - load [-t
тип]
имя файла -
Загружает ядро, модуль ядра или файл указанного типа с
указанным именем. Все аргументы после имени файла передаются в
файл. - ls [-l]
[маршрут] -
Выводит список файлов по указанному маршруту или в корневом
каталоге, если маршрут не был указан. Если указан параметр
-l, будут выводиться и размеры файлов. - lsdev [-v]
-
Выводится список всех устройств, с которых могут быть
загружены модули. Если указан параметр -v,
выводится дополнительная информация. - lsmod [-v]
-
Выводит список загруженных модулей. Если указан параметр
-v, то выводится дополнительная
информация. - more имя файла
-
Вывод указанного файла с паузой при выводе каждой строки
LINES. - reboot
-
Выполнить немедленную перезагрузку машины.
- set переменная, set
переменная=значение -
Задает значения переменных окружения загрузчика.
- unload
-
Удаление из памяти всех загруженных модулей.
7.3.3.3. Примеры использования загрузчика
Вот несколько примеров практического использования
загрузчика:
-
Чтобы просто загрузить ваше ядро обычным образом, но в
однопользовательском режиме:boot -s
-
Для выгрузки обычных ядра и модулей, а потом просто загрузить
ваше старое (или другое) ядро:unload load kernel.old
Вы можете использовать kernel.GENERIC
для обозначения стандартного ядра, поставляемого на установочном
диске, или kernel.old для обращения к ранее
установленному ядру (после того, как, например, вы обновили или
отконфигурировали новое ядро). -
Для загрузки скрипта конфигурации ядра (автоматизированный
скрипт, который выполняет то, что вы обычно делаете в
конфигураторе ядра во время загрузки):load -t userconfig_script /boot/kernel.conf
7.27 Как правильно ограничивать трафик в squid?
Такая возможность появилась в squid 2.0 и называется delay pools. Прежде всего
проверьте, была ли включена эта возможность на этапе компиляции squid ключом утилиты
configure —enable-delay-pools.
В squid.conf нужно будет прописать нечто вроде:
Заметьте, что объекты из кэша не замедляются.
Поищите в архивах squid переписку по этому поводу, а точнее,
http://www.cineca.it/proxy/search/html/9812/139.html. Это письмо автора с подробными
разъяснениями. По слухам, реализация delay pools для class1 работает плохо, поэтому
уменьшать скорость работы нужно по class2, а для class1 сделать следующее:
Как загрузиться в однопользовательском режиме (Single Mode) в Linux CentOS
В этой статье будет рассказано, как загрузиться в однопользовательском режиме (Single Mode) в Linux на примере CentOS. Это может быть полезно для восстановления системы. Это также используется для сброса пароля на root или любых других пользователей.
2. Запомните. 3. Перезагрузите систему. 4. В начале загрузки нужно нажать любую клавишу, чтобы прервать процесс загрузки и взять управление на себя. 5. Выберите используемое ядро и нажмите e. В следующем окне выберите строку начинающуюся с kernel и нажмите e ещё раз. 6. В конце строчки вида “grub edit> kernel /vmlinuz-2.6.32.10-90.fc12.x86_64 ro root=UUID LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=dvorak rd_NO_DM” допишите через пробел single. Нажимаете “Enter” и в следующем меню жмите b, то есть boot. 7. Теперь загрузка произошла в однопользовательском режиме. 8. Проверяем, что мы находимся в этом режиме:
Буква S будет подтверждением.
Следующая загрузка произойдет в обычном режиме.
10.12 После обрыва связи уже забранная почта остается в почтовых ящиках пользователей, поэтому её не удается скачать полностью
Эта ситуация связана с особенностями функционирования сервера POP3. Клиент (как
правило, Internet Mail или Outlook Express) может выдавать команды на выдачу списка
писем, забор определенного письма, удаление письма и завершение сеанса работы. Однако
реальное удаление письма из почтового ящика происходит только после корректного
завершения сеанса работы с сервером POP3.
Конечно, должны быть клиенты, которые отслеживают списки писем и не скачивают повторно
уже забранное сообщение. Как утверждается, таким правильным клиентом является Eudora,
TheBat!, Pegasus Mail.
Outlook Express нужно настроить следующим образом: Advanced->Оставлять почту на
сервере. В этом случае Outlook Express хранит списки скачанных писем и все работает так,
как надо.
Netscape настраивается подобным же образом.
6.54 Как использовать возможности socks5?
socks5 предназначен для работы в качестве универсального проксирующего сервера, однако
он требует поддержки протокола socks5 со стороны клиентского программного обеспечения
(такими, например, являются стандартный клиент ICQ для Windows, ssh для FreeBSD) либо
использования специального программного обеспечения, позволяющего использовать
стандартное программное обеспечение (таким, например, является программа runsocks,
входящая в комплект socks5).
Примеры конфигурационных файлов:
Для socks5-сервера (файл /usr/local/etc/socks5.conf):
Для socks5-клиента (файл /usr/local/etc/libsocks5.conf):
7.3.2. Этап первый, /boot/boot1, и этап второй, /boot/boot2
Концептуально первый и второй этапы загрузки являются частями одной
и той же программы, в той же самой области диск. Из-за ограничений на
объем дискового пространства они были разделены на две, но вы всегда
должны устанавливать их вместе.
Они располагаются в загрузочном секторе загрузочного слайса,
то есть там, где или
любая другая программа из MBR ожидает найти
программу, которую следует запустить для продолжение процесса загрузки.
Файлы в каталоге /boot являются копиями реальных
файлов, которые хранятся вне файловой системы FreeBSD.
boot1 очень прост, так как он тоже может иметь
размер, не превышающий 512 байт, и знает достаточно о метке
диска FreeBSD, хранящей информацию о слайсе, для того,
чтобы найти и запустить boot2.
boot2 устроен несколько более сложно, и умеет
работать с файловой системой FreeBSD в объёме, достаточном для
нахождения в ней файлов, и может предоставлять простой интерфейс для
выбора и передачи управления ядру или загрузчику.
Так как устроен
гораздо более сложно, и дает удобный и простой способ настройки
процесса загрузки, boot2 обычно запускает его,
однако раньше его задачей был запуск непосредственно самого
ядра.
Example 7-2. Образец экрана boot2
>> FreeBSD/i386 BOOT Default: 0:ad(0,a)/kernel boot:
Если вам когда-либо понадобится заменить установленные
boot1 и boot2, то используйте
утилиту disklabel(8).
# disklabel -B diskslice
Здесь diskslice являются диском и
слайсом, с которых вы загружаетесь, такие, как
ad0s1 в случае первого слайса на первом диске
IDE.
8.10 Не работает ввод русских букв в xterm, запущенном на локальной консоли в XFree86.
Это связано с ошибкой локализации в дистрибутиве X Window, поставляемой с
2.2.8-RELEASE. xterm ищет файлы локализации в каталоге ${X11BASE}/lib/X11/locale, а
например, ports/russian/X.language, устанавливает их в ${X11BASE}/lib/X11/nls.
Соответственно нужно просто переписать файлы локализации в нужный каталог.
Самый простой способ: Закомментарить в файле
${X11BASE}/lib/X11/locale/koi8-r/XLC_LOCALE строчку encoding_name KOI8-R
Если вы можете пересобрать XFree86 из портов, то должен помочь следующий патч:
Нужно просто положите его в /usr/ports/x11/XFree86/patches и пересобрать XFree86.
Еще способ: Изменить в /etc/XF86Config строчку XkbLayout с su на ru
Еще один способ: Запускать xterm, не имея установленных значений для LANG/LC_ALL
1.3 В чём разница между 2.2.8-RELEASE и 3.0-RELEASE?
2.2.8-RELEASE является последним релизом в ветви 2.2-stable. Считается,
что 3.0-RELEASE
— всё ещё экспериментальный релиз, а 2.2.x — стабильный, проверенный временем, однако с
некоторыми принципиальными недостатками (например, работа VM). Есть мнение, что FreeBSD
2.2.8 предпочтительней ставить на сервер, а 3.0-RELEASE — на рабочие станции (правда,
хорошо подумав
Основные изменения по сравнению с предыдущим релизом описываются в файле RELNOTES.TXT, который находится в корневом каталоге дистрибутива
соответствующей версии FreeBSD, например, для 3.0-RELEASE, этот файл находится по адресу
ftp://ftp.freebsd.org/pub/FreeBSD/3.0-RELEASE/RELNOTES.TXT.
Что нового в 3.0-RELEASE:
-
переход на формат ELF
-
поддержка вызова poll() вместо select()
-
новый подход к дисковой подсистеме — через CAM
-
улучшена работа с APM — на
материнских платах ATX можно
отключить кнопку выключения питания и выключать компьютер командой halt -p . -
много чего ещё
7.39 Поделитесь методами учета пользователей для мелкого провайдера?
Командой last из wtmp выбирается информация о работе пользователей, по ним с учетом
тарифа выставляется счет. Если не нужна статистика в реальном времени, можно запускать
обработку раз в сутки.
В базу данных заносятся записи о времени входа и времени выхода из системы, потом
считается.
Для поминутного учета можно, например, запускать по cron команду w, по ней выяснять
пользователей, работающих в данный момент, и записывать в базу.
Добавление записей в базу можно сделать в скрипте /etc/ppp/ip-down
Например так:
Правда, учтите, что ключ -s для выдачи времени в секундах появился только в последних
релизах (2.2.8).
3.7 Что означает сообщение /kernel: sioX: Y more silo overflow (total Z)?
Такие сообщения появляются, когда некий процесс не успевает считывать буферы приема от
коммуникационного адаптера, как правило, на медленных машинах при работе «тяжелых»
приложений типа X-сервера или при завышенной скорости обмена с последовательным портом.
Проблема решается увеличением внутренних буферов ядра, на предмет чего существовал
патчик, который стоит поискать в списках рассылки по ключевому слову silo overflow.
Вообще это сообщение никаких сторонних эффектов не вызывает.
Попробуйте исправить файл /sys/i386/isa/sio.h следующим образом: #define
RB_I_HIGH_WATER (TTY_HOG / 2) #define RS_IBUFSIZE (TTYHOG / 4) и в файл конфигурации ядра
добавить: options «MSIZE=256» options «TTYHOG=4096»
Другой причиной может быть конфликт IRQ, который занимает коммуникационный адаптер
(или внутренний модем) с каким-то оборудованием. Рекомендуется ставить стандартные
значения IRQ для последовательных портов, то есть 4 и 3 для sio и sio
соответственно.
How to Boot into Single User Mode in CentOS/RHEL 7
Single User Mode (sometimes known as Maintenance Mode) is a mode in Unix-like operating systems such as Linux operate, where a handful of services are started at system boot for basic functionality to enable a single superuser perform certain critical tasks.
It is runlevel 1 under system SysV init, and runlevel1.target or rescue.target in systemd. Importantly, the services, if any, started at this runlevel/target varies by distribution. It’s generally useful for maintenance or emergency repairs (since it doesn’t offer any network services at all), when a computer is not capable of normal operations.
Some of the low-level repairs include running such as fsck of damaged disk partitions, reset root password if you have lost it, fix “failed to mount /etc/fstab” error – just to mention the most critical of them. And also when the system fails to boot normally.
In this tutorial, we will describe how to boot into single user mode on CentOS 7. Note that practically this will help you enter the emergency mode and access an emergency shell.
How to Boot into Single User Mode
1. First restart your CentOS 7 machine, once boot process starts, wait for the GRUB boot menu to appear as shown in the screen shot below.
2. Next, select your Kernel version from the grub menu item and press e key to edit the first boot option. Now use the Down arrow key to find the kernel line (starts with “linux16“), then change the argument ro to rw init=/sysroot/bin/sh as shown in the screen shot below.
3. Once you have finished the task in the previous step, press Ctrl-X or F10 to boot into single user mode (access an emergency shell).
4. Now mount root (/) filesystem using the following command.
At this point, you can perform all the necessary low-level system maintenance tasks. Once you are done, reboot the system using this command.
You may also liked to read following articles.
Lastly, the single user mode or maintenance mode is not password-protected by default, so any one with malicious intend and physical access to your computer can enter the emergency mode and “destroy” your system.
Next, we will show you how to password-protect single user mode on CentOS 7. Until then, stay connected to Tecmint.com.
12.9 Почему во FreeBSD русификация стандартно сделана через scrnmap из koi8-r в cp866, а не непосредственно koi8-r?
На самом деле существует два способа русификации консоли FreeBSD. Первый способ
заключается в установке шрифтов koi8-r и изменении параметра ядра SC_MOUSE_CHAR. Второй
сводится к использованию шрифтов cp866 и scrnmap из koi8-r в cp866.
Стандартным для FreeBSD является использование второго способа. Дело в том, что
некоторые видеоадаптеры аппаратно и неотключаемо расширяют символы (то есть копируют
девятый бит изображения символа из его восьмого бита), соответствующие псевдографике в
оригинальной таблице символов. При использовании шрифтов koi8-r псевдографика получается
«рваной», а русские буквы сливаются. Кроме того, при использовании мыши на консоли в
случае использования шрифтов koi8-r происходит порча символов на экране и необходимо
переопределять SC_MOUSE_CHAR в конфигурационном файле ядра следующим образом:
Для других адаптеров можно выбрать использование шрифтов koi8-r без использования
scrnmap, однако способ с использованием scrnmap более универсален. В частности, для
просмотра информации в других кодировках достаточно сменить scrnmap, например,
cp1251-cp866.
Более подробную информацию о русификации консоли можно найти по адресу http://www.tsu.ru/~pascal/unix/syscons/russian.html
3.6 Что означает сообщение /kernel ed1: promiscious mode enabled?
Это значит, что сетевой адаптер был переведен в режим, при котором он будет принимать
пакеты, предназначенные не только ему, но и все, проходящие по сети. Режим включается при
запуске утилит типа tcpdump или trafshow (и выключается при корректном завершении их
работы.
Если вы не запускали подобные утилиты, то скорее всего, злобные кракеры уже заломали
вашу машину и запускают сниффер на соответствующем интерфейсе.
При запуске утилиты trafshow с ключом -p этот режим не включается.
Обратите внимание, что при работе с активным сетевым оборудованием, типа Catalyst или
LinkBuilder, имеется возможность запрета прохождения _всего_ трафика на сетевой адаптер,
то есть даже в этом режиме сетевой адаптер ничего, кроме пакетов, адресованных ему, от
него, запросов ARP, мультикаста, широковещательных, не увидит. Чтобы запретить перевод сетевого адаптера в этот режим, нужно исправить/убрать в
драйвере адаптера ioctl, реализующий этот режим, либо изменить настройки активного
сетевого оборудования для этой машины
Можно также изменить ядро следующим образом:
/usr/src/sys/net/if.c: ifp->if_flags = (ifp->if_flags & IFF_CANTCHANGE) | —
(ifr->ifr_flags &~ IFF_CANTCHANGE); + (ifr->ifr_flags &~ (IFF_CANTCHANGE
| IFF_PROMISC));
Чтобы запретить перевод сетевого адаптера в этот режим, нужно исправить/убрать в
драйвере адаптера ioctl, реализующий этот режим, либо изменить настройки активного
сетевого оборудования для этой машины. Можно также изменить ядро следующим образом:
/usr/src/sys/net/if.c: ifp->if_flags = (ifp->if_flags & IFF_CANTCHANGE) | —
(ifr->ifr_flags &~ IFF_CANTCHANGE); + (ifr->ifr_flags &~ (IFF_CANTCHANGE
| IFF_PROMISC));
1.6 Как самому сделать компакт-диск с дистрибутивом FreeBSD?
Первым делом нужно сделать зеркало официального каталога с соответствующим релизом
FreeBSD, например, взяв ftp://ftp.gamma.ru/pub/FreeBSD/3.2-RELEASE. Зеркало нужно делать с
сохранением регистра всех файлов, поэтому это лучше делать из-под FreeBSD утилиткой,
поддерживающей зеркалирование, типа lftp.
Нужно зазеркалировать каталоги bin, catpages, compat1x, compat20, compat21, dict, doc, flopppies, games, info, manpages, ports, proflibs, src, XF86333, tools, а также взять файлы в корне каталога с релизом (*.TXT,
*.inf). Каталог des брать не следует, так как он содержит
программное обеспечение, запрещённое к использованию вне пределов США. Кроме того, вы
можете взять дополнительные программы из каталогов xperimnt и
commerce.
Всё выкачанное складывается в один каталог, скажем, /usr/cd, так же, как и на
официальном мирроре (то есть файл cdrom.inf должен находиться в
каталоге /usr/cd)
Обратите внимание, что общий размер не должен превышать 650 Мб (325000
extents), максимум 330000 extents.
Во FreeBSD нужно установить порт (или пэкидж) sysutils/mkhybrid
Выполняем команду # mkhybrid -b floppies/boot.flp -h -r -J -o cdimage.iso usr/cd/ -b
Бутявый сидюк получается, круто -h гибридный имедж (чтоб и под МастДаем читались
длинные имена) -r Generate Rock Ridge + что то там полезное делает с пропертями файлов -J
Generate the Joliet extensions (расширение МастДая) -o имя имеджа, в который будет все
енто хозяйство литься.
6.27 Какой тип PPP — user level или kernel предпочесть?
В настоящее время наиболее активно поддерживается user level ppp, хотя есть мнение,
что pppd лучше.
Также есть сообщения, что ppp и pppd запускаются с разной вероятностью успеха на
разных версиях FreeBSD.
рекомендуется сначала попробовать pppd, так как его конфигурационный файл в /etc/ppp,
входящий в поставку системы, проще модифицировать.
В Руководстве описано, как настроить mgetty для работы с ppp, хотя в конфигурационном
файле из дистрибутива используется pppd. Там всё сводится примерно к 1) Раскомментировать
строчку AutoPPP в login-файле mgetty 2) Исправляются параметры запуска pppd (+PAP -CHAP
-login и так далее) При входящем звонке mgetty распознает PPP и запустит pppd.
7.3.1 MBR, /boot/boot0
MBR для FreeBSD находится в /boot/boot0. Это копия MBR, так как настоящая MBR должна
располагаться в специальном месте диска, вне области FreeBSD.
boot0 очень прост, так как программа в MBR может иметь размер, не превышающий 512 байт. Если вы установили
MBR FreeBSD и несколько операционных систем на ваш жесткий диск, то во время загрузки вы
увидите нечто похожее на следующее:
Example 7-1. Образец экрана boot0
F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2
Известно, что другие операционные системы, в частности, Windows 95, записывают поверх существующей MBR свою
собственную. Если так случилось в вашем случае, или же вы хотите заменить существующую
MBR на MBR от FreeBSD, то воспользуйтесь следующей командой:
# fdisk -B -b /boot/boot0 device
Здесь device является устройством, с которого вы
загружаетесь, таким, как ad0 в случае первого диска IDE, ad2 в случае первого диска IDE на втором контроллере IDE, da0 для первого диска SCSI и так далее.
Однако если вы используете Linux и предпочитаете, чтобы процесс загрузки управлялся
через LILO, вы можете отредактировать файл /etc/lilo.conf для FreeBSD или выбрать Leave
The Master Boot Record Untouched в процессе установки FreeBSD. Если вы установили
менеджер загрузки FreeBSD, то вы можете снова загрузить Linux и изменить конфигурационный
файл /etc/lilo.conf для LILO,
добавив следующий параметр:
other=/dev/hdXY table=/dev/hdb loader=/boot/chain.b label=FreeBSD
9.23 Где взять серверную часть игры Quake?
Сервер для Quake I имеется в коллекции портов.
Должна подойти версия для Linux. Ссылка и информация по установке есть на сервере
quake.demos.su. Также попробуйте www.quake2.ru. И еще
http://www.3dgw.com/hellsgates/serverguide.htm А также quake.rtsnet.ru И еще http://www.atomigate.com:80/quake/server/ ftp://vsis.miem.edu.ru Из
/usr/local/etc/rc.d запускается quake2.sh: #!/bin/sh cd /usr/local/quake2 quake2 +set
dedicated 1 +exec server.cfg & server.cfg настраивается, например, так: set timelimit
20 set maxclients 16 set dmflags 280084 set sv_maplist «q2dm1 q2dm2 q2dm3 q2dm4 q2dm5
q2dm6 q2dm7 q2dm8» set gamename yamalinfo map q2dm1
Некоторая информация есть на сервере www.planetquake.com, там же можно найти и
сервер.
4 Answers 4
To boot into single user mode you edit the boot instructions for the GRUB menu entry you wish to boot and add the kernel parameter/option single . Brief instructions for how to do this are below.
- Hold down the left Shift key while rebooting to bring up GRUB menu
- Select (highlight) the GRUB boot menu entry you wish to use.
- Press e to edit the GRUB boot commands for the selected boot menu entry.
Look near the bottom of the list of commands for lines similar to
Change the middle line in (4) by adding the kernel boot parameter single to the end of the line (i.e. after ro quiet splash ).
For this example you would change:
Press either Ctrl + X or F10 to boot using these kernel options.
Note: These changes are not persistent. Any change to the kernel boot options made this way will only affect the next boot and only if you start that boot by pressing either Ctrl + X or F10 while still in GRUB edit mode.