Не загружается arch linux
Для загрузки Arch Linux необходим совместимый с Linux загрузчик. Загрузчик должен загрузить ядро и initial ramdisk в память перед запуском системы. Процесс несколько отличается для BIOS и UEFI; подробное описание дано ниже и на связанных страницах.
Contents
Типы прошивок
BIOS — программа (прошивка), которая выполняется сразу же после включения системы. Чаще всего она хранится во flash-памяти, распаянной непосредственно на материнской плате, и не зависит от системного устройства хранения данных.
Unified Extensible Firmware Interface может считывать как таблицу разделов, так и файловые системы. UEFI не выполняет загрузочный код в MBR, вне зависимости от того, существует он или нет. Вместо этого загрузка происходит в соответствии с записями в NVRAM.
Спецификация UEFI объявляет обязательными поддержку файловых систем FAT12, FAT16 и FAT32 (см. UEFI specification version 2.8, section 13.3.1.1), но производители могут добавлять и другие файловые системы. Например, компьютеры Apple Mac поддерживают (и по умолчанию используют) драйвера собственной файловой системы HFS+. Также реализации UEFI поддерживают формат оптических дисков ISO-9660.
UEFI запускает т.н. EFI-приложения, например, загрузчики, менеджеры загрузки, командную оболочку UEFI и т.д. Эти приложения обычно хранятся в виде файлов в системном разделе EFI. Каждый производитель может хранить свои файлы в EFI-разделе в каталоге /EFI/производитель . Приложения можно запустить с помощью загрузочной записи в NVRAM или из UEFI-оболочки.
В спецификации UEFI также предусмотрена legacy-загрузка через BIOS посредством Compatibility Support Module (CSM). UEFI с включённым CSM сгенерирует загрузочные CSM-записи для всех дисков. Если для загрузки выбрана именно такая запись, то CSM попытается выполнить код из MBR на диске.
Инициализация системы
Система с BIOS
- Компьютер включается, выполняется power-on self-test (POST).
- После POST BIOS инициализирует аппаратуру, необходимую для загрузки (диск, контроллеры клавиатуры и т.д.).
- BIOS запускает на выполнение первые 440 байт из MBR bootstrap code area первого (в очерёдности загрузки) диска.
- Код первого этапа загрузчика в MBR загружает и запускает код второго этапа загрузчика (если таковой имеется), который может храниться в следующих местах:
- следующие сектора диска после MBR, например, т.н. "post-MBR gap" (только в случае таблицы разделов MBR). (VBR) раздела или partitionless-диска. (только GRUB с BIOS/GPT).
- Запускается непосредственно загрузчик.
- Загрузчик загружает в память операционную систему либо напрямую, либо посредством цепной загрузки (chain-loading).
Система с UEFI
- Компьютер включается, выполняется power-on self-test (POST).
- После POST UEFI инициализирует аппаратуру, необходимую для загрузки (диск, контроллеры клавиатуры и т.д.).
- Прошивка считывает загрузочные записи из NVRAM, чтобы определить, какое EFI-приложение необходимо запустить и откуда (т.е. с какого диска и раздела).
- Загрузочной записью может быть просто диск. В этом случае прошивка ищет системный раздел EFI на этом диске и EFI-приложение на резервном пути загрузки \EFI\BOOT\BOOTx64.EFI (в системах с 32-битным UEFI — BOOTIA32.EFI ). Именно так UEFI работает со съёмными загрузочными устройствами.
- Прошивка запускает EFI-приложение.
- Это может быть загрузчик или, при использовании EFISTUB, непосредственно ядро Arch Linux.
- Это также может быть и какое-то другое приложение, например, командная оболочка UEFI или менеджер загрузки вроде systemd-boot или rEFInd.
Если включён режим Secure Boot, аутентичность двоичного EFI-файла будет проверена по его подписи.
Примечание: Некоторые UEFI-системы могут загружаться только с резервного загрузочного пути.Мультизагрузка в UEFI
Поскольку файлы различных операционных систем и производителей хранятся в системном разделе EFI в разных каталогах, мультизагрузка с UEFI сводится к запуску EFI-приложения загрузчика конкретной операционной системы. Это позволяет отказаться от использования chain loading при загрузке различных ОС.
Загрузчик
Загрузчик — программа, которая запускается прошивкой (BIOS или UEFI). Эта программа в соответствии с файлами настроек загружает ядро с заданными параметрами, а также начальный загрузочный диск. В случае UEFI ядро может быть загружено напрямую, без загрузчика, посредством EFISTUB; в этом случае загрузчик или менеджер загрузки можно использовать для редактирования параметров ядра перед загрузкой.
Важно: Загрузчик должет иметь доступ к ядру и образу initramfs, в противном случае система не загрузится. Как правило, обычная загрузка подразумевает доступ к каталогу /boot , следовательно, загрузчик должен уметь работать с блочными устройствами, стековыми блочными устройствами (LVM, RAID, dm-crypt, LUKS и т.д.), а также с файловой системой, в которой расположены ядро и образ initramfs. Примечание: Для загрузки обновлений микрокода необходимо внести соответствующие корректировки в настройки загрузчика [1].Сравнение возможностей
- Поскольку GPT является частью спецификации UEFI, все UEFI-загрузчики поддерживают GPT-диски. GPT на BIOS-системах также возможен, либо посредством "гибридной загрузки" с Hybrid MBR, либо с новым протоколом загрузки GPT-only. Этот протокол, однако, может стать причиной проблем в некоторых реализациях BIOS (подробнее см. rodsbooks).
- Под шифрованием, которое упоминается применительно к файловым системам, подразумевается шифрование на уровне ФС, а не шифрование на уровне блоков.
Ядро — сердце операционной системы. Оно функционирует на низком уровне (т.н. kernelspace, пространство ядра), являясь посредником между аппаратным обеспечением компьютера и прикладными программами. Ядро периодически приостанавливает выполнение одних программ, чтобы предоставить процессорное время другим (т.н. вытесняющая многозадачность). Это создаёт видимость того, что множество задач выполняются параллельно, даже на одноядерном процессоре. Ядро использует планировщик времени процессора для определения процесса, имеющего наибольший приоритет в данный момент.
initramfs
Загрузчик перемещает ядро и имеющиеся файлы initramfs в память и запускает ядро. В начале работы ядро распаковывает архивы с initramfs (initial RAM filesystem, начальная файловая система) в пока что пустующую rootfs (первоначальная корневая файловая система, чаще всего ramfs или tmpfs). Сначала извлекается initramfs, которая была встроена в двоичный файл ядра в процессе сборки, а затем — внешние initramfs-файлы, если таковые имеются. Файлы внешней initramfs перезаписывают одноименные файлы встроенной. После этого ядро запускает в rootfs /init как первый процесс. Начинается раннее пространство пользователя (early userspace).
Официальные ядра Arch Linux используют в качестве встроенной initramfs пустой архив (используется по умолчанию при сборке Linux). Внешние образы initramfs можно сгенерировать с помощью mkinitcpio, dracut и booster.
Назначение initramfs — загрузить систему до состояния, в котором она может работать с корневой файловой системой (подробнее см. FHS). Это означает, что любые модули, которые необходимы устройствам IDE, SCSI, SATA, USB/FW (при загрузке с внешнего носителя) и не были встроены в ядро, должны загружаться из initramfs; после подключения необходимых модулей (программой/сценарием или неявно udev), процесс загрузки продолжается. В initramfs должны быть только модули, необходимые для доступа к корневой файловой системе; нет необходимости хранить в ней все модули, которые однажды теоретически могут понадобиться. Большинство таких модулей будут позже загружены менеджером устройств udev во время работы процесса init.
Процесс init
В завершающей фазе early userspace монтируется настоящий корневой каталог, замещающий начальную корневую ФС. Выполняется /sbin/init , который заменяет процесс /init . В Arch Linux в качестве init по умолчанию используется systemd.
getty
init запускает для каждого виртуального терминала (обычно их шесть) программу getty, которая инициализирует терминалы и запрашивает имя пользователя и пароль. Предоставленные входные данные getty проверяет по файлам /etc/passwd и /etc/shadow , после чего вызывает login или запускает менеджер экрана, если таковой имеется.
Менеджер экрана
Вместо приглашения входа getty можно использовать экранный менеджер.
Программа login создаёт сеанс для пользователя. Она устанавливает переменные окружения и запускает командую оболочку в соответствии с файлом /etc/passwd .
Оболочка
Прежде чем вывести строку приглашения, сразу после запуска командная оболочка исполняет файл настроек времени выполнения, вроде bashrc. Если для учётной записи настроен запуск X при входе, то в файле настроек должен вызываться либо startx, либо xinit.
GUI, xinit или wayland
xinit выполняет файл настроек xinitrc, в котором обычно запускается оконный менеджер. При выходе пользователя из оконного менеджера он возвращается в getty, по очереди завершая xinit, startx, командную оболочку и login.
Если ваш Arch Linux не загружается или загружается в чёрный экран, то начните с переключения на другой терминал сочетаниями клавиш Ctrl+Alt+F1, Ctrl+Alt+F2, Ctrl+Alt+F3 и так далее. Если вам это удалось и вы увидели приглашение ввести учётные данные для входа в систему, то дальше всё элементарно — выполните вход и откатите изменения, из-за которых система не запускается.
Но бывают более тяжёлые случаи, например, из-за установки видео драйвера, bbswitch или подобных программ, и может оказаться невозможным переключение на другие терминалы из-за полного зависания системы.
Ещё один пример трудной ситуации — полное удаление загрузочного диска (у меня такое случалось).
Загрузитесь в другую операционную систему — для этого можно установить Linux на флешку и держать эту флешку для подобных случаев. Кстати, вы можете использовать старую флешку, размером меньше 1 гигабайта, чтобы всегда держать на ней Live образ Arch Linux — специально на случай такой проблемы.
Как восстановить загрузочный диск Arch Linux
Если у вас повреждён или удалён загрузочный раздел, то загрузите Live образ Arch Linux с флешки и выполните следующие команды.
Обратите внимание, что вместо nvme0n1p1 вам нужно указать имя вашего загрузочного раздела, это может быть, например, /dev/sdb1. Чтобы посмотреть список всех дисков, выполните команду:
Форматируем разгрузочный раздел в FAT32:
Меняем значение корневой директории на новую:
Выполняем установку загрузчика
Редактируем содержимое файла:
Удалите то, что там есть и впишите туда:
Создайте конфигурационный файл для добавления пункта Arch Linux в менеджер systemd-boot:
Содержимое файла должно быть следующим:
Обратите внимание на /dev/nvme0n1p2 — это путь до моего диска с системой, замените на свой.
Выйдем из chroot, размонтируем смонтированные разделы и перезагрузимся:
Можно вынимать установочный диск.
Как удалить программу, из-за которой не загружается Arch Linux
Иногда загрузка не выполняется из-за установленной программы или наоборот, из-за удаления необходимого пакета.
Загрузите Live образ Arch Linux с флешки и выполните следующие команды. Обратите внимание, что вместо nvme0n1p1 и nvme0n1p2 вам нужно указать имена разделов вашего диска, это может быть, например, /dev/sdb1 и /dev/sdb2. Чтобы посмотреть список всех дисков, выполните команду:
Меняем значение корневой директории на новую:
По умолчанию вы являетесь пользователем root, но вы можете сменить пользователя существующего в системе, которую мы восстанавливаем. Это может быть полезно, так как нам будет доступна история команд этого пользователя и мы без труда вспомним, какие конфигурационные файлы мы редактировали и какие пакеты устанавливали/удаляли как раз перед невозможностью загрузиться.
Например, на нерабочей системе последние команды выполнялись от пользователя mial, выполним вход как этот пользователь:
General troubleshooting - Устранение общих неполадок в системе. Эта статья дает советы по устранению общих проблем. Для решения проблем, связанных с конкретной программой, посетите соответствующую страницу Wiki.
Contents
Общие процедуры
Внимание к деталям
Для того чтобы решить проблему абсолютно необходимо твёрдо понимать конкретные функции системы. Как это работает, и что нужно для запуска без ошибок? Если вы не можете ответить на эти вопросы, то настоятельно рекомендуется к рассмотрению Archwiki статьи, для функций с которыми у вас проблемы. После того, как вы почувствуете, что поняли систему, вам будет проще с решением точечных проблем.
Вопросы / перечень
Для вас ниже приведён ряд вопросов , когда дело обстоит с неисправной системой. Под каждым вопросом есть замечания, объясняющие, как вы должны ответить на каждый вопрос, и несколько лёгких способов, о том как собрать данные вывода, и какие инструменты могут быть использованы для обзора логов и журналов.
Примечание: Использование >> не перезапишет существующий текст в $HOME/issue.log .Более конкретно
При попытке решить проблему, никогда не подходите к ней как:
Приложение X не работает.
Напротив, посмотрите на проблему в полном объеме:
Приложение X даёт Y ошибку(и) при выполнении Z при условии A и B.
Например: LibreOffice(X) не даёт навести курсор(Y) при выборе меню(Z) в xmonad(A).
Дополнительная поддержка
Вся информация перед вами. Вы должны иметь хорошее представление о том, что происходит с системой. Теперь можете начать работать над исправлениями.
Проблемы загрузки
Для получения дополнительнойинформации, смотрите Boot debugging.
Пустой экран с видео Intel
Зависание при загрузке ядра
Попробуйте отключить ACPI, добавив параметр ядра acpi=off .
Не загружается система
Если ваша система вообще не запускается, загрузитесь с live-образа и воспользуйтесь chroot чтобы войти в систему и устранить проблему.
Отладка модулей ядра
Отладка аппаратных средств
Менеджер пакетов
fuser
Эта статья или раздел нуждается в переводе
fuser это утилита командной строки для определения процессов использующих ресурсы, таких как файлы, файловые системы и порты TCP / UDP.
fuser содержится в пакете psmisc , который должен быть уже установлен, как часть группы base .
Разрешения сессии
Во-первых, убедитесь, что у вас есть действующий локальный сеанс X:
Должны получить на выходе Remote=no и Active=yes . Если это не так, убедитесь, что X работает на томже tty, где и произошел вход. Это нужно чтобы сохранить сеанс logind. Который обрабатывается по умолчанию /etc/X11/xinit/xserverrc .
Ошибка при загрузке разделяемых библиотек
Эта статья или раздел нуждается в переводе
Воспользуйтесь pacman или pkgfile для поиска пакета, которому принадлежит недостающая библиотека:
В этом случае должен быть установлен пакет libusb-compat .
Ошибка также может означать, что пакет, который вы использовали для установки программы не перечисляет библиотеку в качестве зависимости в его PKGBUILD: если это официальный пакет, сообщите об ошибке; если это пакет AUR, сообщите об этом сопровождающему, используя свою страницу сайта AUR.
Файл: не может быть найден файл!
Эта статья или раздел нуждается в переводе
Это, скорее всего, оставит систему поломанной. И любые попытки сделать пересборку/переустановку пакета(ов) ничего не дадут. Кроме того, любые попытки, чтобы попытаться пересобрать initramfs приведут в дальнейшем к ошибке:
Установленное ранее приложение поместило файл настроек в пределах /etc/ld.so.conf.d/ или оно внесло изменения в /etc/ld.so.conf , которые в настоящий момент недействительны.
- Загрузитесь с установочного носителя Arch Linux Live CD.
- Смонтируйте корневой раздел ( / ) в /mnt и воспользуйтесь arch-chroot, chroot в вашей системе.
- Исследуйте /etc/ld.so.conf и удалите любые найденные неверные строки.
- Исследуйте файлы расположенные в каталоге /etc/ld.so.conf.d/ и удалите все неверные файлы.
- Пересоберите initramfs.
- Перезагрузитесь обратно в установленную систему.
- После загрузки, установите пакет который привёл систему в нерабочее состояние:
Почему я не могу записывать на NTFS разделы?
Эта статья или раздел нуждается в переводе
В чистой системе вы можете только читать из файловой системы NTFS. Если хотите записывать, установите пакет ntfs-3g .
Проверка орфографии помечает весь мой текст как с ошибками!
Эта статья или раздел нуждается в переводе
Примечания: aspell (обсуждение: [aspell is mentioned from many articles?>> This cannot be considered "general", what about creating a new article, since aspell is mentioned from many articles?])Вы установили aspell словарь? Воспользуйтесь pacman -Ss aspell чтобы увидеть доступные словари для скачивания.
Если после установки словарей проблема не решена, то скорее всего это проблема с enchant . Проверьте известные файлы словарей:
Итак, спустя 2 дня после использования арча, он просто перестал загружаться. При загрузке ОС я попадаю в консоль, в которой ничего кроме «Starting version 245.6-4-arch root: recovering journal root: clean, 228763/1638400 files, 2765734/6553600 blocks» Не выдает. Консольный курсор просто мигает, как бы символизируя, что ОС не может загрузиться.
Гуглинг не помог, единственное, что я понял так это то, что boot каталог куда-то пропал. Когда я загрузился с установочного образа арча и попытался примонтировать dev/sda1 к каталогу /mnt/boot мне выдало, что mnt/boot directory doesn’t exist. Потом я попробовал создать каталог /boot через mkdir и примонтировать таки удалось. То есть,boot исчез из раздела и это является причиной моей проблемы.
В связи с чем у меня назревает два вопроса: Как решить эту проблему без полной переустановки арча? Как избежать повторения подобных необьяснимых случаев?
Когда я загрузился с установочного образа арча и попытался примонтировать dev/sda1 к каталогу /mnt/boot мне выдало, что mnt/boot directory doesn’t exist. Потом я попробовал создать каталог /boot через mkdir и примонтировать таки удалось. То есть,boot исчез из раздела и это является причиной моей проблемы.
Бредовые действия и бредовые же выводы.
Давай нормальную диагностику. Загрузись снова с нуля с установочного образа Arch или лучше с любого Linux с GUI и выполни команды
, вывод сюда — чтобы посмотреть, что ты там разметил и как. Потом подскажу дальнейшие команды в зависимости от результата. Vsevolod-linuxoid ★★★★★ ( 13.06.20 20:32:13 )Последнее исправление: Vsevolod-linuxoid 13.06.20 20:35:16 (всего исправлений: 2)
Когда я загрузился с установочного образа арча и попытался примонтировать dev/sda1 к каталогу /mnt/boot мне выдало, что mnt/boot directory doesn’t exist. Потом я попробовал создать каталог /boot через mkdir и примонтировать таки удалось. То есть,boot исчез из раздела и это является причиной моей проблемы.
Неверный вывод. Это всего лишь значит, что в установочном образе по умолчанию не создан каталог /mnt/boot.
Каждый раз такое? Это странно.
попытался примонтировать dev/sda1 к каталогу /mnt/boot мне выдало, что mnt/boot directory doesn’t exist
Естественно. Ты монтируешь в файловой системе live системы, а не той что у тебя установлена. Конечно там не будет /mnt/boot.
То есть,boot исчез из раздела и это является причиной моей проблемы.
Не пойму, с чего ты так решил. Если ты сделал
mount /dev/sda1 /mnt/boot
то теперь сделай
и посмотри есть ли там нужные файлы.
Вообще, если бы у тебя исчез boot, то исчезло бы и ядро которое в нем как раз лежит. А ядро у тебя же как-то запускается. То есть причина явно не в этом.
Читайте также: