Что значит sudo unable to resolve host
Сообщение «unable to resolve host имя_хоста» означает, что утилита не может определить IP-адрес хоста «имя_хоста«. Казалось бы, sudo — это локальная команда для повышения привилегий в системе, и ей незачем определять IP хостов. Но это не совсем так: sudo может использоваться и удалёнными пользователями, например, подключёнными по SSH, а в самом конфигурационном файле /etc/sudoers уровни доступа различных пользователей настраиваются такой строчкой:
пользователь хост = ( другой_пользователь : группа ) команды
Подробнее про строку настройки читайте в статье настройка sudo в linux. А сейчас нам интересно, что для каждого запроса утилите нужно определить, какой хост используется на данном компьютере.
Если кратко, то основная идея разработчиков состоит в том, что один универсальный файл /etc/sudoers будет использоваться на множестве компьютеров и на каждом из них нужно определить, какие правила предназначены для него. Таким образом, переменная host в sudoers влияет только на локальные правила.
А теперь вернёмся к нашей ошибке. Как я уже сказал, она означает, что утилита не может определить IP-адрес «имени хоста». Для домена сайта это означало бы, что такой записи нет в DNS. Но поскольку это имя нашего локального компьютера, то вполне естественно, что его нет в глобальной сети.
Почему возникает ошибка «vfs unable to mount root fs»
Все ситуации, в которых может появиться сообщение «error: vfs unable to mount root fs» можно разделить на два вида:
- Загрузка с жёсткого диска — вы загружаете свою основную операционную систему после внесения изменений в таблицу разделов, обновления или других действий, которые могли задеть диски;
- Вы загружаете LiveCD-систему с оптического диска или флешки.
Второй вариант сразу же отбросим. Здесь исправлять нечего. Ошибка означает, что либо образ был битый, либо он был неверно записан на диск. А вот первый случай интереснее, рассмотрим основные причины, которые могут его вызывать:
- Корневой раздел был переименован и теперь называется по другому;
- Повреждена initramfs;
- Ядро не поддерживает файловую систему корневого раздела;
- Ошибка в конфигурации загрузчика, например, из-за недостаточного количества свободного места в папке /boot;
- Файловая система корневого раздела повреждена.
Теперь давайте рассмотрим возможные пути решения проблемы.
Неправильное имя хоста
При выполнении команды подключения по SSH на стороне клиента может быть получена ошибка:
$ ssh user@hostname.com ssh: Could not resolve hostname hostname.com: Name or service not known
Это значит, что имя хоста «hostname.com» не может быть сопоставлено с IP-адресом сервера SSH. Зачастую, это связано с работой DNS. В первую очередь, следует убедиться в правильности написания самого имени хоста. Также можно проверить разрешение этого хоста с помощью команды ping или сторонних сервисов. Если же во всех случаях наблюдается та же ошибка, можно попытаться подключиться, используя непосредственно IP-адрес:
$ ssh user@123.123.123.123
Как получить доступ к службам Windows из Linux на WSL
Рассмотрим другой вариант — на Windows запущен сервер (веб, FTP и пр.) или сетевая служба, можно ли к ней подключиться из Linux на WSL? Можно! Нам нужно знать IP адрес Windows в виртуальной сети, созданной для WSL.
Из Linux этот IP адрес можно посмотреть командой:
ip route show default
IP адрес Windows это 172.26.160.1.
В самой Windows также можно посмотреть этот IP, причём как минимум двумя способами.
В терминале с помощью команды:
ipconfig
В графическом интерфейсе, в Диспетчере задач на вкладке «Производительность»:
Теперь используйте этот IP адрес для подключения к веб-серверу, FTP или любой другой службе Windows из Linux на WSL.
Что значит sudo unable to resolve host
Сообщение «unable to resolve host имя_хоста» означает, что утилита не может определить IP-адрес хоста «имя_хоста». Казалось бы, sudo — это локальная команда для повышения привилегий в системе, и ей незачем определять IP хостов. Но это не совсем так: sudo может использоваться и удалёнными пользователями, например, подключёнными по SSH, а в самом конфигурационном файле /etc/sudoers уровни доступа различных пользователей настраиваются такой строчкой:
пользователь хост=(другой_пользователь:группа) команды
Подробнее про строку настройки читайте в статье настройка sudo в linux. А сейчас нам интересно, что для каждого запроса утилите нужно определить, какой хост используется на данном компьютере.
Если кратко, то основная идея разработчиков состоит в том, что один универсальный файл /etc/sudoers будет использоваться на множестве компьютеров и на каждом из них нужно определить, какие правила предназначены для него. Таким образом, переменная host в sudoers влияет только на локальные правила.
А теперь вернёмся к нашей ошибке. Как я уже сказал, она означает, что утилита не может определить IP-адрес «имени хоста». Для домена сайта это означало бы, что такой записи нет в DNS. Но поскольку это имя нашего локального компьютера, то вполне естественно, что его нет в глобальной сети.
Как включить WSL2 (подсистему Windows для Linux второй версии) и установить последнюю версию ядра
Microsoft работала с Canonical, чтобы предложить полную среду оболочки Bash на основе Ubuntu, которая работает поверх этой подсистемы, а в настоящее время теперь можно запускать полноценные дистрибутивы Linux. Технически это вообще не Linux. Linux — это базовое ядро операционной системы, которое здесь недоступно. Вместо этого она позволяет запускать оболочку Bash и те же двоичные файлы, которые вы обычно запускаете в Ubuntu Linux. Сторонники свободного программного обеспечения часто утверждают, что среднюю операционную систему Linux следует называть «GNU/Linux», потому что на самом деле на ядре Linux работает множество программ GNU. Оболочка Bash, которую вы получите, на самом деле представляет собой все эти утилиты GNU и другое программное обеспечение.
Эта функция изначально называлась «Bash в Ubuntu в Windows», но она также позволяла запускать Zsh и другие оболочки командной строки. Теперь же она поддерживает и другие дистрибутивы Linux. Вы можете выбрать openSUSE Leap или SUSE Enterprise Server, Fedora или Kali Linux вместо Ubuntu.
Здесь есть некоторые ограничения. Она пока не поддерживает фоновое серверное программное обеспечение и официально не работает с графическими настольными приложениями Linux. Не все приложения командной строки также работают, поскольку функция не идеальна.
По умолчанию WSL2 отключена в Windows. Чтобы её включить можно воспользоваться графическим интерфейсом или командной строкой. Чтобы включить WSL2 в командной строке, нажмите Win+x и в открывшемся меню выберите «Windows PowerShell (администратор)»:
Важно открыть PowerShell с повышенными правами.
Выполните в нём:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Дождитесь окончания загрузки и выполнения.
Перезагрузите компьютер, для этого нажмите Enter.
Теперь опять откройте PowerShell от администратора и выполните:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Вновь перезагрузите компьютер.
Скачайте и установите последнее ядро WSL2 Linux Kernel отсюда: https://aka.ms/wsl2kernel (прямая ссылка).
Опять откройте PowerShell как администратор и выполните:
wsl --set-default-version 2
Если у вас уже установлен дистрибутив (например, Kali Linux) в WSL1, то для обновления выполните команду:
wsl --set-version kali-linux 2
Узнаем версию Linux
Linux — это всего лишь ядро, на базе которого разрабатываются различные дистрибутивы. Порою в их обилии легко запутаться, но, зная как проверить версию самого ядра или графической оболочки, вы сможете в любой момент узнать всю необходимую информацию. А способов для проверки много.
Способ 1: Inxi
Inxi поможет в два счета собрать все сведения о системе, однако предустановлена она лишь в Linux Mint. Но это не беда, абсолютно любой пользователь может за несколько секунд установить ее из официального репозитория.
Установка утилиты и сама работа с ней будет происходить в «Терминале» — аналог «Командной строки» в Windows. Поэтому, прежде чем начинать перечислять все возможные вариации проверки информации о системе с использованием «Терминала», стоит сделать ремарку и рассказать, как открыть этот самый «Терминал». Для этого необходимо нажать сочетание клавиш CTRL + ALT + T или совершить поиск по системе с поисковым запросом «Terminal» (без кавычек).
Установка Inxi
-
Пропишите следующую команду в «Терминал» и нажмите Enter, чтобы установить утилиту Inxi:
- После этого у вас попросят ввести пароль, который вы указывали при установке ОС.
- В процессе загрузки и установки Inxi вам необходимо будет дать на это свое согласие, введя символ «Д» и нажав Enter.
После нажатия строки в «Терминале» побегут вверх — это значит что начался процесс установки. В итоге вам необходимо дождаться его окончания. Определить это вы можете по появившемуся вашему никнейму и имени ПК.
Проверка версии
После установки вы можете проверить информацию о системе, введя следующую команду:
После этого на экран выведется следующая информация:
- Host — имя компьютера;
- Kernel — ядро системы и ее разрядность;
- Desktop — графическая оболочка системы и ее версия;
- Distro — имя дистрибутива и его версия.
Однако это далеко не вся информация, которую может предоставить утилита Inxi. Чтобы узнать все сведения, впишите команду:
В результате будет отображена абсолютно вся информация.
Способ 2: Терминал
В отличие от способа, про который будет рассказано в завершении, у этого есть одно неоспоримое преимущество — инструкция общая для всех дистрибутивов. Однако, если пользователь только-только пришел с Windows и еще не знает, что такое «Терминал», ему будет сложно адаптироваться. Но обо всем по порядку.
Если вам необходимо определить версию установленного дистрибутива Linux, то для этого существует немало команд. Сейчас будут разобраны самые популярные из них.
-
Если интересует только информация о дистрибутиве без лишних подробностей, то лучше воспользоваться командой:
после введения которой на экране появится информация о версии.
Если нужны более детальные сведения — введите команду:
Она выведет название, версию и кодовое имя дистрибутива.
Это была информация, которую встроенные утилиты собирают самостоятельно, но есть возможность посмотреть сведения, которые были оставлены самими разработчиками. Для этого нужно прописать команду:
Эта команда покажет абсолютно всю информацию о релизе дистрибутива.
Это не все, а лишь самые распространенные команды для проверки версии Linux, но их хватит с лихвой, чтобы узнать всю нужную информацию о системе.
Способ 3: Специальный инструмент
Данный способ отлично подойдет тем пользователям, которые только начали знакомиться с ОС на базе Linux и еще с опаской относятся к «Терминалу», так как в нем отсутствует графический интерфейс. Однако в этом методе есть и свои недостатки. Так, с помощью него нельзя узнать все подробности о системе сразу.
-
Итак, чтобы узнать информацию о системе, вам необходимо войти в ее параметры. На разных дистрибутивах это выполняется по-разному. Так, в Ubuntu вам необходимо нажать левой кнопкой мыши (ЛКМ) по иконке «Параметры системы» на панели задач.
Если после установки ОС вы вносили в нее какие-то коррективы и данный значок пропал с панели, то можно легко отыскать данную утилиту, произведя поиск по системе. Просто откройте меню «Пуск» и пропишите в поисковую строку «Параметры системы».
После входа в параметры системы вам необходимо отыскать в разделе «Система» значок «Сведения о системе» в Ubuntu или «Подробности» в Linux Mint, после чего нажать на него.
После этого появится окно, в котором будет находиться информация об установленной системе. В зависимости от используемой ОС, их обилие может разниться. Так, в Ubuntu указана лишь версия дистрибутива (1), используемая графика (2) и разрядность системы (3).
В Linux Mint информации больше:
Вот мы и узнали версию Линукс, используя для этого графический интерфейс системы. Стоит повториться, сказав, что расположение элементов в разных ОС может различаться, однако суть заключается в одном: отыскать настройки системы, в которых открыть сведения о ней.
Проблемы в программах
Если ни с того ни с сего закрывается или не так, как требуется работает, какая-нибудь графическая программа, решение проблем linux начинается из запуска ее через терминал. Для этого просто введите исполняемый файл программы и нажмите Enter. Обычно достаточно начать вводить имя программы с маленькой буквы и использовать автодополнение для завершения ввода названия.
В терминале программа, скорее всего, покажет почему она не работает. Также у многих программ поддерживается опция -v или —verbose. Вы можете попробовать использовать эту опцию, если первый запуск в терминале ничего не дал. Далее, когда уже есть сообщение об ошибке, вы можете попытаться исправить его сами, если поняли в чем дело или попытаться найти решение на формуме, скорее всего, другие пользователи уже решили вашу проблему. Но если нет, вы можете создать новую тему и описать там свою ошибку. Но без вывода программы в терминале вам вряд ли помогут.
Многие ошибки системы linux, связанные с графической оболочкой вы можете найти в файле ~/.xsession-errors в вашей домашней директории. Если оболочка работает медленно, зависает или не работают другие программы, но в других логах причин этому нет, возможно, ответ находится именно в этом файле.
Также ошибки linux могут возникать не только в обычных программах но и в работающих в фоне сервисах. Но их тоже можно решить, чтобы посмотреть сообщения, генерируемые сервисом, запущенным с помощью systemd, просто наберите команду просмотра состояния сервиса:
$ sudo systemctl status имя_сервиса
Дальше вы знаете, что делать с этой ошибкой, главное что у вас есть зацепка, а дальше все можно решить, ну или почти все.
Здесь, как и всегда большинство ошибок связано с тем, что что-то не установлено, какого-то файла нет или к чему-то невозможно получить доступ, тогда решение проблем linux не вызовет много забот.
Как пользоваться Linux в WSL
Чтобы открыть установленную вами среду Linux, просто откройте меню «Пуск» и найдите установленный вами дистрибутив. Например, если вы установили Kali Linux, запустите ярлык Kali Linux.
Вы можете закрепить этот ярлык приложения в меню «Пуск», на панели задач или на рабочем столе для облегчения доступа.
При первом запуске среды Linux вам будет предложено ввести имя пользователя и пароль UNIX. Они необязательно должны совпадать с вашим именем пользователя и паролем Windows, но будут использоваться в среде Linux.
Например, если вы введёте «alex» и «hackware» в качестве учётных данных, ваше имя пользователя в среде Linux будет «alex», а пароль, который вы используете в среде Linux, будет «hackware» — независимо от вашего имени пользователя Windows и его пароля.
Вы можете запустить установленную среду Linux, выполнив команду wsl. Если у вас установлено несколько дистрибутивов Linux, вы можете выбрать среду Linux по умолчанию, запускаемую этой командой.
Если у вас установлена Kali Linux, вы также можете запустить команду kali, чтобы установить её. Для openSUSE Leap 15 SP1 используйте opensuse-15-sp1. Для SUSE Linux Enterprise Server 15 SP1 используйте SLES-15-SP1. Эти команды перечислены на странице каждого дистрибутива Linux в Магазине Windows.
Вы по-прежнему можете запустить среду Linux по умолчанию, выполнив команду bash, но Microsoft утверждает, что это устарело. Это означает, что команда bash может перестать работать в будущем.
Если у вас есть опыт использования оболочки Bash в Linux, Mac OS X или других платформах, вы будете как дома.
В Kali Linux и Ubuntu вам нужно добавить к команде префикс sudo, чтобы запустить её с правами root. Пользователь «root» на платформах UNIX имеет полный доступ к системе, как пользователь «Администратор» в Windows. Ваша файловая система Windows в среде оболочки Bash находится в /mnt/c.
Ещё одна важная особенность дистрибутивов Linux, запущенных этим образом, в том, что прямо в консоли Linux вы можете выполнять команды Windows.
Связанная статья: Что такое sudo
Используйте те же команды терминала Linux, которые вы используете в этой операционной системе. Если вы привыкли к стандартной командной строке Windows с её командами DOS, вот несколько основных команд, общих для Bash и Windows:
- Изменить каталог: cd в Bash, cd или chdir в DOS
- Список содержимого каталога: ls в Bash, dir в DOS
- Перемещение или переименование файла: mv в Bash, move и rename в DOS
- Скопировать файл: cp в Bash, copy в DOS
- Удалить файл: rm в Bash, del или erase в DOS
- Создайте каталог: mkdir в Bash, mkdir в DOS
- Используйте текстовый редактор: vi или nano в Bash, edit в DOS
Связанная статья: Азы работы в командной строке Linux (часть 1), а также последующе части
Важно помнить, что, в отличие от Windows, оболочка Bash и её среда, имитирующая Linux, чувствительны к регистру. Другими словами, «File.txt» с большой буквы отличается от «file.txt» без заглавной буквы.. Дополнительные инструкции смотрите в серии наших руководств Азы работы в командной строке Linux для начинающих.
Дополнительные инструкции смотрите в серии наших руководств Азы работы в командной строке Linux для начинающих.
Вам нужно будет использовать команду apt для установки и обновления программного обеспечения среды Debian, Kali Linux, Ubuntu. Не забудьте указать перед этими командами префикс sudo, чтобы они запускались от имени пользователя root — Linux-эквивалента Администратора. Вот команды apt, которые вам нужно знать:
Загрузить обновлённую информацию о доступных пакетах:
sudo apt update
Установить пакет приложения (замените «ИМЯ-ПАКЕТА» на имя пакета):
sudo apt install ИМЯ-ПАКЕТА
Удаление пакета приложения (замените «ИМЯ-ПАКЕТА» на имя пакета):
sudo apt remove ИМЯ-ПАКЕТА
Поиск доступных пакетов (замените СЛОВО словом, по которому нужно искать пакеты в именах и описаниях):
sudo apt search СЛОВО
Загрузите и установите последние версии установленных пакетов:
sudo apt full-upgrade
Если вы установили дистрибутив SUSE Linux, вместо этого вы можете использовать команду zypper для установки программного обеспечения.
После того, как вы загрузили и установили приложение, вы можете ввести его имя в запросе, а затем нажать Enter, чтобы запустить его. Дополнительную информацию смотрите в документации к конкретному приложению.
Программное обеспечение, устанавливаемое в оболочке Bash, ограничено оболочкой Bash. Вы можете получить доступ к этим программам из командной строки, PowerShell или где-либо ещё в Windows, но только если вы запустите команду вида
bash -c КОМАНДА
Регистрация сведений о проблеме, отчета об ошибке, запроса на функцию
Функция обработки проблем в репозитории продуктов WSL позволяет:
Выполнять поиск сведений о существующих проблемах, чтобы найти информацию, связанную с возникшей проблемой
Обратите внимание, что в строке поиска можно удалить is:open, чтобы включить в результаты поиска проблемы, которые уже были решены. Рассмотрите возможность комментирования или одобрения любых открытых проблем, чтобы выразить свою заинтересованность в их продвижении в качестве приоритетных.
Регистрировать сведения о новых проблемах
Если вы обнаружили проблему с WSL, о которой нет упоминаний, вы можете нажать зеленую кнопку New issue (Новая проблема), а затем выбрать элемент WSL — Bug Report (WSL — отчет об ошибках). Вам нужно будет включить название проблемы, номер сборки Windows (выполните , чтобы узнать номер текущей сборки), независимо от того, используете ли вы WSL 1 или WSL 2, текущую версию ядра Linux (выполните или ), номер версии дистрибутива (выполните ), а также любые другие версии используемого программного обеспечения, сведения о действиях для воспроизведения, ожидаемом поведении, фактическом поведении, а также журналы диагностики, если они доступны и применимы. Дополнительные сведения см. в разделе, посвященном вкладу в WSL.
Отправить запрос на функцию, нажав зеленую кнопку New issue (Новая проблема) и выбрав Feature request (Запрос на функцию). Вам нужно будет ответить на несколько вопросов, описывающих ваш запрос.
Кроме того, вы можете сделать следующее:
- Зарегистрировать сведения о проблеме с документацией, используя репозиторий документов WSL. Чтобы внести изменения в документацию по WSL, ознакомьтесь с руководством для участников разработки портала «Документация» Майкрософт.
- Зарегистрировать сведения о проблеме с Терминалом Windows, используя репозиторий продуктов Терминала Windows, если проблема связана с Терминалом Windows, консолью Windows или пользовательским интерфейсом командной строки.
Что делать если возникла «обнаружена ошибка в системной программе»
Что это вообще значит?
В основном это означает что в вашей системе произошел сбой. Но не беспокойтесь, это не очень критическая проблема и систему по-прежнему можно использовать. Просто одна программа неожиданно завершилась и Ubuntu спрашивает вас не хотите ли вы отправить отчет об ошибке разработчикам чтобы те смогли исправить проблему.
Canonical использует специальную утилиту Apport, которая собирает данные об ошибках в системе и отправляет их разработчикам. Как только какая-нибудь программа в системе завершается с сигналом SIGSEGV, SIGBUS, SIGFPE или другим, вызывающим ошибку, запускается демон Apport, собирает данные об ошибке и компьютере, затем создает crash файл в каталоге /var/crash. Информация из этого файла поможет разработчикам решить проблему. С другой стороны, когда в этом каталоге появляется новый файл, запускается графическая утилита, которая показывает информацию об ошибке и предложение отправить отчет разработчикам.
Если в других дистрибутивах такая ошибка не наблюдается, это еще не значит что дистрибутив стабильнее и программы не падают. Просто там некому палить такое их поведение.
Как только я нажму сообщить о проблеме, она исчезнет?
Нет, не совсем. После того как вы нажмете на кнопку отправки отчета, вы получите следующее окно:
Утилита Apport соберет всю возможную информацию об ошибке, затем откроется браузер где вы сможете оформить отчет, используя свою или создав новую учетную запись Launchpad. Как вы видите это сложная процедура, которая займет около четырех шагов.
Кроме того, возможно, вы сможете решить проблему сами, если это не баг в программе, а ошибка, вызванная тем, что вы что-то неправильно установили. Посмотрите подробности (Show details) об ошибке в этом окне и попытайтесь сами или с помощью поисковых систем решить что с ней делать.
А если я хочу сообщить разработчикам о проблеме?
Это очень мило с вашей стороны. Вы поступаете правильно, но есть два но. Во-первых есть вероятность что кто-то уже сообщил об этой проблеме. Во-вторых, даже если вы сообщите разработчикам, это не гарантирует что вы не увидите ошибку снова. Точнее, наоборот, если программа падает регулярно, вы будете видеть это сообщение постоянно, пока с этим что-то не сделаете. Конечно, можно установить галочку не показывать больше для этой программы, но если программы разные, этот путь не поможет.
Вы предлагаете не сообщать о проблеме?
И да, и нет. Сообщите об ошибке когда увидите ее впервые если хотите. Информацию об ошибке вы можете увидеть, нажав кнопку Show details, как на картинке выше. Но если вы сталкиваетесь с ошибкой повторно и не можете ее решить или не хотите сообщать разработчикам советую вам избавиться от нее навсегда.
Исправляем проблему обнаружена ошибка в системной программе
Отчеты об ошибках хранятся в каталоге /var/crash. Если вы посмотрите содержимое этого каталога, можете увидеть там несколько файлов с данными о предыдущих ошибках.
Отчеты о сбоях лучше удалить, так как со временем они будут накапливаться и занимать дисковое пространство. Для этого выполните команду:
Теперь у вас не останется данных о прежних сбоях, но если сбой произойдет снова, вы опять увидите то сообщение. Можно каждый раз удалять отчеты, но лучше отключить Apport (отладочный инструмент) и навсегда забыть о всплывающих окнах.
Отключение Apport в Ubuntu
Если вы это сделаете, вы больше не получите ни одного сообщения о неожиданном завершении программы в вашей системе. По-моему это не так уж плохо, если вы не отправляете отчеты об ошибках. Если вы не готовы отправлять отчеты об ошибках, то отсутствие уведомлений о сбоях не будет иметь никакого значения.
Вы можете отключить только утилиту, которая показывает вам уведомления, но оставить службу, собирающую данные в /var/crash работающей. Для этого выполните:
Для полного отключения Apport откройте терминал и введите команду:
Вот содержимое этого файла:
Замените enable=1 на enable=0 и сохраните изменения. Теперь вы не увидите никаких отчетов о сбоях в программах. Программа не будет собирать отчеты об ошибках и вы о них никогда не узнаете. Если вы снова захотите видеть уведомления достаточно просто вернуть флаг enabled в положение 1.
Как получить доступ к службам Linux в WSL (какой IP у Linux)
Для дистрибутивов Linux создаётся виртуальная сеть Ethernet. Благодаря этой сети можно получить доступ из Windows в Linux, а также в обратном направлении.
Чтобы узнать IP адрес Linux выполните команду:
ip a
На скриншоте видно, что IP адресом Linux является 172.26.173.37. На предыдущем шаге мы запустили веб-сервер — попробуем в веб-браузере из Windows открыть страницу с веб-сервера в Linux:
Мы видим «Apache2 Debian Default Page», то есть страницу по умолчанию веб-сервера Apache2 на Debian.
Это означает, что
- Веб-сервер действительно работает
- Мы можем получить доступ к сетевым службам Linux из Windows
Что мне осталось непонятным — все запущенные дистрибутивы имеют один и тот же IP адрес. Более того, если запустить службу (открыть порт) на одном из дистрибутивов, то этот же порт окажется открытым и на всех остальных. Следовательно, например, не получится запустить веб-сервер одновременно на двух или более дистрибутивах… У всех дистрибутивах в WSL один сетевой интерфейс на всех.
Что делать с «vfs unable to mount root fs»
1. Загрузка из более старого ядра
После того, как система выдаст эту ошибку, случится Kernel Panic и компьютер перезагрузится. Вы снова окажетесь в меню загрузчика Grub. Здесь, первым делом, надо попытаться загрузиться с помощью более старого ядра. Для этого выберите пункт Дополнительные параметры и выберите одно из более старых ядер.
Если система в этом случае загрузится, то можно сделать вывод, что не работает только новое ядро. Если вы собирали его сами, то, возможно, вы не включили в него все необходимые для работы файловые системы. Если это ядро из репозиториев, и система загрузилась с более старым ядром, то можно предположить, что у вас повреждена initramfs для нового ядра. Это тоже могло произойти из-за недостатка памяти при обновлении системы. Чтобы всё исправить, вам достаточно освободить место в каталоге /boot/ и создать новую initramfs. Проверьте и освободите место в папке /boot, если его там мало:
У меня занято только 30%, если будет 100% — надо освобождать. Для создания initramfs сначала узнаем текущую версию ядра:
Затем вставляем полученную версию в такую команду:
Получится, например:
После завершения этой операции надо обновить конфигурацию Grub:
Если вы думаете, что проблема именно в свободном пространстве и initramfs, но загрузится с помощью более старого ядра не можете, то попробуйте другой LiveCD-дистрибутив и попытайтесь всё исправить в chroot-окружении.
2. Неверное имя корневого раздела Grub
Сейчас, в большинстве дистрибутивов, в конфигурационном файле Grub имя корневого раздела передается ядру в формате UUID. И с этим обстоятельством есть одна проблема. Если вы каким-либо образом измените корневой раздел, например, измените его размер, то UUID изменится. И если вы перезагрузитесь, не обновив конфигурацию Grub, то система больше не загрузится, потому что ядро попросту не сможет найти нужного раздела.
Но попытаться решить проблему можно. Если вы точно знаете, на каком разделе у вас находится корень, то можно прямо в меню Grub исправить конфигурацию. Для этого в меню выберете стрелками вверх и вниз нужный пункт, а затем нажмите кнопку E. Откроется редактор конфигурации. Вам нужно найти строчку, похожую на эту:
В ней надо заменить UUID=9d8d92de-74a6-4e64-8281-b8548c690e0c на обычное имя вашего корневого раздела, например, /dev/sda2. Для начала загрузки нажмите F10. Если система загрузится, значит проблема была именно в этом. В дальнейшем, можно просто обновить конфигурацию Grub:
Или даже попросить Grub больше не использовать UUID для обозначения корневого раздела:
Если ошибка исчезла, но система всё ещё не загружается, обратите внимание, что systemd всё ещё использует файл /etc/fstab для монтирования файловых систем. И если корневая файловая система (и не корневая тоже) там указана неверно, система не загрузится
Для исправления этой проблемы можно использовать режим восстановления Ubuntu. Здесь тоже надо заменить UUID на обычную запись или же на правильный UUID. Такая проблема очень часто становится причиной медленной загрузки Linux.
В этом же режиме можно проверить корневой раздел на ошибки, но для проверки диска лучше использовать LiveCD.
Проверка состояния сервера SSH
При получении ошибок подключения также не лишним будет проверить, запущен ли сам сервер SSH. Это можно сделать при помощи команды systemctl:
$ systemctl status sshd sshd.service – OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Fri 2019-04-05 11:00:46 EDT; 1 mounth 1 days ago Process: 899 ExecStartPre=/usr/sbin/sshd-keygen (code=exited, status=0/SUCCES) Main PID: 906 (sshd) Cgroup: /system.slice/sshd.service ├─ 906 /usr/sbin/sshd -D ├─26941 sshd: └─26942 sshd:
В случае, если демон SSH не работает, то в строке Active будет следующее:
Active: inactive (dead) since Fri 2019-04-05 08:36:13 EDT; 2s ago
Для запуска демона следует использовать команду:
$ systemctl start sshd
Следует также обратить внимание на то, что обычно в дистрибутивах CentOS демон SSH называется sshd, а в Ubuntu – ssh
Как показать логотип дистрибутива Linux в терминале?
Теперь, после этих основ, позвольте мне рассказать вам об инструментах для отображения отличного логотипа дистрибутива Linux в терминале с базовой информацией об оборудовании:
1. screenFetch
screenFetch, также называемый Bash Screenshot Information Tool, является одной из лучших утилит Linux, которую можно использовать для отображения полезной системной информации на вашем терминале. screenFetch автоматически определяет ваш дистрибутив Linux и отображает ASCII-версию логотипа с другой информацией, такой как версия ядра, время работы, пакеты, разрешение экрана, версия оболочки, тема, процессор, графический процессор и оперативная память.
Чтобы установить screenFetch в Ubuntu и его производных, вам нужно выполнить следующую команду в терминале:
sudo apt-get установить screenfetch
Чтобы узнать, как установить screenFetch на другие дистрибутивы Linux, такие как Arch, Fedora, Gentoo, openSUSE, Solus и т. Д., Вы можете посетить их страницу GitHub.
Чтобы запустить screenFetch и отобразить логотип дистрибутива Linux в терминальной и системной информации, после установки утилиты вам просто нужно выполнить следующую команду:
screenfetch
На странице GitHub screenFetch также упоминается множество опций, которые вы можете указать, и получите желаемый результат. Вы можете изменить цвета, установить, какая информация отображается, удалить все цвета и многое другое.
Вот как выглядит мой вывод команды screenFetch в Ubuntu Linux:
2. Neofetch
Neofetch является вторым инструментом в этом списке лучших инструментов для отображения логотипа дистрибутива Linux ASCII в терминале. Он может быть установлен на различных платформах. Он показывает тонны информации, такие как версия дистрибутива Linux, модель компьютера, ядро Linux, время работы, пакеты, оболочка, разрешение экрана, окружение рабочего стола, менеджер окон, тема, значки, процессор, графический процессор и оперативная память. Я часто сталкиваюсь с дебатами, такими как Screenfetch vs Neofetch на форумах Linux. В конечном счете, это личный выбор.
Хотя вы всегда можете скачать / клонировать последний выпуск и запустить makefile, ниже приведены простые шаги по установке Neofetch на Ubuntu Linux:
Для Ubuntu 17.04 и выше:
sudo apt установить neofetch
Для Ubuntu 16.10 и ниже:
sudo add-apt-repository ppa: dawidd0811 / neofetch
обновление sudo apt
sudo apt установить neofetch
Чтобы использовать Neofetch для отображения системной информации на терминале, выполните следующую команду:
neofetch
Вот как выглядит вывод моей команды neofetch на Ubuntu Linux:
3. Linux_logo
Linux_logo — это простой инструмент для отображения логотипа дистрибутива Linux и версии Linux на экране вашего терминала. Он показывает меньше информации по сравнению с screenFetch и neofetch. На терминале отображается логотип дистрибутива Linux и его название. Для установки Linux_logo в системах на основе Ubuntu Linux или APT вам нужно выполнить следующую команду:
sudo apt установить linuxlogo
Чтобы запустить утилиту Linux_logo в вашей системе для отображения логотипа Linux в виде ASCII, выполните следующую команду в терминале:
linuxlogo
Вот вывод утилиты Linux_logo на моем терминале Ubuntu Linux:
4. Арчей
Archey — еще один классный инструмент, который можно использовать для отображения логотипа дистрибутива Linux в ASCII-графике. Этот системный информационный инструмент написан на Python. Он отображает информацию о пользователе, дистрибутиве Linux, версии ядра, времени работы, оконном менеджере, оболочке, пакетах, процессоре, оперативной памяти и объеме памяти.
Чтобы установить Archey в Ubuntu и его производных, вы можете запустить следующие команды одну за другой:
sudo apt-get установить lsb-релиз scrot
wget http://github.com/downloads/djmelik/archey/archey-0.2.8.deb
sudo dpkg -i archey-0.2.8.deb
После установки инструмента Archey вы можете запустить его, чтобы показать логотип дистрибутива Linux в терминале и информацию о системе, используя следующую команду:
Archey
На своей странице GitHub разработчик Archey выразил планы полностью переписать Archey. Мы можем ожидать, что в будущем обновлении будут добавлены еще некоторые функции.
Вот как выглядит мой вывод команды Archey на Ubuntu Linux: