Не мог загрузиться в Ubuntu, получая мигающий белый курсор

Я становлюсь действительно взволнованным - поскольку я действительно должен восстановить свою Ubuntu - и потратил впустую так много времени на попытку зафиксировать это.

В основном я просто следовал за лабораторией для своего класса безопасности и встретился с этой проблемой.

Хорошо, таким образом, я следовал за этими командами:

cd /bin
rm sh
ln -s /bin/zsh /bin/sh

Затем, когда я открыл новый терминал затем, он дал своего рода ошибку. Так, я думал, что это уйдет после перезапуска моей системы.

Но, к моей неудаче моя система никогда не могла загружаться снова.

Сначала это открывает grub2 диспетчер начальной загрузки затем, когда я совершил нападки, вводят в Ubuntu, которую это загружает в черный экран мерцающим курсором в верхнем левом.

У меня есть большая моя работа и вся моя среда программирования для работы и школы в этой системе.

2
задан 3 October 2014 в 02:20

2 ответа

Я не думаю, что это заставило бы Вас быть неспособными загрузиться, но Вы могли вернуться к своему старому sh путем выполнения этого, так как/bin/sh является просто символьной ссылкой на/bin/dash так или иначе...

Начальная загрузка, пока Вы не получаете мерцающий курсор тогда, нажимает Ctrl+Alt+F2 для получения, терминал тогда делают

cd /bin
sudo rm sh           # if this fails then just go to next
sudo ln -s dash sh

Тогда, можно перезагрузить (sudo reboot)

Редактирование: Для любого в будущем, если Вы не можете получить доступ к приглашению оболочки при начальной загрузке путем нажатия Ctrl+Alt+F2, можно выполнить одно из следующих действий:

Опция 1: Загрузите живой CD, и попытка нажатия тогда открывают терминал и делают

sudo mount /dev/sda1 /mnt   #replace sda1 with whatever drive/partition your install is on
cd /mnt/bin
sudo rm sh           #if this fails then just go to next
sudo ln -s dash sh

Опция 2: Загрузите живой CD, и попытка нажатия тогда открывают терминал там и делают

sudo mount /dev/sda1 /mnt   #replace sda1 with whatever drive/partition your install is on
sudo chroot /mnt
cd /bin
rm sh           # if this fails then just go to next
ln -s dash sh

Тогда, можно перезагрузить (sudo reboot)

, Который должен вернуться к значению по умолчанию sh папка.

источник: https://askubuntu.com/a/135219/333886

2
ответ дан 7 October 2019 в 00:35

Это не удивительно то создание /bin/sh символьная ссылка на /bin/zsh вызванные проблемы, с тех пор /bin/zsh часто не существует. Я подозреваю, что zshInstall zsh не был установлен, и вот почему вещи повредились. Это кажется особенно likely2, если ошибка, которую Вы видели на новом терминале, была:

bash: /usr/bin/lesspipe: /bin/sh: bad interpreter: No such file or directory

Создание /bin/sh ссылка на dash снова (как это находится по умолчанию на Ubuntu) обычно соответствующее решение - и в Вашем случае, поскольку Ваша цель состоит в том, чтобы восстановить Вашу систему к способу, которым это было прежде, это - определенно корректный путь. Это может быть достигнуто путем начальной загрузки от живых медиа, как представлено в превосходном answer1 Termhn, и другими способами.

Но если по некоторой причудливой причине Вы действительно хотели использовать zsh вместо dash для /bin/sh в Ubuntu это может быть достигнуто - но не совсем путь Вы делали попытку ее.

Восстановление shdash Без продуктивной среды

Я думаю с помощью живого CD/DVD/USB, полное лучшее решение этой проблемы, потому что это является менее техническим, чем другие пути и, очень вероятно, успешно выполнится без проблем.

Но в случае, если Вы хотите зафиксировать это только путем начальной загрузки от жесткого диска, Вы можете.

Это несколько менее длинно и сложно, чем это могло бы казаться на первый взгляд, как хороший бит длины происходит из-за (a) представлению двух альтернатив и (b) снимкам экрана.

Во-первых, закрытие или перезагрузка чисто (если Вы можете).

Это относится ко всем решениям, не только тем, которые пытаются решить проблему при тихой начальной загрузке от внутреннего жесткого диска. Но это - вероятно, не большая проблема, если Вы не сделали этого.

В зависимости от того, как плохо поврежденные вещи, Ctrl+Alt+Delete не мог бы успешно закрыть и перезагрузить Вашу систему Ubuntu. (Обычно это делает это, если нажато когда в основанной на тексте виртуальной консоли.)

Если Ctrl+Alt+Delete не работает, используйте:

  • Alt+SysRq+REISUB к перезагрузке, или
  • Alt+SysRq+REISUO для выключений.

Так как проблемы вызываются отсутствием /bin/sh не должен вызывать отказы глубоко в ядре, я думаю, что эти "волшебные SysRq" методы будут всегда работать в этой ситуации.

