Как восстановить систему после случайного удаления всех ядер?
Я пытался удалить старые ядра, но я, должно быть, удалил все ядра на своем ноутбуке Ubuntu 11.04. Есть ли способ исправить это через загрузочный USB-накопитель или смонтировать жесткий диск в другой системе?
5 ответов
Загрузитесь с live CD (или live USB), смонтируйте несколько систем, загрузитесь в него и установите ядро. После успешной установки ядра размонтируйте файловые системы.
- Открытый терминал
- Смонтируйте раздел Ubuntu:
sudo mount /dev/sdXY /mnt
Смонтируйте несколько специальных разделов:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
(необязательно) Когда вы подключены к сети, используйте DNS-серверы из вашей среды Live (в противном случае имена хостов не могут быть разрешены):
cp /etc/resolv.conf /mnt/etc/resolv.conf
- Вброс в
/mnt
:sudo chroot /mnt
- Установите ядро Linux:
apt-get install linux-image-generic
(sudo не требуется, так как вы root после chroot) После успешной установки ядра вытащите chroot и размонтируйте некоторые файловые системы:
exit sudo umount /mnt/sys sudo umount /mnt/proc sudo umount /mnt/dev sudo umount /mnt
- Перезагрузите и удалите CD или USB:
sudo reboot
Эта расширенная процедура учитывает большинство возможных осложнений, в том числе проблемы с подключением к Интернету в chroot
, не зная, какой пакет ядра установить (до Ubuntu 12.10 это не всегда будет linux-image-generic
), не зная с самого начала, какой раздел или какой физический диск содержит /
файловая система, и имея отдельный /boot
раздел.
Я не писал это со ссылкой на какие-либо другие процедуры здесь, хотя вы заметите некоторые сходства. Я основал это, свободно, на процедуре здесь (хотя эти инструкции для чего-то совершенно другого, я их сильно адаптировал, и копируются только некоторые команды, а не проза).
Вы удалили все пакеты ядра, и Ubuntu не может загрузиться без установленного ядра. Таким образом, решение заключается в загрузке с живого CD/DVD/USB, chroot
в установленную систему и установите в нее ядро.
Загрузитесь с живого CD / DVD-диска Ubuntu или USB-флешки.
Выберите Попробовать Ubuntu (не устанавливать Ubuntu).
Когда появится рабочий стол, убедитесь, что вы подключены к Интернету. Если нет, подключитесь к Интернету. Один из способов проверить, подключены ли вы к Интернету, - открыть веб-браузер. Вы даже можете следовать остальным инструкциям, разместив этот ответ Ask Ubuntu в своем веб-браузере, в системе live CD/DVD/USB. Я настоятельно рекомендую это сделать.
Откройте окно терминала с помощью Ctrl + Alt + T.
В окне терминала выполните эту команду, чтобы вывести список разделов:
sudo parted -l
Вы увидите что-то вроде этого (но это будет не совсем так):
Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 20.4GB 20.4GB primary ext4 boot 2 20.4GB 21.5GB 1072MB extended 5 20.4GB 21.5GB 1072MB logical linux-swap(v1) Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only. Error: Can't have a partition outside the disk!
Изучите полученный вывод, чтобы определить имя устройства раздела, содержащего
/
файловая система системы Ubuntu, которая установлена на жестком диске (который вы восстанавливаете).Если у вас есть только один
ext4
раздел, это один.Если у вас есть более одного
ext4
раздел, вероятно, первый. Однако, если первый очень маленький - меньше гигабайта - тогда это может быть отдельным/boot
раздел (помните, что тоже).Обратите внимание, что независимо от того,
boot
перечислен подFlags
имеет очень мало общего с тем, является ли раздел отдельным/boot
раздел. Моя система, чья информация указана выше, не имеет отдельной/boot
раздел.Имя устройства для раздела начинается с имени устройства для физического диска, указанного сразу после
Disk
во второй строке. Затем просто добавьте номер раздела в конце этого. Итак, имя устройства для раздела, который содержит мой/
файловая система/dev/sda1
, Вот две строки, где я нашел эту информацию:Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
Если у вас есть более одного физического диска, вы получите более одного списка, как показано выше. Но если у вас не установлена другая Unix-подобная система, вероятно, у вас будет только один диск, содержащий
ext4
разделы, по крайней мере, не создавая их намеренно на другом диске. Если у вас есть несколько дисков сext4
разделы, тоext4
раздел, содержащий ваши/
файловая система, вероятно, находится на диске, который также содержитlinux-swap
раздел.Возможно, что ваша система Ubuntu
/
Файловая система находится на разделе типа, отличного отext4
, Когда это происходит, это почти всегдаext3
и почти всегда на довольно старой системе. Это очень редко случается, если вы не намеренно настроили все таким образом.
Запомните имя устройства раздела, который содержал ваш
/
файловая система (или запишите ее). Если это отличается от/dev/sda1
, тогда ты заменишь/dev/sda1
с этим в шагах ниже.(Если бы выглядело так как у вас есть отдельный
/boot
раздел, запомните имя устройства для этого тоже.)Смонтировать
/
файловая система/mnt
и смонтировать его/dev
файловая система:sudo mount /dev/sda1 /mnt sudo mount --bind /dev /mnt/dev
Проверьте, не имеет ли поврежденная система Ubuntu, которую вы восстанавливаете, отдельный
/boot
перегородка, которая должна быть установлена отдельно. (Если вы уверены, что это не так, вы можете пропустить это.)Чтобы проверить, запустите:
ls /mnt/boot
Если есть выход (как
grub memtest86+.bin memtest86+_multiboot.bin
, но не обязательно именно так), то сломанная система/boot
находится на том же разделе, что и его/
и вам не нужно ничего монтировать, чтобы получить к нему доступ.Но если нет выхода, то вам придется смонтировать
/boot
файловая система:sudo mount BOOT-PARTITION /mnt/boot
замещать
BOOT-PARTITION
с именем устройства/boot
раздел (см. шаг 6 выше).chroot
в сломанную систему, смонтируйте оставшиеся важные виртуальные файловые системы и установите некоторые важные переменные среды:sudo chroot /mnt mount -t proc none /proc mount -t sysfs none /sys mount -t devpts none /dev/pts export HOME=/root export LC_ALL=C
Определите, работает ли доступ в Интернет изнутри
chroot
отping
Используя некоторый надежный хост, который, как известно, нормально реагирует на пинги:ping -c 5 www.google.com
Вы должны увидеть что-то вроде этого:
PING www.l.google.com (74.125.131.147) 56(84) bytes of data. 64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=1 ttl=44 time=61.3 ms 64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=2 ttl=44 time=62.3 ms 64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=3 ttl=44 time=61.8 ms 64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=4 ttl=44 time=63.8 ms 64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=5 ttl=44 time=66.6 ms --- www.l.google.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 61.367/63.212/66.608/1.897 ms
Если это выглядит в основном так, а число до
% packet loss
меньше 100, то подключение к интернету вchroot
работает:5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Это работает, так что вы можете пропустить шаг 11.
Если это выглядит в основном так, а число до
% packet loss
100, соединение требует устранения неполадок. Убедитесь, что соединение в системе Live CD (например, через веб-браузер, или запустив ту же команду в отдельной, неchroot
Терминал вкладка / окно) работает. Убедитесь, что вы вводите команду правильно. использованиеwww.google.com
если ты не былЕсли вывод не похож на выше, но вместо этого говорит
ping: unknown host www.google.com
то сеть еще не работает вchroot
,
Настройте сеть в
chroot
, Пропустите этот шаг, если вы не получилиunknown host
ошибка в шаге 10 выше.Чтобы настроить сеть, сделайте резервную копию сломанной системы
hosts
файл и скопировать в систему Live CDhosts
а такжеresolv.conf
файлы. (Вам не нужно резервировать версию сломанной системыresolv.conf
, поскольку этот файл автоматически восстанавливается на лету.)Откройте новую вкладку "Терминал" (Ctrl + Shift + T) или, если хотите, новое окно "Терминал" (Ctrl + Shift + N или просто Ctrl + Alt + T). Запустите эти команды в нем:
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old sudo cp /etc/hosts /mnt/etc/hosts sudo cp /etc/resolv.conf /mnt/etc/resolv.conf exit
(The
exit
Команда в конце закрывает новую вкладку / окно.)Повторите шаг 10 выше, чтобы убедиться, что доступ к Интернету теперь работает из
chroot
, Должно.Выясните, какой пакет ядра должен быть установлен. Обычно это будет
linux-image-generic
, Но не всегда.Если вы не уверены, какую установку установить, это будет зависеть отчасти от того, какую версию Ubuntu вы установили, а отчасти от другой информации. Если вы не уверены, какой выпуск Ubuntu вы установили, выясните, запустив эту команду (в
chroot
, а не в отдельном окне / вкладке терминала):lsb_release -r
В Ubuntu 12.10 (следующий выпуск Ubuntu, который в настоящее время находится в разработке), он всегда будет
linux-image-generic
, (Смотрите это, это и это.)На Ubuntu 12.04 LTS вероятные возможности
linux-image-generic
а такжеlinux-image-generic-pae
, (В отличие от предыдущих версий, 12.04 больше не имеет отдельных ядер сервера и рабочего стола.)Если установленная система Ubuntu (которую вы исправляете) является 64-битной версией, используйте
linux-image-generic
, (linux-image-generic-pae
относится только к 32-битным системам.)Возможно установить 32-битную систему Ubuntu на 32-битном или 64-битном компьютере. Кроме того, вы можете использовать 32-битный или 64-битный live CD для исправления 32-битной установленной системы. Поэтому, если вы не знаете, является ли установленная система Ubuntu 32-разрядной или 64-разрядной, проверьте, выполнив эту команду (в
chroot
, а не в отдельном окне / вкладке терминала):dpkg-architecture -qDEB_HOST_ARCH_BITS
Выход будет либо
32
или же64
,(Обратите внимание, что
uname -m
неверный способ найти эту информацию, потому что даже при запуске вchroot
, которая расскажет вам архитектуру работающего ядра, которое является ядром системы live CD, а не ядром установленной (сломанной) системы.)Если установленная система Ubuntu (которую вы исправляете) является 32-битной версией, лучшее ядро для использования будет зависеть от того, сколько у вас оперативной памяти. Рекомендую:
linux-image-generic
если у вас менее 3 ГБ оперативной памятиlinux-image-generic-pae
если у вас 3 ГБ ОЗУ или больше.
(Именно так установщик Ubuntu выбирает тот, который нужно установить, с тех пор, как установщик получил возможность устанавливать ядра PAE. См. Решение этой ошибки. Если вы хотите узнать, что такое PAE, см. Эту статью в Википедии. Если вы хотите узнайте о PAE в Ubuntu, см. эту вики-страницу Ubuntu.)
Если вы не знаете, сколько у вас ОЗУ, выполните эту команду, чтобы узнать:
grep MemTotal /proc/meminfo
Это указано в килобайтах. Чтобы преобразовать в гигабайты, разделите на 1 048 576 (1024 2).
- 3 гигабайта = 3 145 728 кБ
В выпусках Ubuntu до 12.04 вероятные возможности
linux-image-generic
,linux-image-generic-pae
, а такжеlinux-image-server
,- Если вы используете систему Ubuntu Server, используйте
linux-image-server
, - В противном случае следуйте приведенным выше советам для систем 12.04.
- Если вы используете систему Ubuntu Server, используйте
Это момент, которого вы так долго ждали! Установите ядро в сломанной системе.
(Как и раньше, за исключением случаев, когда явно указано иное, эти команды выполняются в
chroot
, а не в отдельном окне терминала / таб.)apt-get update apt-get -y install linux-image-generic
замещать
linux-image-generic
с любым другим пакетом ядра, который вы решили установить на шаге 12 выше, если он отличается.Если вам пришлось выполнить шаг 11, чтобы настроить сеть в
chroot
, восстановить староеhosts
файл. Если вы пропустили шаг 11, пропустите этот шаг тоже.Чтобы восстановить его, запустите эту команду:
cp /etc/hosts.old /etc/hosts
Размонтировать файловые системы,
exit
выход изchroot
:umount /proc || umount -lf /proc umount /sys /dev/pts exit sudo umount /mnt/dev /mnt
Выключите систему live CD/DVD/USB, извлеките live CD / DVD или флэш-накопитель USB. Загрузите систему, установленную на жестком диске, который вы только что отремонтировали. Вы установили в него пакет ядра (и в процессе установки его ядро будет добавлено обратно в загрузочное меню GRUB2). Если все работает правильно, ваша система должна загрузиться без проблем. (Думаю, на этот раз загрузка может занять немного больше времени, чем обычно.)
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не проверял вышеописанную процедуру на каждой возможной системе Ubuntu, поэтому возможно, что в ней есть ошибка, которую я не идентифицировал.
В будущем я рекомендую всегда пытаться сохранить два установленных ядра. Хорошо иметь два на случай, если один из них перестанет работать по любой причине (вы можете выбрать другой в меню загрузки GRUB2). Кроме того, если вы намереваетесь сохранить два ядра и случайно удалили еще одно ядро и перезагрузиться, у вас все еще остается одно для загрузки.
Я просто хотел добавить свой опыт, который я прошел сегодня в повышении до Вилли. Я немного прибрался, и я обнаружил, что у меня только один тест. Google привел меня к пониманию, что я удалил ядра. У меня было одно ограничение - медленная сеть, поэтому загрузка полного ISO не была вариантом. Поэтому я использовал Ubuntu Minimal CD (только 40 МБ) и загрузился на нем. После определения аппаратной опции (которая помогла мне подключиться к беспроводной сети) я перешел к опции оболочки. Я следовал инструкциям @Lekensteyn, и мне это удалось. Несколько вещей, хотя: вы должны скопировать resolv.conf
перед переходом к chroot, иначе ваш DNS будет испорчен, и, поскольку вошедший в систему пользователь не имеет root, sudo нигде не нужен.
Я знаю его старый, но я думал, что добавление этого ответа добавит ценность тем, кто столкнется с проблемой.
Когда я удалил свое ядро, я нашел это решение на форумах Ubuntu. Я следил за каждым шагом, и система была восстановлена. Надеюсь, это поможет вам.
Chroot может работать, chroot означает, что при запуске системы вы меняете корневую файловую систему. Например, вы начали с живого CD, но изменили корень "/" на тот, где установлена ваша Ubuntu.
Допустим, ваша Ubuntu установлена в /dev/sda2, тогда вы можете попробовать следующие команды:
Код:
sudo mount /dev/sda2 /mnt
sudo cp /etc/resolv.conf /mnt/etc/
sudo cp /etc/hosts /mnt/etc/
sudo mount --bind /dev/ /mnt/dev
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
теперь вы root "/" на /dev/sda2, попробуйте установить ядро
apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub
Я должен был сделать небольшую догадку здесь, так как я никогда не должен был делать это раньше, но это должно быть об этом. Не знаю, если вы получаете предупреждение об ошибке fstab (например, не могу найти root).
Теперь вам нужно почистить некоторые вещи и размонтировать смонтированные разделы: Код:
rm /etc/resolv.conf
rm /etc/hosts
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
umount /proc # if this doesn't work try umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount /mnt
И вы можете перезагрузиться, чтобы увидеть, сработало ли это.
URL для ветки: http://art.ubuntuforums.org/showthread.php?t=1688928
После того, как я вчера удалил старые ядра из Trusty14.04 (FTR: я не удалил два самых последних!), Моя система больше не загружалась. GRUB показал
Error: File not found
Error: You need to load the kernel first
Понятия не имею почему.
Затем я следовал прекрасным инструкциям Элии Кагана, чтобы установить linux-image-generic
с живого CD. Было установлено 150 МБ нового ядра, но, к сожалению, это не решило проблему.
К счастью, я нашел эту страницу. Boot-Repair
инструмент понял все правильно, моя система снова работает.