Я пытался удалить старые ядра, но я, должно быть, удалил все ядра на своем ноутбуке Ubuntu 11.04. Есть ли способ исправить это через загрузочный USB-накопитель или смонтировать жесткий диск в другой системе?
Я пытался удалить старые ядра, но я, должно быть, удалил все ядра на своем ноутбуке Ubuntu 11.04. Есть ли способ исправить это через загрузочный USB-накопитель или смонтировать жесткий диск в другой системе?
Ответы:
Загрузитесь с live CD (или live USB), смонтируйте несколько систем, загрузитесь в него и установите ядро. После успешной установки ядра размонтируйте файловые системы.
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
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
sudo reboot
/mnt
. Ubuntu обычно заботится о размонтировании / синхронизации файловых систем, но для меня это выглядит чище.
/dev/mdxxx
диск - предполагая, что это mdadm.
/etc/resolv.conf
(удалите его, если это символическая ссылка) и вставьте что-то вроде nameserver 8.8.8.8
этого (публичный DNS-сервер Google). Замените его при необходимости.
cp /etc/resolv.conf /mnt/etc/resolv.conf
прежде чем переходить к chroot. В любом случае, это сработало для меня
Эта расширена процедура учитывает большинство осложнений , которые могут возникнуть, в том числе проблем с подключением к Интернету в 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
ING некоторые надежного хозяина , который , как известно, обычно отвечают на пинги:
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
файла сломанной системы и скопируйте систему hosts
и resolv.conf
файлы live CD . (Вам не нужно создавать резервную копию сломанной версии системы 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
(Команда 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 ).
В Ubuntu выпускает прежде , чем 12.04, вероятно , возможности linux-image-generic
, linux-image-generic-pae
и linux-image-server
.
linux-image-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). Кроме того, если вы намереваетесь сохранить два ядра и случайно удалили еще одно ядро и перезагрузиться, у вас все равно остается одно для загрузки.
/etc/resolv.conf
настоящее время управляется resolvconf
, он будет автоматически генерироваться при использовании NetworkManager и может быть безопасно удален с помощью, rm /etc/resolv.conf
как вы узнали.
Когда я удалил свое ядро, я нашел это решение на форумах 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
/etc/hosts
и удалить /sbin/initctl
? Это там по причине.
/sbin/initctl
или dbus-uuidgen
или dpkg-divert
. Вы , возможно , потребуется заменить /etc/hosts
для подключения к Интернету, но обычно не, и если вы делаете, вы должны поставить исходное состояние . В установленной системе (а не на live CD, который загружается, а затем распаковывает файловую систему squashfs), вам не нужно запускаться update-initramfs
или даже update-grub
после установки ядра.
linux-image-2.6.32-26-generic
большинству людей не удастся установить ядро.
После того, как я вчера удалил старые ядра из Trusty14.04 (FTR: я не удалил два самых последних!), Моя система больше не загружалась. GRUB показал
Error: File not found
Error: You need to load the kernel first
Понятия не имею почему.
Затем я последовал прекрасным инструкциям Элии Каган по установке linux-image-generic
с live CD. Было установлено 150 МБ нового ядра, но, к сожалению, это не решило проблему.
К счастью, я нашел эту страницу . Boot-Repair
Инструмент получил это право, моя система работает снова.
Я просто хотел добавить свой опыт, который я прошел сегодня в повышении до Вилли. Я немного прибрался, и я обнаружил, что у меня только один тест. Google привел меня к пониманию, что я удалил ядра. У меня было одно ограничение - медленная сеть, поэтому загрузка полного ISO не была вариантом. Поэтому я использовал Ubuntu Minimal CD (только 40 МБ) и загрузился на нем. После определения аппаратной опции (которая помогла мне подключиться к беспроводной сети) я перешел к опции оболочки. Я следовал инструкциям @Lekensteyn, и мне это удалось. Тем не менее, кое-что: вы должны скопировать, resolv.conf
прежде чем переходить в chroot, иначе ваш DNS будет испорчен, и, поскольку вошедший в систему пользователь не нуждается ни в каком sudo, ни root.
Я знаю его старый, но я думал, что добавление этого ответа добавит ценность тем, кто столкнется с проблемой.