Участник:HihinRuslan/Заметки на полях: различия между версиями
(не показано 67 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
==Решение проблемок== | |||
=== | === Сборка в girar через src.rpm пакетов === | ||
1. Подписываем пакет | |||
rpm --addsign путь/пакет.src.rpm | |||
2. Загружаем пакеты в girar, например так : | |||
rsync --progress -va /home/$HOME/incoming/Sisyphus/$(cd /home/$HOME/incoming/Sisyphus/ && ls *.src.rpm) girar: | |||
Дальше, например : | |||
ssh girar build --test-only srpm $(cd /home/$HOME/incoming/Sisyphus/ && ls *.src.rpm) | |||
Отменить наследование (от git) | |||
ssh girar task check-git-inheritance <task_id> <subtask_number> disable <hsh последнего коммита> | |||
=== SimplyLinuх вместо русских букв квадратики=== | |||
1. Установил fbset | |||
2. Прописал в /etc/sysconfig/framebuffer | |||
'''ENABLE=yes''' | '''ENABLE=yes''' | ||
Строка 15: | Строка 30: | ||
'''TTYS='1 2 3 4 5 6 12'''' | '''TTYS='1 2 3 4 5 6 12'''' | ||
3. Перезапустил fbsetfont | |||
'''service fbsetfont restart ''' | |||
=== Работа с образами типа vdi=== | |||
==== Работа с *.img и *.vdi образом ==== | |||
{{note|для работы с реальными дисками пользователь должен входить в группу disk}} | |||
* Создание из образа .img образ.vdi | |||
<source lang="text"> | |||
qemu-img convert -f raw -O vdi flash_tde_32.img flash_tde_32.vdi | |||
VBoxManage convertfromraw flash_tde_32.img flash_tde_64.vdi --format VDI | |||
</source> | |||
* Создание образа с реального железа (флешки) | |||
<source lang="text"> | |||
qemu-img convert -f raw -O vdi /dev/sdc regular-tde-latest-x86_64.vdi | |||
VBoxManage convertfromraw /dev/sdg flash_tde_64.vdi --format VDI | |||
</source> | |||
* Запись образа *.vdi на реальное железо (флешку) | |||
<source lang="text"> | |||
qemu-img convert -f vdi -O raw regular-tde-latest-x86_64.vdi /dev/sdc | |||
</source> | |||
* монтирование разделов внутри *.vdi | |||
; устанавливаем пакет vdfuse | |||
<source lang="text"> | |||
apt-get install vdfuse | |||
</source> | |||
;монтируем образ vdi, например так: | |||
<source lang="text"> | |||
vdfuse -f install_flash.vdi /mnt/disk | |||
</source> | |||
В каталоге /mnt/disk появляются файлы - образы разделов в формате RAW | |||
EntireDisk, Partition1, и т.д. | |||
Монтирукм один из них в нужный нам каталог: | |||
<source lang="text"> | |||
mount Partition1 /mnt/install | |||
</source> | |||
дале работаем с содержимым каталога, /mnt/install, в заключении надо всё (/mnt/disk, /mnt/instal) отмонтировать | |||
=== Снижение температуры ноутбука === | |||
<source lang=text> | |||
# apt-get install powertop | |||
# powertop --auto-tune | |||
man powertune | |||
... | |||
ИМЯ | |||
powertop - инструмент диагностики энергопотребления и управления питанием. | |||
СИНТАКСИС | |||
powertop [опции] | |||
ОПИСАНИЕ | |||
powertop — программа, помогающая диагностировать различные проблемы с энергопотреблением и управлением питанием. Он также имеет интерактивный режим, позволяющий экспериментировать с различными настройками управления питанием. При вызове | |||
powertop без аргументов powertop запускается в интерактивном режиме. | |||
ОПЦИИ | |||
--auto-tune (автонастройка) | |||
Установите все настраиваемые параметры в оптимальное состояние без участия оператора. | |||
.... | |||
</source> | |||
====Поиск диска на SATA/ESATA ==== | |||
У меня стоит док станция, подключённая через ESATA. При включении её, она автоматом не ловится, приходится давать команду от root, | |||
подсмотренну здесь : | |||
http://forum.oszone.net/thread-267061-2.html | |||
Поиск диска: | |||
<source lang=text> | |||
for i in /sys/class/scsi_host/host*; do echo "- - -" > $i/scan; done | |||
</source> | |||
Отключение: | |||
<source lang=text> | |||
echo 1 > /sys/block/sdX/device/delete | |||
</source> | |||
где sdX - sda...sdn - dev на котором он висит. | |||
И оказывается есть такой пакет: | |||
https://aur.archlinux.org/packages/scsiadd/ | |||
=== Скрипт еженедельного обновления Chrome === | |||
<source lang=bash> | |||
#!/bin/bash | |||
# sources.list setting for google-chrome updates. | |||
pack="https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm" | |||
name="google-chrome-stable_current_x86_64.rpm" | |||
names="google-chrome-stable" | |||
namep=$(basename $name .rpm) | |||
# The initial install happens in the post-install scripts, but there have been | |||
# reports of configuration problems, so just verify that everything looks | |||
# good, and if not, try to install again. | |||
/usr/bin/wget $pack -c -P /tmp/ | |||
namet=$(/bin/rpm -q $names) | |||
namep1="$(/usr/bin/rpm -qp /tmp/$name)" | |||
echo $namet $namep1 | |||
/bin/mv /tmp/$name /tmp/$namep1.rpm | |||
if [ $? -eq 0 ];then | |||
if [ ! "$namet" = "$namep1" ];then | |||
/bin/rpm -F --noscripts --oldpackage /tmp/$namep1.rpm | |||
/bin/rm -f /etc/cron.daily/google-chrome | |||
echo "Update $namep1 !" | |||
else | |||
echo "Save $namep1" | |||
fi | |||
fi | |||
</source> | |||
Помещаем в /etc/cron.weekly/ , активируем anacron | |||
<source lang=dos> | |||
chkconfig anacron on | |||
</source> | |||
=== Создание загрузочной флешки в Windows === | |||
Подготовка загрузочной флешки в командной строке | |||
Подготовьте USB флеш накопитель достаточного размера для записи операционной системы Windows. Далее вставьте флешку в USB разъем компьютера. | |||
Запустить cmd с правами администратора | |||
Для запуска утилиты DiskPart необходимо ввести следующую команду: | |||
<source lang=dos> | |||
diskpart | |||
</source> | |||
Под введенной командой отобразится информация об утилите. | |||
Далее введите команду для отображения дисков на данном компьютере: | |||
<source lang=dos> | |||
list disk | |||
</source> | |||
Обратите внимание на номер диска флешки. Ориентироваться нужно по размеру диска. Например, у меня подключено к компьютеру 4 жестких диска (из них два внешних) и одна флешка. Размер флешки будет меньше, чем у жестких дисков. Это хорошо видно на изображении. | |||
командная строка | |||
Далее нужно ввести команду для выбора флеш-накопителя. Будьте внимательны! Номер диска у вас будет другой , соответствующий номеру диска вашей флешки. Поэтому введите свой номер диска: | |||
<source lang=dos> | |||
select disk 1 | |||
</source> | |||
Был выбран диск 1. | |||
Теперь нужно вести команду для очистки флешки (быстрое форматирование): | |||
<source lang=dos> | |||
clean | |||
</source> | |||
Очистка диска успешно выполнена. | |||
Введите команду для создания раздела: | |||
<source lang=dos> | |||
create partition primary | |||
</source> | |||
Указанный раздел успешно создан. | |||
Введите команду для выбора раздела (был раздел только один раздел): | |||
<source lang=dos> | |||
select partition 1 | |||
</source> | |||
Выбран раздел 1. | |||
Затем введите команду для пометки активного раздела: | |||
<source lang=dos> | |||
active | |||
</source> | |||
Раздел помечен как активный. | |||
Далее необходимо ввести команду для форматирования флешки в файловую систему FAT32 (или NTFS): | |||
<source lang=dos> | |||
format fs=FAT32 QUICK | |||
</source> | |||
Программа DiskPart успешно отформатировала том. | |||
Ввод команды для присвоения буквы для диска (флешки): | |||
<source lang=dos> | |||
assign | |||
</source> | |||
Назначение имени диска или точки подключения выполнено успешно. | |||
команды | |||
Для выхода из утилиты DiskPart введите команду: | |||
<source lang=dos> | |||
exit | |||
</source> | |||
=== Отключение перекодировки кириллических символов в Firefox / Palemoon === | |||
Для тех, кто в FireFox замучился копировать ссылки с кириллицей: | |||
<source lang=dos> | |||
В about:config | |||
установите параметр | |||
browser.urlbar.decodeURLsOnCopy | |||
в значени | |||
true | |||
</source> | |||
=== Перепаковка rpm / deb с помощью epm === | |||
Начиная с версии eepm 2.4.5-alt1 (в p7 ещё нет) | |||
<source lang=dos> | |||
epm repack путь_до_файла | |||
</source> | |||
=== Получение загруженного драйвера в Xorg === | |||
$ inxi -G<ref>нужен пакет inxi</ref> | |||
# lshw -c Display <ref> нужен пакет lshw </ref> | |||
=== Восстановление разрешения экрана в KDE === | |||
Например после неправильного выхода из некотoрых игр/программ в полноэкранном режиме) === | |||
Удалить содержимое | |||
~./local/share/kscreen/ | |||
=== Отключение автоматическое монтирование внешних дисков в Gnome для всех пользователей === | |||
$ su - | |||
# mcedit /etc/dconf/db/local.d/00-autounmount | |||
Заполняем : | |||
[org/gnome/desktop/media-handling] | |||
automount=false | |||
automount-open=false | |||
Это отключает автомонтирование внешних устройств и открытие файловых менеджеров при подключении устройств. | |||
Обновляем настройки dcond | |||
# dconf update | |||
PS Спасибо gpt боту Гномику и его авторам. | |||
=== Проблемы при монтированием udiskctl === | |||
Вечно был озадачен, почему вдруг смонтированные разделы через udisksctl вдруг отключаются, а тут случайно набрёл, ища ответ на совсем другой вопрос 😉 На https//wiki.archlinux.org глава из статьи Udisks_(Русский) | |||
[https://wiki.archlinux.org/title/Udisks_(Русский)#Устройства_не_остаются_размонтированными_(udisks) Устройства_не_остаются_размонтированными_(udisks)] | |||
<source> | |||
"Устройства не остаются размонтированными (udisks) | |||
udisks либо заново монтирует устройства по истечении некоторого периода, либо опрашивает такие устройства. Это может вызвать нежелательные эффекты, например, при форматировании дисков, совместной работе с ними в виртуальной машине, при работе в режиме энергосбережения или при удалении устройства, которое не было ранее отключено с параметром --detach. | |||
Следующая команда отключит опрашивание выбранного CD/DVD устройства: | |||
# udisks --inhibit-polling /dev/sr0 | |||
То же самое, но для всех устройств одновременно. | |||
# udisks --inhibit-all-polling | |||
Подробнее см. udisks(8). " | |||
</source> | |||
И здесь-же ответ на вопрос на форуме - почему иногда появляется запрос на ввод пароля для изменения данных smart : | |||
<source> | |||
"Демон udisks регулярно опрашивает устройства с целью сбора S.M.A.R.T.-данных. Жесткие диски, время ожидания которых больше интервала опрашивания, могут не успевать войти в режим standby. Устройства, которые уже вошли в этот режим, данной проблеме не подвержены. Судя по всему, в настоящий момент в udisks2 не предусмотрено способа отключить опрашивание устройств или изменить интервал. См. [5] и [6]. | |||
Тем не менее, время ожидания в udisks2 изменить можно. Подробнее см. #Применение настроек ATA (udisks2). | |||
Другие возможные обходные решения заключаются в задании отдельной задержки перед интервалом опрашивания (10 минут) или в ручном переводе диска в замедленный режим командой hdparm -y /dev/sdx. " | |||
</source> | |||
=== Быстро посмотреть разделы и диски на компьютере === | |||
Создать скрипт или аллиас , например с именем lspart с таким содержимым и вызвать его: | |||
{{cmd|lsblk -o NAME,MOUNTPOINT,LABEL,FSTYPE,SIZE,MODEL}} | |||
=== Удалить все пакеты c именем vlc === | |||
{{cmd|apt-get remove $(rpm -qa \*vlc\* --qf '%{name} ')}} | |||
=== Работа с тэгами апстрима === | |||
.gear/rules указывает на тег в апстримном бранче. | |||
После слияния через {{cmd|git merge -s ours ТЕГ}} делается {{cmd|gear-update-tag -a}} и в .gear появляется файл с хэшем собираемого апстимного коммита. Это дерево и упаковывается в архив при {{cmd|gear-hsh}}. | |||
=== Добавить в меню приложения KDE === | |||
'''Решение''' - установить пакет {{pkg|kde5-profile}} | |||
Смотри например {{altbug|48106}} | |||
== Монтирование "чужих" разделов == | |||
Чтобы система не прекращала работу при невозможности монтирования какого-то раздела — например, системного с заснувшим там Windows, — а просто не монтировала его, прописать такой в /etc/fstab с параметром ''nofail'': | |||
<source lang=text> | |||
UUID="F05CC5DD5CC59F2A" /mnt/sda1 ntfs-3g locale=ru_RU.UTF-8,dmask=0,umask=111,nofail 0 0 | |||
</source> | |||
=== Автомонтирование по запросу === | |||
Если нужно монтировать раздел только в момент первого обращения к нему, прописываем его с параметром comment=systemd.automount | |||
<source lang=text> | |||
https://webdav.yandex.ru /mnt/yandex.disk davfs noauto,users,uid=user,gid=user,comment=systemd.automount 0 0 | |||
</source> | |||
== Реанимируем консоль /dev/tty1 == | |||
==== Новый способ ==== | |||
навеянный https://forum.altlinux.org/index.php?topic=38514 | |||
<source lang=bash> | |||
cp /lib/systemd/system/prefdm.service /etc/systemd/system/dm.service | |||
</source> | |||
и закомментировать в /etc/systemd/system/dm.service строчку | |||
<source lang=bash> | |||
Conflicts=getty@tty1.service | |||
</source> | |||
==== Старый (не очень правильный) способ : ==== | |||
Создаём файл /etc/systemd/system/tty1.service такого содержания: | |||
<source lang=text> | |||
# This file is part of systemd. | |||
# | |||
# systemd is free software; you can redistribute it and/or modify it | |||
# under the terms of the GNU Lesser General Public License as published by | |||
# the Free Software Foundation; either version 2.1 of the License, or | |||
# (at your option) any later version. | |||
[Unit] | |||
Description=Start agetty on tty1 | |||
Documentation=man:agetty(8) man:systemd-getty-generator(8) | |||
Documentation=http://0pointer.de/blog/projects/serial-console.html | |||
After=systemd-user-sessions.service plymouth-quit-wait.service | |||
After=rc-local.service | |||
# If additional gettys are spawned during boot then we should make | |||
# sure that this is synchronized before getty.target, even though | |||
# getty.target didn't actually pull it in. | |||
Before=getty.target | |||
IgnoreOnIsolate=yes | |||
# On systems without virtual consoles, don't start any getty. Note | |||
# that serial gettys are covered by serial-getty@.service, not this | |||
# unit. | |||
ConditionPathExists=/dev/tty0 | |||
[Service] | |||
# the VT is cleared by TTYVTDisallocate | |||
ExecStart=-/sbin/agetty tty1 linux | |||
Type=idle | |||
Restart=always | |||
RestartSec=0 | |||
UtmpIdentifier=tty1 | |||
TTYPath=/dev/tty1 | |||
TTYReset=yes | |||
TTYVHangup=yes | |||
TTYVTDisallocate=yes | |||
KillMode=process | |||
IgnoreSIGPIPE=no | |||
SendSIGHUP=yes | |||
# Unset locale for the console getty since the console has problems | |||
# displaying some internationalized messages. | |||
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION= | |||
[Install] | |||
WantedBy=getty.target | |||
DefaultInstance=tty1 | |||
</source> | |||
И даём команды: | |||
<source lang=bash> | |||
# systemctl enable tty.service | |||
# systemctl start tty.service | |||
</source> | |||
==== И ещё штрихи: ==== | |||
Чтобы первая консоль стартовала при запуске, в /etc/systemd/logind.conf задаем: | |||
<source lang=bash> | |||
ReserveVT = 1 | |||
</source> | |||
Чтобы kdm стартовал на седьмой консоли, прописываем в /etc/X11/kdm/kdmrc: | |||
<source lang=bash> | |||
ServerVTs=-7 | |||
</source> | |||
(а не 1 по умолчанию) | |||
== Реанимируем консоль /dev/tty1 == | |||
==== Новый способ ==== | |||
навеянный https://forum.altlinux.org/index.php?topic=38514 | |||
<source lang=bash> | |||
cp /lib/systemd/system/prefdm.service /etc/systemd/system/dm.service | |||
</source> | |||
и закомментировать в /etc/systemd/system/dm.service строчку | |||
<source lang=bash> | |||
Conflicts=getty@tty1.service | |||
</source> | |||
==== Старый (не очень правильный) способ : ==== | |||
Создаём файл /etc/systemd/system/tty1.service такого содержания: | |||
<source lang=text> | |||
# This file is part of systemd. | |||
# | |||
# systemd is free software; you can redistribute it and/or modify it | |||
# under the terms of the GNU Lesser General Public License as published by | |||
# the Free Software Foundation; either version 2.1 of the License, or | |||
# (at your option) any later version. | |||
[Unit] | |||
Description=Start agetty on tty1 | |||
Documentation=man:agetty(8) man:systemd-getty-generator(8) | |||
Documentation=http://0pointer.de/blog/projects/serial-console.html | |||
After=systemd-user-sessions.service plymouth-quit-wait.service | |||
After=rc-local.service | |||
# If additional gettys are spawned during boot then we should make | |||
# sure that this is synchronized before getty.target, even though | |||
# getty.target didn't actually pull it in. | |||
Before=getty.target | |||
IgnoreOnIsolate=yes | |||
# On systems without virtual consoles, don't start any getty. Note | |||
# that serial gettys are covered by serial-getty@.service, not this | |||
# unit. | |||
ConditionPathExists=/dev/tty0 | |||
[Service] | |||
# the VT is cleared by TTYVTDisallocate | |||
ExecStart=-/sbin/agetty tty1 linux | |||
Type=idle | |||
Restart=always | |||
RestartSec=0 | |||
UtmpIdentifier=tty1 | |||
TTYPath=/dev/tty1 | |||
TTYReset=yes | |||
TTYVHangup=yes | |||
TTYVTDisallocate=yes | |||
KillMode=process | |||
IgnoreSIGPIPE=no | |||
SendSIGHUP=yes | |||
# Unset locale for the console getty since the console has problems | |||
# displaying some internationalized messages. | |||
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION= | |||
[Install] | |||
WantedBy=getty.target | |||
DefaultInstance=tty1 | |||
</source> | |||
И даём команды: | |||
<source lang=bash> | |||
# systemctl enable tty.service | |||
# systemctl start tty.service | |||
</source> | |||
==== И ещё штрихи: ==== | |||
Чтобы первая консоль стартовала при запуске, в /etc/systemd/logind.conf задаем: | |||
<source lang=bash> | |||
ReserveVT = 1 | |||
</source> | |||
Чтобы kdm стартовал на седьмой консоли, прописываем в /etc/X11/kdm/kdmrc: | |||
<source lang=bash> | |||
ServerVTs=-7 | |||
</source> | |||
(а не 1 по умолчанию) | |||
== Изменить число tty консолей в systemd == | |||
В системах, использующих systemd, количество TTY консолей можно настроить с помощью службы `getty@.service`. По умолчанию systemd создает несколько экземпляров этой службы, которые соответствуют доступным виртуальным консолям. | |||
Чтобы задать количество TTY консолей, выполните следующие шаги: | |||
*. **Настройка экземпляров**: | |||
Обычно, избыточное количество экземпляров не создается по умолчанию, но если вы хотите уменьшить количество активных или постоянно запущенных TTY: | |||
** Отключите ненужные экземпляры getty: | |||
<source lang=bash> | |||
# systemctl disable getty@tty2.service | |||
</source> | |||
** . **Использование шаблонов и маскирование**: | |||
В случае если вы хотите создать определенные правила, заведите ваши собственные шаблоны служб, либо замаскируйте стандартные: | |||
<source lang=bash> | |||
# systemctl mask getty@tty2.service | |||
</source> | |||
Это позволит отключить конкретные TTY консоли, если это необходимо. | |||
Учтите, что изменения могут потребовать перезагрузки системы или перезапуска systemd, чтобы вступить в силу. | |||
* **Как увеличить число tty консолей ? | |||
Если вы хотите увеличить количество активных TTY консолей в системе с systemd, выполните следующие шаги: | |||
1. **Проверьте текущие активные TTY**: | |||
По умолчанию, ваша система может уже иметь активные TTY для консоли от tty1 до tty6. Чтобы проверить текущие настройки, вы можете выполнить: | |||
<source lang=bash> | |||
$ ls /etc/systemd/system/getty.target.wants/ | |||
</source> | |||
Это покажет, какие службы `getty@tty*.service` уже включены. | |||
2. **Включите дополнительные TTY**: | |||
Для добавления дополнительных TTY, вам нужно включить соответствующие службы. Чтобы добавить 7-ю, 8-ю и 9-ю TTY, выполните: | |||
<source lang=bash> | |||
# systemctl enable --now getty@tty7.service | |||
# systemctl enable --now getty@tty8.service | |||
</source> | |||
Это создаст символические ссылки в каталоге `/etc/systemd/system/getty.target.wants/`, чтобы эти службы автоматически запускались при загрузке. | |||
== Консоль Grub2 == | |||
Выдержки и цитаты из [https://wiki.archlinux.org/title/GRUB_(Русский)#Консоль_GRUB2 Статья на ArchWiki] | |||
Если вы попали в консоль Grub, то надо первым делом определить в какой тип консоли вы попали, а дальше действовать в соответствии с этим. | |||
Загрузчик GRUB2 выполняет свой файл конфигурации как шелл-подобный скрипт, состоящий из команд. Все те же команды он позволяет выполнять и в интерактивном режиме, с помощью консоли. | |||
=== Нормальная консоль GRUB2 === | |||
==== Причина попадания в нормальную консоли ==== | |||
Если вы видите в терминале GRUB2 приглашение вида '''grub>''' , значит вы попали в его нормальную консоль. | |||
{{Note|GRUB2 открывает нормальную консоль, если: | |||
* при загрузке не найден файл конфигурации grub.cfg; | |||
* файл конфигурации найден и выполнен, но в ходе его выполнения так и не было создано меню, и не была выполнена команда boot (см. ниже), либо её выполнение завершилось неудачно; | |||
* в меню загрузчика нажата клавиша "c".}} | |||
==== Команды, полезные в консоли GRUB2 ==== | |||
Кроме уже описанных в части "Настройка", в консоли GRUB2 могут пригодиться: | |||
* Переменная pager . Присвоение ей единицы командой pager=1 поможет вам полностью читать вывод следующих команд, если он не помещается на экран. | |||
* Команда help . Без параметров выводит список всех поддерживаемых в текущей конфигурации команд загрузчика. При вызове вида help слово выводит справку по командам, в которых присутствует заданное слово. Например, команда help normal покажет справку по командам normal и normal_exit. | |||
* Команда ls без параметров выводит список дисков и разделов, доступных в данный момент загрузчику. С ключом -l показывает подробные сведения о каждом из них – размер, метку, UUID и тип файловой системы. С ключами -lh выводит размеры в "человекочитаемом" виде. С параметром в виде диска или раздела выводит сведения только о нём, например ls (hd0,1) выведет сведения о первом разделе на нулевом диске. | |||
Команда ls с параметром в виде полного пути к каталогу выводит содержимое каталога. С ключом -l показывает подробные ведения о каждом файле и каталоге, с ключами -lh выводит размеры и даты в "человекочитаемом" фромате. К примеру, команда ls -lh /boot подробно выведет содержимое каталога /boot на текущем (в переменной root) разделе, а ls (hd0,1)/ покажет список файлов и каталогов в корневом каталоге раздела hd0,1. | |||
* Команда set без параметров. Выводит список всех переменных со значениями. | |||
* Команда echo аналогична такой же команде обычного шелла, и выводит всё, что в ней написано. Может использоваться для вывода переменных, например echo $cmdpath $prefix $root покажет значения трёх самых важных переменных загрузчика. | |||
* Команда cat аналогична одноимённой команде шелла, и выводит содержимое заданного файла в консоль. Так как перенаправления ввода-вывода GRUB2 не поддерживает, использовать её можно только для просмотра текстовых файлов, например, конфига самого загрузчика, fstab, и т.д. | |||
* Команда boot запускает образ ядра, другого загрузчика, или EFI-приложения, загруженный перед этим командами linux, initrd, ntldr, chainloader и некоторыми другими. В отличии от меню GRUB, где запуск загруженных образов происходит автоматически после завершения кода пункта меню, в консоли выполнение этой команды обязательно – без неё загруженный образ сам не запустится. | |||
''' | В нормальной консоли GRUB2 поддерживает возврат к предыдущим командам и автодополнение команд, каталогов и файлов по нажатию клавиши TAB, как в консоли Linux. | ||
==== Загрузки из нормальной консоли Grub (пример) ==== | |||
Если вы успешно установили загрузчик в корневой раздел, но забыли создать конфиг загрузчика, вы увидите меню из дефолтного конфига, но оно не будет работать. Чтобы продолжить загрузку, вы можете войти в консоль, нажав клавишу "c", и выполнить команды: | |||
<syntaxhighlight lang="bash"> | |||
probe -s UUID -u $root | |||
linux /boot/vmlinuz-linux rw root=UUID=$UUID | |||
initrd /boot/initramfs-linux.img | |||
boot | |||
</syntaxhighlight> | |||
====== Пример загрузки с внешнего диска из консоли ====== | |||
Во многих версиях BIOS нет специального интерфейса для однократной загрузки с флешки. Для этого можно создать отдельный пункт меню, но на один раз проще обойтись консолью GRUB: | |||
<syntaxhighlight lang="text"> | |||
root=hd1 | |||
chainloader +1 | |||
boot | |||
</syntaxhighlight> | |||
===== Пример конфига с загрузкой без меню ===== | |||
grub.cfg | |||
<syntaxhighlight lang="text"> | |||
set timeout=3 | |||
probe -s UUID -u $root | |||
linux /boot/vmlinuz-linux rw root=UUID=$UUID | |||
initrd /boot/initramfs-linux.img | |||
if sleep -vi $timeout | |||
then boot | |||
fi | |||
</syntaxhighlight> | |||
В этом примере GRUB2 загружает с диска образы ядра и initramfs, ждёт 3 секунды, и запускает ядро. | |||
Если же в течении этих секунд пользователь нажмёт ESC, он попадёт в консоль загрузчика. Так как ядро уже загружено, для продолжения загрузки достаточно набрать команду boot в консоли. | |||
=== Аварийная консоль === | |||
Если вместо меню или "шапки" нормальной консоли вы видите при старте загрузчика сообщение об ошибке и приглашение вида '''grub rescue>,''' значит вы попали в аварийную консоль. | |||
{{Note|Аварийная консоль GRUB2 встроена в стартовый образ загрузчика, и запускается в случаях, когда GRUB2 не может самостоятельно перейти в "нормальный" режим. Такое может случиться, если ядро GRUB2 при загрузке не нашло каталог со своими файлами и модулями по пути, указанному в переменной prefix.}} | |||
Значение этой переменной обычно имеет вид (диск,раздел)/путь, например (hd0,msdos6)/boot/grub. Обозначение диска подставляется при старте загрузчика, а остальная часть (начиная с запятой) "зашивается" в стартовый образ ещё на этапе установки. Это значит, что после изменения любого из содержащихся в $prefix параметров (таблицы разделов, номера раздела, пути к файлам grub), загрузчик требуется переустанавливать, в противном случае он "вывалится" в аварийную консоль. | |||
В режиме аварийной консоли GRUB2 понимает всего 4 команды: '''set''' , '''unset''' , '''ls''' , и '''insmod''' . Повтор и автодополнение не поддерживаются, команда ls поддерживается в урезанном виде – без ключей и с выводом в сведениях о разделах только типа файловой системы, если она опознана. | |||
По-умолчанию в стартовый образ загрузчика включается модуль для поддержки таблицы разделов и файловой системы только для того раздела, на который устанавливается GRUB2. Остальные модули должны загружаться уже из файлов, если загрузчику удастся их найти. | |||
В некоторых случаях, когда встроенных в стартовый образ модулей достаточно для продолжения загрузки в изменившихся условиях, загрузку можно продолжить, изменив в аварийной консоли переменную $prefix. | |||
Если вы попали в аварийную консоль, наберите для начала команду set. Вы увидите значения трёх главных переменных GRUB2. | |||
* В переменной cmdpath будет обозначение диска, либо полный путь к EFI-файлу, из которого стартовал образ загрузчика. | |||
* В переменной prefix будет тот путь, по которому должен был быть каталог с остальными файлами загрузчика. | |||
* В переменной root будет текущий диск или раздел, скорей всего совпадающий с тем, что в $prefix. Попробуйте команды | |||
<syntaxhighlight lang="bash"> | |||
ls | |||
ls $root | |||
ls $prefix | |||
</syntaxhighlight> | |||
Если вы знаете, что делалось с диском перед тем, как GRUB показал ошибку, то возможно, вы уже догадываетесь, в чём ошибка и удастся ли её исправить. | |||
Если в переменной $root оказался не тот или несуществующий раздел, можно проверять командами вида ls (диск,раздел)/ каждый раздел из тех, что вывела первая команда, пока не найдётся нужный. Если он нашелся – к примеру, оказался hd0,msdos5 вместо hd0,msdos6, и читается – запишите его в переменные: | |||
<syntaxhighlight lang="bash"> | |||
root=hd0,5 | |||
prefix=($root)/boot/grub | |||
</syntaxhighlight> | |||
Если раздел правильный, а неправильный каталог (команда ls $prefix выдаёт ошибку или не то, что нужно), запишите в переменную правильный путь, допустим такой: | |||
<syntaxhighlight lang="bash"> | |||
prefix=($root)/grub | |||
</syntaxhighlight> | |||
Если у вас получилось найти правильный диск, раздел и каталог, и вы успешно прописали из в переменные, остаётся загрузить модуль "normal" и выполнить одноимённую команду (она станет доступна после загрузки модуля), чтобы перейти в "нормальный" режим загрузчика: | |||
<syntaxhighlight lang="bash"> | |||
insmod normal | |||
normal | |||
</syntaxhighlight> | |||
{{Note| Если же из аварийной консоли не удаётся получить доступ к нужному каталогу с файлами загрузчика – увы, но больше она ничем не сможет помочь, и вам придётся обратиться к другим способам загрузки, например с внешних носителей.}} | |||
== Примечания == | |||
[Категория:FAQ] | [[Категория:FAQ]] |
Текущая версия от 18:01, 25 октября 2024
Решение проблемок
Сборка в girar через src.rpm пакетов
1. Подписываем пакет
rpm --addsign путь/пакет.src.rpm
2. Загружаем пакеты в girar, например так :
rsync --progress -va /home/$HOME/incoming/Sisyphus/$(cd /home/$HOME/incoming/Sisyphus/ && ls *.src.rpm) girar:
Дальше, например :
ssh girar build --test-only srpm $(cd /home/$HOME/incoming/Sisyphus/ && ls *.src.rpm)
Отменить наследование (от git)
ssh girar task check-git-inheritance <task_id> <subtask_number> disable <hsh последнего коммита>
SimplyLinuх вместо русских букв квадратики
1. Установил fbset
2. Прописал в /etc/sysconfig/framebuffer
ENABLE=yes
MODULE=i810fb
#MODE=800x600-80
TTYS='1 2 3 4 5 6 12'
3. Перезапустил fbsetfont
service fbsetfont restart
Работа с образами типа vdi
Работа с *.img и *.vdi образом
- Создание из образа .img образ.vdi
qemu-img convert -f raw -O vdi flash_tde_32.img flash_tde_32.vdi
VBoxManage convertfromraw flash_tde_32.img flash_tde_64.vdi --format VDI
- Создание образа с реального железа (флешки)
qemu-img convert -f raw -O vdi /dev/sdc regular-tde-latest-x86_64.vdi
VBoxManage convertfromraw /dev/sdg flash_tde_64.vdi --format VDI
- Запись образа *.vdi на реальное железо (флешку)
qemu-img convert -f vdi -O raw regular-tde-latest-x86_64.vdi /dev/sdc
- монтирование разделов внутри *.vdi
- устанавливаем пакет vdfuse
apt-get install vdfuse
- монтируем образ vdi, например так
vdfuse -f install_flash.vdi /mnt/disk
В каталоге /mnt/disk появляются файлы - образы разделов в формате RAW EntireDisk, Partition1, и т.д.
Монтирукм один из них в нужный нам каталог:
mount Partition1 /mnt/install
дале работаем с содержимым каталога, /mnt/install, в заключении надо всё (/mnt/disk, /mnt/instal) отмонтировать
Снижение температуры ноутбука
# apt-get install powertop
# powertop --auto-tune
man powertune
...
ИМЯ
powertop - инструмент диагностики энергопотребления и управления питанием.
СИНТАКСИС
powertop [опции]
ОПИСАНИЕ
powertop — программа, помогающая диагностировать различные проблемы с энергопотреблением и управлением питанием. Он также имеет интерактивный режим, позволяющий экспериментировать с различными настройками управления питанием. При вызове
powertop без аргументов powertop запускается в интерактивном режиме.
ОПЦИИ
--auto-tune (автонастройка)
Установите все настраиваемые параметры в оптимальное состояние без участия оператора.
....
Поиск диска на SATA/ESATA
У меня стоит док станция, подключённая через ESATA. При включении её, она автоматом не ловится, приходится давать команду от root, подсмотренну здесь :
http://forum.oszone.net/thread-267061-2.html
Поиск диска:
for i in /sys/class/scsi_host/host*; do echo "- - -" > $i/scan; done
Отключение:
echo 1 > /sys/block/sdX/device/delete
где sdX - sda...sdn - dev на котором он висит.
И оказывается есть такой пакет:
https://aur.archlinux.org/packages/scsiadd/
Скрипт еженедельного обновления Chrome
#!/bin/bash
# sources.list setting for google-chrome updates.
pack="https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm"
name="google-chrome-stable_current_x86_64.rpm"
names="google-chrome-stable"
namep=$(basename $name .rpm)
# The initial install happens in the post-install scripts, but there have been
# reports of configuration problems, so just verify that everything looks
# good, and if not, try to install again.
/usr/bin/wget $pack -c -P /tmp/
namet=$(/bin/rpm -q $names)
namep1="$(/usr/bin/rpm -qp /tmp/$name)"
echo $namet $namep1
/bin/mv /tmp/$name /tmp/$namep1.rpm
if [ $? -eq 0 ];then
if [ ! "$namet" = "$namep1" ];then
/bin/rpm -F --noscripts --oldpackage /tmp/$namep1.rpm
/bin/rm -f /etc/cron.daily/google-chrome
echo "Update $namep1 !"
else
echo "Save $namep1"
fi
fi
Помещаем в /etc/cron.weekly/ , активируем anacron
chkconfig anacron on
Создание загрузочной флешки в Windows
Подготовка загрузочной флешки в командной строке
Подготовьте USB флеш накопитель достаточного размера для записи операционной системы Windows. Далее вставьте флешку в USB разъем компьютера.
Запустить cmd с правами администратора
Для запуска утилиты DiskPart необходимо ввести следующую команду:
diskpart
Под введенной командой отобразится информация об утилите.
Далее введите команду для отображения дисков на данном компьютере:
list disk
Обратите внимание на номер диска флешки. Ориентироваться нужно по размеру диска. Например, у меня подключено к компьютеру 4 жестких диска (из них два внешних) и одна флешка. Размер флешки будет меньше, чем у жестких дисков. Это хорошо видно на изображении.
командная строка
Далее нужно ввести команду для выбора флеш-накопителя. Будьте внимательны! Номер диска у вас будет другой , соответствующий номеру диска вашей флешки. Поэтому введите свой номер диска:
select disk 1
Был выбран диск 1.
Теперь нужно вести команду для очистки флешки (быстрое форматирование):
clean
Очистка диска успешно выполнена.
Введите команду для создания раздела:
create partition primary
Указанный раздел успешно создан.
Введите команду для выбора раздела (был раздел только один раздел):
select partition 1
Выбран раздел 1.
Затем введите команду для пометки активного раздела:
active
Раздел помечен как активный.
Далее необходимо ввести команду для форматирования флешки в файловую систему FAT32 (или NTFS):
format fs=FAT32 QUICK
Программа DiskPart успешно отформатировала том.
Ввод команды для присвоения буквы для диска (флешки):
assign
Назначение имени диска или точки подключения выполнено успешно.
команды
Для выхода из утилиты DiskPart введите команду:
exit
Отключение перекодировки кириллических символов в Firefox / Palemoon
Для тех, кто в FireFox замучился копировать ссылки с кириллицей:
В about:config
установите параметр
browser.urlbar.decodeURLsOnCopy
в значени
true
Перепаковка rpm / deb с помощью epm
Начиная с версии eepm 2.4.5-alt1 (в p7 ещё нет)
epm repack путь_до_файла
Получение загруженного драйвера в Xorg
$ inxi -G[1]
# lshw -c Display [2]
Восстановление разрешения экрана в KDE
Например после неправильного выхода из некотoрых игр/программ в полноэкранном режиме) ===
Удалить содержимое
~./local/share/kscreen/
Отключение автоматическое монтирование внешних дисков в Gnome для всех пользователей
$ su -
- mcedit /etc/dconf/db/local.d/00-autounmount
Заполняем :
[org/gnome/desktop/media-handling] automount=false automount-open=false Это отключает автомонтирование внешних устройств и открытие файловых менеджеров при подключении устройств.
Обновляем настройки dcond
- dconf update
PS Спасибо gpt боту Гномику и его авторам.
Проблемы при монтированием udiskctl
Вечно был озадачен, почему вдруг смонтированные разделы через udisksctl вдруг отключаются, а тут случайно набрёл, ища ответ на совсем другой вопрос 😉 На https//wiki.archlinux.org глава из статьи Udisks_(Русский)
Устройства_не_остаются_размонтированными_(udisks)
"Устройства не остаются размонтированными (udisks)
udisks либо заново монтирует устройства по истечении некоторого периода, либо опрашивает такие устройства. Это может вызвать нежелательные эффекты, например, при форматировании дисков, совместной работе с ними в виртуальной машине, при работе в режиме энергосбережения или при удалении устройства, которое не было ранее отключено с параметром --detach.
Следующая команда отключит опрашивание выбранного CD/DVD устройства:
# udisks --inhibit-polling /dev/sr0
То же самое, но для всех устройств одновременно.
# udisks --inhibit-all-polling
Подробнее см. udisks(8). "
И здесь-же ответ на вопрос на форуме - почему иногда появляется запрос на ввод пароля для изменения данных smart :
"Демон udisks регулярно опрашивает устройства с целью сбора S.M.A.R.T.-данных. Жесткие диски, время ожидания которых больше интервала опрашивания, могут не успевать войти в режим standby. Устройства, которые уже вошли в этот режим, данной проблеме не подвержены. Судя по всему, в настоящий момент в udisks2 не предусмотрено способа отключить опрашивание устройств или изменить интервал. См. [5] и [6].
Тем не менее, время ожидания в udisks2 изменить можно. Подробнее см. #Применение настроек ATA (udisks2).
Другие возможные обходные решения заключаются в задании отдельной задержки перед интервалом опрашивания (10 минут) или в ручном переводе диска в замедленный режим командой hdparm -y /dev/sdx. "
Быстро посмотреть разделы и диски на компьютере
Создать скрипт или аллиас , например с именем lspart с таким содержимым и вызвать его:
lsblk -o NAME,MOUNTPOINT,LABEL,FSTYPE,SIZE,MODEL
Удалить все пакеты c именем vlc
apt-get remove $(rpm -qa \*vlc\* --qf '%{name} ')
Работа с тэгами апстрима
.gear/rules указывает на тег в апстримном бранче. После слияния через git merge -s ours ТЕГ делается gear-update-tag -a и в .gear появляется файл с хэшем собираемого апстимного коммита. Это дерево и упаковывается в архив при gear-hsh.
Добавить в меню приложения KDE
Решение - установить пакет kde5-profile Смотри например altbug #48106
Монтирование "чужих" разделов
Чтобы система не прекращала работу при невозможности монтирования какого-то раздела — например, системного с заснувшим там Windows, — а просто не монтировала его, прописать такой в /etc/fstab с параметром nofail:
UUID="F05CC5DD5CC59F2A" /mnt/sda1 ntfs-3g locale=ru_RU.UTF-8,dmask=0,umask=111,nofail 0 0
Автомонтирование по запросу
Если нужно монтировать раздел только в момент первого обращения к нему, прописываем его с параметром comment=systemd.automount
https://webdav.yandex.ru /mnt/yandex.disk davfs noauto,users,uid=user,gid=user,comment=systemd.automount 0 0
Реанимируем консоль /dev/tty1
Новый способ
навеянный https://forum.altlinux.org/index.php?topic=38514
cp /lib/systemd/system/prefdm.service /etc/systemd/system/dm.service
и закомментировать в /etc/systemd/system/dm.service строчку
Conflicts=getty@tty1.service
Старый (не очень правильный) способ :
Создаём файл /etc/systemd/system/tty1.service такого содержания:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Start agetty on tty1
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
After=systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service
# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes
# On systems without virtual consoles, don't start any getty. Note
# that serial gettys are covered by serial-getty@.service, not this
# unit.
ConditionPathExists=/dev/tty0
[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty tty1 linux
Type=idle
Restart=always
RestartSec=0
UtmpIdentifier=tty1
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes
# Unset locale for the console getty since the console has problems
# displaying some internationalized messages.
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
[Install]
WantedBy=getty.target
DefaultInstance=tty1
И даём команды:
# systemctl enable tty.service
# systemctl start tty.service
И ещё штрихи:
Чтобы первая консоль стартовала при запуске, в /etc/systemd/logind.conf задаем:
ReserveVT = 1
Чтобы kdm стартовал на седьмой консоли, прописываем в /etc/X11/kdm/kdmrc:
ServerVTs=-7
(а не 1 по умолчанию)
Реанимируем консоль /dev/tty1
Новый способ
навеянный https://forum.altlinux.org/index.php?topic=38514
cp /lib/systemd/system/prefdm.service /etc/systemd/system/dm.service
и закомментировать в /etc/systemd/system/dm.service строчку
Conflicts=getty@tty1.service
Старый (не очень правильный) способ :
Создаём файл /etc/systemd/system/tty1.service такого содержания:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Start agetty on tty1
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
After=systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service
# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes
# On systems without virtual consoles, don't start any getty. Note
# that serial gettys are covered by serial-getty@.service, not this
# unit.
ConditionPathExists=/dev/tty0
[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty tty1 linux
Type=idle
Restart=always
RestartSec=0
UtmpIdentifier=tty1
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes
# Unset locale for the console getty since the console has problems
# displaying some internationalized messages.
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
[Install]
WantedBy=getty.target
DefaultInstance=tty1
И даём команды:
# systemctl enable tty.service
# systemctl start tty.service
И ещё штрихи:
Чтобы первая консоль стартовала при запуске, в /etc/systemd/logind.conf задаем:
ReserveVT = 1
Чтобы kdm стартовал на седьмой консоли, прописываем в /etc/X11/kdm/kdmrc:
ServerVTs=-7
(а не 1 по умолчанию)
Изменить число tty консолей в systemd
В системах, использующих systemd, количество TTY консолей можно настроить с помощью службы `getty@.service`. По умолчанию systemd создает несколько экземпляров этой службы, которые соответствуют доступным виртуальным консолям.
Чтобы задать количество TTY консолей, выполните следующие шаги:
- . **Настройка экземпляров**:
Обычно, избыточное количество экземпляров не создается по умолчанию, но если вы хотите уменьшить количество активных или постоянно запущенных TTY:
- Отключите ненужные экземпляры getty:
# systemctl disable getty@tty2.service
- . **Использование шаблонов и маскирование**:
В случае если вы хотите создать определенные правила, заведите ваши собственные шаблоны служб, либо замаскируйте стандартные:
# systemctl mask getty@tty2.service
Это позволит отключить конкретные TTY консоли, если это необходимо.
Учтите, что изменения могут потребовать перезагрузки системы или перезапуска systemd, чтобы вступить в силу.
- **Как увеличить число tty консолей ?
Если вы хотите увеличить количество активных TTY консолей в системе с systemd, выполните следующие шаги:
1. **Проверьте текущие активные TTY**:
По умолчанию, ваша система может уже иметь активные TTY для консоли от tty1 до tty6. Чтобы проверить текущие настройки, вы можете выполнить:
$ ls /etc/systemd/system/getty.target.wants/
Это покажет, какие службы `getty@tty*.service` уже включены.
2. **Включите дополнительные TTY**:
Для добавления дополнительных TTY, вам нужно включить соответствующие службы. Чтобы добавить 7-ю, 8-ю и 9-ю TTY, выполните:
# systemctl enable --now getty@tty7.service
# systemctl enable --now getty@tty8.service
Это создаст символические ссылки в каталоге `/etc/systemd/system/getty.target.wants/`, чтобы эти службы автоматически запускались при загрузке.
Консоль Grub2
Выдержки и цитаты из Статья на ArchWiki Если вы попали в консоль Grub, то надо первым делом определить в какой тип консоли вы попали, а дальше действовать в соответствии с этим. Загрузчик GRUB2 выполняет свой файл конфигурации как шелл-подобный скрипт, состоящий из команд. Все те же команды он позволяет выполнять и в интерактивном режиме, с помощью консоли.
Нормальная консоль GRUB2
Причина попадания в нормальную консоли
Если вы видите в терминале GRUB2 приглашение вида grub> , значит вы попали в его нормальную консоль.
- при загрузке не найден файл конфигурации grub.cfg;
- файл конфигурации найден и выполнен, но в ходе его выполнения так и не было создано меню, и не была выполнена команда boot (см. ниже), либо её выполнение завершилось неудачно;
- в меню загрузчика нажата клавиша "c".
Команды, полезные в консоли GRUB2
Кроме уже описанных в части "Настройка", в консоли GRUB2 могут пригодиться:
- Переменная pager . Присвоение ей единицы командой pager=1 поможет вам полностью читать вывод следующих команд, если он не помещается на экран.
- Команда help . Без параметров выводит список всех поддерживаемых в текущей конфигурации команд загрузчика. При вызове вида help слово выводит справку по командам, в которых присутствует заданное слово. Например, команда help normal покажет справку по командам normal и normal_exit.
- Команда ls без параметров выводит список дисков и разделов, доступных в данный момент загрузчику. С ключом -l показывает подробные сведения о каждом из них – размер, метку, UUID и тип файловой системы. С ключами -lh выводит размеры в "человекочитаемом" виде. С параметром в виде диска или раздела выводит сведения только о нём, например ls (hd0,1) выведет сведения о первом разделе на нулевом диске.
Команда ls с параметром в виде полного пути к каталогу выводит содержимое каталога. С ключом -l показывает подробные ведения о каждом файле и каталоге, с ключами -lh выводит размеры и даты в "человекочитаемом" фромате. К примеру, команда ls -lh /boot подробно выведет содержимое каталога /boot на текущем (в переменной root) разделе, а ls (hd0,1)/ покажет список файлов и каталогов в корневом каталоге раздела hd0,1.
- Команда set без параметров. Выводит список всех переменных со значениями.
- Команда echo аналогична такой же команде обычного шелла, и выводит всё, что в ней написано. Может использоваться для вывода переменных, например echo $cmdpath $prefix $root покажет значения трёх самых важных переменных загрузчика.
- Команда cat аналогична одноимённой команде шелла, и выводит содержимое заданного файла в консоль. Так как перенаправления ввода-вывода GRUB2 не поддерживает, использовать её можно только для просмотра текстовых файлов, например, конфига самого загрузчика, fstab, и т.д.
- Команда boot запускает образ ядра, другого загрузчика, или EFI-приложения, загруженный перед этим командами linux, initrd, ntldr, chainloader и некоторыми другими. В отличии от меню GRUB, где запуск загруженных образов происходит автоматически после завершения кода пункта меню, в консоли выполнение этой команды обязательно – без неё загруженный образ сам не запустится.
В нормальной консоли GRUB2 поддерживает возврат к предыдущим командам и автодополнение команд, каталогов и файлов по нажатию клавиши TAB, как в консоли Linux.
Загрузки из нормальной консоли Grub (пример)
Если вы успешно установили загрузчик в корневой раздел, но забыли создать конфиг загрузчика, вы увидите меню из дефолтного конфига, но оно не будет работать. Чтобы продолжить загрузку, вы можете войти в консоль, нажав клавишу "c", и выполнить команды:
probe -s UUID -u $root
linux /boot/vmlinuz-linux rw root=UUID=$UUID
initrd /boot/initramfs-linux.img
boot
Пример загрузки с внешнего диска из консоли
Во многих версиях BIOS нет специального интерфейса для однократной загрузки с флешки. Для этого можно создать отдельный пункт меню, но на один раз проще обойтись консолью GRUB:
root=hd1
chainloader +1
boot
Пример конфига с загрузкой без меню
grub.cfg
set timeout=3
probe -s UUID -u $root
linux /boot/vmlinuz-linux rw root=UUID=$UUID
initrd /boot/initramfs-linux.img
if sleep -vi $timeout
then boot
fi
В этом примере GRUB2 загружает с диска образы ядра и initramfs, ждёт 3 секунды, и запускает ядро.
Если же в течении этих секунд пользователь нажмёт ESC, он попадёт в консоль загрузчика. Так как ядро уже загружено, для продолжения загрузки достаточно набрать команду boot в консоли.
Аварийная консоль
Если вместо меню или "шапки" нормальной консоли вы видите при старте загрузчика сообщение об ошибке и приглашение вида grub rescue>, значит вы попали в аварийную консоль.
Значение этой переменной обычно имеет вид (диск,раздел)/путь, например (hd0,msdos6)/boot/grub. Обозначение диска подставляется при старте загрузчика, а остальная часть (начиная с запятой) "зашивается" в стартовый образ ещё на этапе установки. Это значит, что после изменения любого из содержащихся в $prefix параметров (таблицы разделов, номера раздела, пути к файлам grub), загрузчик требуется переустанавливать, в противном случае он "вывалится" в аварийную консоль.
В режиме аварийной консоли GRUB2 понимает всего 4 команды: set , unset , ls , и insmod . Повтор и автодополнение не поддерживаются, команда ls поддерживается в урезанном виде – без ключей и с выводом в сведениях о разделах только типа файловой системы, если она опознана.
По-умолчанию в стартовый образ загрузчика включается модуль для поддержки таблицы разделов и файловой системы только для того раздела, на который устанавливается GRUB2. Остальные модули должны загружаться уже из файлов, если загрузчику удастся их найти.
В некоторых случаях, когда встроенных в стартовый образ модулей достаточно для продолжения загрузки в изменившихся условиях, загрузку можно продолжить, изменив в аварийной консоли переменную $prefix.
Если вы попали в аварийную консоль, наберите для начала команду set. Вы увидите значения трёх главных переменных GRUB2.
- В переменной cmdpath будет обозначение диска, либо полный путь к EFI-файлу, из которого стартовал образ загрузчика.
- В переменной prefix будет тот путь, по которому должен был быть каталог с остальными файлами загрузчика.
- В переменной root будет текущий диск или раздел, скорей всего совпадающий с тем, что в $prefix. Попробуйте команды
ls
ls $root
ls $prefix
Если вы знаете, что делалось с диском перед тем, как GRUB показал ошибку, то возможно, вы уже догадываетесь, в чём ошибка и удастся ли её исправить.
Если в переменной $root оказался не тот или несуществующий раздел, можно проверять командами вида ls (диск,раздел)/ каждый раздел из тех, что вывела первая команда, пока не найдётся нужный. Если он нашелся – к примеру, оказался hd0,msdos5 вместо hd0,msdos6, и читается – запишите его в переменные:
root=hd0,5
prefix=($root)/boot/grub
Если раздел правильный, а неправильный каталог (команда ls $prefix выдаёт ошибку или не то, что нужно), запишите в переменную правильный путь, допустим такой:
prefix=($root)/grub
Если у вас получилось найти правильный диск, раздел и каталог, и вы успешно прописали из в переменные, остаётся загрузить модуль "normal" и выполнить одноимённую команду (она станет доступна после загрузки модуля), чтобы перейти в "нормальный" режим загрузчика:
insmod normal
normal