init=/bin/dash Должен работать

  1. Удержите Сдвиг при начальной загрузке для получения меню GRUB.

    enter image description here
    Это должно очень обычно напоминать этот снимок экрана, но, как могут ожидать, будет выглядеть по-другому, в зависимости от которой разновидности Ubuntu и выпуска Вы работаете.

  2. "Ubuntu" выбрана по умолчанию. Сохраните тот выбор, но нажмите e для редактирования его.
    (Не волнуйтесь, Ваше редактирование только для этой начальной загрузки и не будет сохранено.)

  3. Переместите в конец строки то начало linux /boot/vmlinuz-.... (Можно использовать клавиши со стрелками и Конец для получения в конец строки.)

    enter image description here

    Введите пространство, затем init=/bin/dash. Затем нажмите F10 для начальной загрузки этой конфигурации.

    Источник: Как установить NOMODESET и другие параметры загрузки ядра в grub2

  4. Необходимо видеть:

    /bin/dash: 0: can't access tty: job control turned off
    #
    

    Это - корневая оболочка.

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

    mount -o remount,rw /
    

    Эта команда, и те, которые следуют за ним, не будут (обычно) производить вывода, когда они успешно выполнятся. Это хорошо.

  6. Сделать /bin/sh символьная ссылка на dash вместо zsh:

    cd /bin
    rm sh
    ln -s dash sh
    
  7. Если Вам нравится, можно проверить что sh символьная ссылка была правильно перенастроена путем выполнения ls -l sh, который должен показать что-то как:

    lrwxrwxrwx 1 root root 4 Oct  2 23:13 sh -> dash
    

    (sh -> dash ключевая роль.)

  8. Перезапуск с reboot -f. Ваша система должна быть зафиксирована.

Альтернативный путь: режим Recovery мог бы работать. Возможно.

Для режима восстановления может быть возможно функционировать без sh. Я не заставил это работать сам и на самом деле не знаю, делает ли это когда-нибудь - я заставил Ubuntu обычно загружаться (без GUI) с sh как поврежденная символьная ссылка, но это прекратило работать на меня, прежде чем я попробовал режим восстановления (который не работал на меня ни один).

Для более надежного пути возвратитесь до init=/bin/dash Должен Работать. (Обратите внимание, что режим восстановления нисколько не ненадежен в целом, он просто, как могут ожидать, не будет работать без /bin/sh.)

Если Вы хотите делать попытку режима восстановления:

  1. Для перехода к режиму восстановления удержите Сдвиг во время начальной загрузки для получения меню GRUB.

  2. Выберите Расширенные настройки для Ubuntu.

  3. В меню доступных ядер нажмите для перемещения выбора в запись, заканчивающуюся в (recovery mode), и нажмите Enter.

    enter image description here

  4. Если это не работает, можно перезагрузить с "волшебным SysRq", как детализировано выше. Если это действительно будет работать, то Вы будете видеть Меню восстановления.

  5. В Меню восстановления нажимайте неоднократно до

    root              Drop to root shell prompt
    

    выбран. Нажмите Enter.

    enter image description here

  6. Выполните шаги 5 и 6 (и дополнительный шаг 7, если Вам нравится) от init=/bin/dash Должен Работать метод выше.

  7. Выполненный reboot перезапускать.

    Вы могли, вероятно, работать exit, затем выберите Резюме. Но я предлагаю перезагрузить вместо этого, таким образом, система может загрузиться чисто с доступным и функционирующим sh от очень запускаются. (Если Вам удалось войти в режим восстановления с sh как поврежденная символьная ссылка, которая все еще не означает, все работало просто право по пути.)


Если Вы интересуетесь созданием zsh обеспечить sh (или для реального, или просто теоретически), продолжает читать.

Проблемы с shzsh Процедура Вы предпринятый

Как общая процедура, cd /bin; rm sh; ln -s /bin/zsh /bin/sh (как предписано в Вашем осуществлении лаборатории), плохой совет по крайней мере по двум причинам:

  1. /bin/zsh иногда не существует даже если zsh установлен. Это зависит от того, как это было установлено и что используется ОС. zsh большая, сложная оболочка, это очень часто не используется как /bin/sh и таким образом обычно не должно быть доступным в однопользовательском режиме или иначе перед отдельным /usr раздел мог бы быть смонтирован. Исполняемые файлы, не нужные в однопользовательском режиме, обычно располагаются в подкаталогах /usr.

    Ubuntu zsh действительно обеспечивает /bin/sh. Но в других системах это может быть /usr/bin/zsh или даже /usr/local/bin/sh (как в моей системе FreeBSD, где мне установили его через pkg).

  2. Мотивация позади этого осуществления, возможно, была должна укрепить систему против "Контузии" (или другие возможные ошибки парсинга, являющиеся результатом пути bash признает, что функции оболочки передали в переменных среды). Но это не широко соответствующий план действий с этой целью.

    Хотя много систем GNU/Linux, таких как Fedora, RHEL, и Slackware, имеют bash обеспечить /bin/sh, во многих других обеспечивает некоторая другая оболочка /bin/sh. Это включает Ubuntu, которая использует dash. Как zsh, dash не уязвимо для "Контузии" и не импортирует функциональные определения из переменных среды (или вообще) использующий механизм, таким образом, никакая подобная ошибка, вероятно, не будет влиять на него.

Таким образом в зависимости от контекста, это осуществление, поскольку это было представлено Вам, возможно, было испорчено. Вы могли бы хотеть обсудить вопрос со своим преподавателем. Возможно, программа или путь, которым это передается, могла быть улучшена.

Завися (еще в большей степени) от контекста, эти соображения могут также быть поводами для беспокойства:

  1. Часто, sh символьная ссылка, жесткая ссылка или копия другой оболочки, которая установлена. Но в некоторых системах, особенно некоторые подобные Unix системы, которые не являются системами GNU/Linux, sh мог бы быть отдельный исполняемый файл от чего-либо еще. Кроме тех случаев, когда это, как известно, не имеет место, это - хорошая идея проверить прежде rmлуг это! mvлуг мог бы быть более соответствующим в этом случае.

  2. Упражнения, которые изменяют конфигурацию системы, конкретную те, которые требуют, чтобы рабочие команды как корень выполнили необычные действия, не должны обычно выполняться на производственных машинах. Экспериментирование и исследование и практически необходимы и внутренне ценны. Но когда они могут включить повреждающиеся вещи, они лучше всего выполняются на установках, длительное функционирование которых не важно для важной работы, которая должна быть сделана.

    Другими словами, хорошо проверить вещи прежде, чем развернуть их "для реального". (Виртуальные машины часто хороши для этого.)

zsh Ubuntu Install zshдействительно предоставляет копию shell3 в /bin а также /usr/bin. Но по умолчанию в Ubuntu, zsh не установлен вообще.

Символьные ссылки не требуют, чтобы их цели существовали:

ek@Ilex:~$ rm foo
rm: cannot remove ‘foo’: No such file or directory
ek@Ilex:~$ ln -s foo bar
ek@Ilex:~$ ls -l foo bar
ls: cannot access foo: No such file or directory
lrwxrwxrwx 1 ek ek 3 Oct  2 20:25 bar -> foo
ek@Ilex:~$ file bar
bar: broken symbolic link to `foo'

С тех пор /bin/sh интерпретатор для многих важных сценариев, используемых, чтобы загрузить систему и выполнить другие задачи, это должно существовать. При создании этого неработающая ссылка представит системное нефункционирование Ubuntu.

Получение zsh Обеспечить /bin/sh

Ubuntu разработана для использования dash для sh, и не разрабатывается или тестируется с zsh как sh в памяти. Не делайте попытку этого в системе, в которой Вы нуждаетесь для критических задач. Это строго для образования/забавы и должно быть сделано в некритической виртуальной машине или другой некритической системе 2

  1. Установка zshInstall zsh; по умолчанию в Ubuntu, это не установлено.

    sudo apt-get update
    sudo apt-get install zsh
    
  2. Точка sh в zsh вместо dash путем выполнения cd /bin; rm sh; ln -s /bin/zsh /bin/sh (когда Вы сделали).

  3. Проверить sh хорошая ссылка на zsh путем выполнения file sh (или если Вы больше не находитесь в /bin, использовать file /bin/sh).

    Необходимо видеть sh: symbolic link to `zsh' (или /bin/sh: symbolic link to `zsh').

  4. Перезагрузка и видит, работает ли Ubuntu все еще.


Примечания

  1. И по-видимому также, по крайней мере иногда, от основанной на тексте виртуальной консоли, также, как объяснено в ответе Termhn. Это работало на меня одно из времен, я протестировал it2, но привел другое время к сбою, я протестировал его. И я знаю, что это не работало на Вас. (Напротив, живой метод CD очень надежен.)
  2. Тестирование на этот ответ было выполнено на 64-разрядном Помощнике Ubuntu 14.10 Единорогов Utopic (бета) система, работающая в виртуальной машине VirtualBox. (Не потому что существует что-либо о той конфигурации, что лучшие модели эта проблема, но просто потому что это было настольной системой Ubuntu, которую я имел под рукой для тестирования.), Что что-то работало на меня, не гарантирует, что это будет работать на Вас, даже на той же версии Ubuntu.
  3. На Ubuntu, /bin/zsh обычно символьная ссылка на /etc/alternatives/zsh который обычно является символьной ссылкой на /bin/zsh5 (который является фактическим исполняемым файлом Shell Z). Но начиная с обоих /bin и /etc расположены в корневой файловой системе даже когда /usr смонтирован по сети или иначе на отдельном объеме, это прекрасно.
2
ответ дан 2 December 2019 в 02:24

Другие вопросы по тегам:

Похожие вопросы: