Я пытался удалить старые ядра, но я, должно быть, удалил все ядра на моем ноутбуке Ubuntu 11.04. Есть ли способ исправить это через USB-загрузку или жесткий диск на другой системе?
Я пытался удалить старые ядра, но я, должно быть, удалил все ядра на моем ноутбуке Ubuntu 11.04. Есть ли способ исправить это через USB-загрузку или жесткий диск на другой системе?
Загрузите Live CD (или живой USB), подключите к нему некоторые системы, chroot и установите ядро. После успешной установки ядра отключите файловые системы.
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
Эта расширенная процедура учитывает большинство осложнений, которые могут возникнуть, включая проблемы с подключением к Интернету в chroot
, не зная, какой пакет ядра установить (до Ubuntu 12.10, он не будет всегда быть linux-image-generic
), не зная с самого начала, какой раздел или даже какой физический диск содержит файловую систему /
и имеет отдельный раздел /boot
. р>
Я не написал это со ссылкой на любую из других процедур здесь, хотя вы заметите некоторые сходства. Я сделал это свободно, на здесь) (хотя эти инструкции для чего-то совсем другого, я их адаптировал широко , и копируются только некоторые команды, а не проза).
Вы удалили все пакеты ядра, и Ubuntu не может загружаться без установленного ядра. Таким образом, решение состоит в загрузке с Live CD / DVD / USB, chroot
в установленную систему и установке ядро в нем.
Загрузка с живого CD / DVD-диска Ubuntu или Live 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!
Изучите полученный результат, чтобы определить имя устройства раздела, содержащего % файловой системы co_de% . Ubuntu, установленный на жестком диске (который вы ремонтируете).
Если у вас есть только один раздел /
, это тот.
Если у вас более одного раздела ext4
, это, вероятно, первый. Однако, если первый из них очень мал - меньше, чем гигабайт, то это может быть отдельный раздел ext4
(запомните это тоже).
Обратите внимание, что если /boot
указано в boot
, имеет очень мало общего с тем, является ли раздел отдельным разделом Flags
. Моя система, информация которой указана выше, имеет не отдельный раздел /boot
.
Имя устройства для раздела начинается с имени устройства для физического диска, указанного сразу после /boot
во второй строке. Затем просто добавьте номер раздела в конец этого. Итак, имя устройства для раздела, содержащего файловую систему my Disk
, - /
. Вот две строки, где я нашел эту информацию:
Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
Если у вас несколько физических дисков, вы получите более одного списка, как показано выше. Но если у вас не установлена другая Unix-подобная система, у вас, вероятно, будет только один диск, содержащий /dev/sda1
разделов, по крайней мере, не создав их намеренно на другом диске. Если у вас несколько дисков с ext4
разделов, то раздел ext4
, содержащий файловую систему ext4
, вероятно, находится на диске, в котором также содержит раздел /
.
Возможно , что ваша файловая система linux-swap
системы Ubuntu находится в разделе типа, отличном от /
. Когда это происходит, это почти всегда ext4
и почти всегда на довольно старой системе. Это очень редко, потому что это так, если вы не преднамеренно сами так не настроили себя.
Помните имя устройства раздела, в котором содержится ваша файловая система ext3
(или запишите ее). Если он отличается от /
, вы замените /dev/sda1
на следующие шаги.
(Если было похоже, что у вас есть отдельный раздел /dev/sda1
, помните также имя устройства).
Установите файловую систему /boot
на /
и смонтируйте файловую систему /mnt
:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
Убедитесь, что поврежденная система Ubuntu, которую вы ремонтируете, имеет отдельный раздел /dev
, который необходимо установить отдельно. (Если вы sure нет, вы можете пропустить это.)
Чтобы проверить, запустите:
ls /mnt/boot
Если есть выход (например, /boot
, но не обязательно именно это), то grub memtest86+.bin memtest86+_multiboot.bin
сломанной системы находится в том же разделе, что и его /boot
, и вам не нужно ничего монтировать для доступа к нему.Р>
Но если выход отсутствует, вам нужно смонтировать файловую систему /
:
sudo mount BOOT-PARTITION /mnt/boot
Замените /boot
на имя устройства раздела BOOT-PARTITION
(см. шаг 6 выше).
/boot
в сломанную систему, установите оставшуюся важную виртуальную файловых систем и установите некоторые важные переменные среды:
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
на chroot
некоторый надежный хост, который, как известно, обычно отвечает на пинги:
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
Если это выглядит в основном так, и число до ping
меньше 100, то работает интернет-соединение в % packet loss
:
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Он работает, поэтому вы можете пропустить шаг 11 .
Если это выглядит в основном так, и число до chroot
равно 100, для соединения требуется устранение неполадок. Убедитесь, что соединение с системой Live CD (например, через веб-браузер или с помощью одной и той же команды в отдельной вкладке / окне терминала, не относящейся к % packet loss
ed). Убедитесь, что вы вводите команду правильно. Используйте chroot
, если вы этого не сделали.
Если вывод не похож на выше, но вместо этого говорит www.google.com
, то в ping: unknown host www.google.com
сеть пока не работает.
Настройте сеть в chroot
. Пропустите этот шаг, если вы не получили ошибку chroot
на шаге 10 выше.
Чтобы настроить сеть, создайте резервную копию файла unknown host
сломанной системы и скопируйте файлы hosts
и hosts
в live CD. (Вам не нужно резервировать версию сломанной системы resolv.conf
, так как этот файл автоматически восстанавливается «на лету».)
Откройте вкладку новой вкладки ( Ctrl + Shift + T )), или, если хотите, новое окно терминала ( Ctrl + Shift + N ) или просто Ctrl + < KBD> 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
(Команда resolv.conf
в конце закрывает новую вкладку / окно.)
Повторите шаг 10 выше, чтобы убедиться, что доступ к Интернету теперь работает в пределах exit
. Это должно быть.
Определите, какой пакет ядра должен быть установлен. Обычно это будет chroot
. Но не всегда.
Если вы не уверены в том, что устанавливать, это частично зависит от того, какую версию Ubuntu вы установили, а частично иную информацию. Если вы не знаете, какую версию Ubuntu вы установили, узнайте, выполнив эту команду (в linux-image-generic
, not в отдельном окне терминала / вкладке):
lsb_release -r
В Ubuntu 12.10 (следующий выпуск Ubuntu, находящийся в разработке), always будет chroot
. (См. это , this и это .) р>
В Ubuntu 12.04 LTS вероятными возможностями являются linux-image-generic
и linux-image-generic
. (В отличие от предыдущих версий, 12.04 больше не имеют отдельного ядра сервера и настольного компьютера.)
Если установленная система Ubuntu (которую вы исправляете) является 64-разрядной версией, используйте linux-image-generic-pae
. ( linux-image-generic
применяется только к 32-битным системам.)
Возможно, 32-разрядная система Ubuntu установлена на 32-разрядном или 64-разрядном компьютере. Кроме того, вы можете использовать 32-битный или 64-битный Live CD для установки 32-битной установленной системы. Поэтому, если вы не знаете, установлена ли система установленной системы Ubuntu 32-разрядной или 64-разрядной, проверьте, выполнив эту команду (в linux-image-generic-pae
, not в отдельное окно терминала / вкладка):
dpkg-architecture -qDEB_HOST_ARCH_BITS
Выход будет либо chroot
, либо 32
.
(Обратите внимание, что 64
не - это правильный способ найти эту информацию, потому что даже при запуске в uname -m
, который расскажет вам об архитектуре запущенное ядро , которое является ядром системы Live CD, а не установленным (сломанным) ядром системы.)
Если установленная система Ubuntu (которую вы исправляете) представляет собой 32-разрядную версию, лучшее используемое ядро будет зависеть от того, сколько у вас RAM. Я рекомендую:
chroot
, если у вас меньше 3 ГБ ОЗУ. linux-image-generic
, если у вас 3 ГБ ОЗУ или более. (Вот как установщик Ubuntu выбирает, какой из них устанавливать, с тех пор, как установщик получил возможность устанавливать ядра PAE. См. , чтобы эта ошибка . Если вы хотите узнайте, что такое PAE, см. эту статью в Википедии .Если вы хотите узнать о PAE в Ubuntu, см. эту страницу Wbuntu ).
Если вы не знаете, сколько у вас RAM, запустите эту команду, чтобы узнать:
grep MemTotal /proc/meminfo
Это указано в килобайтах . Чтобы преобразовать в гигабайты , разделите на 1 048 576 (1024 2 ).
В выпуске Ubuntu до 12.04 вероятными возможностями являются linux-image-generic-pae
, linux-image-generic
и linux-image-generic-pae
.
linux-image-server
. Это тот момент, который вы ждали! Установите ядро в сломанную систему.
(Как и раньше, кроме случаев, когда явно указано иначе, эти команды выполняются в linux-image-server
, а не в отдельном окне терминала / вкладке.)
apt-get update
apt-get -y install linux-image-generic
Замените chroot
на любой другой пакет ядра, который вы решили установить на шаге 12 выше, если он отличается.
Если вам нужно было выполнить шаг 11 для настройки сети в linux-image-generic
, восстановите старый файл chroot
. Если вы пропустили шаг 11, пропустите этот шаг тоже.
Чтобы восстановить его, запустите эту команду:
cp /etc/hosts.old /etc/hosts
Отключите файловые системы, hosts
из exit
:
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, поэтому возможно, что в ней есть ошибка, которую я не идентифицировал. Если у вас возникли проблемы, прокомментируйте.
В будущем я рекомендую всегда пытаться сохранить ядра two . Хорошо иметь два варианта, если один из них перестанет работать по какой-либо причине (вы можете выбрать другую в меню загрузки GRUB2). Кроме того, если вы намерены хранить ядра two , и вы случайно удалили еще одно, чем вы хотели и перезагрузились, у вас все еще остается один для загрузки.
Когда я удалил свое ядро, я нашел это решение на форумах Ubuntu. Я следовал за каждым шагом, и система была восстановлена. Надеюсь, это поможет вам.
Chroot может работать, chroot означает, что при запуске системы вы меняете корневую файловую систему. Например, вы начали с живого компакт-диска, но вы изменили корень «/» на место установки вашего 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-адрес для потока: Ссылка
После того как я удалил старые ядра из Trusty14.04 вчера (FTR: я сделал not удалить два последних из них!), моя система больше не загружалась. GRUB показал
Error: File not found
Error: You need to load the kernel first
Не знаю, почему.
Затем я следил за отличными инструкциями Элиа Кагана , чтобы установить linux-image-generic
с живого компакт-диска. Он установил 150 МБ нового ядра, но, к сожалению, это не решило проблему.
К счастью, я нашел эту страницу . Инструмент Boot-Repair
получил это правильно, моя система снова запущена.
Я просто хотел добавить свой опыт, который я прошел сегодня, при обновлении до Вилли. Я немного почистил, и я нашел себя только с мемуатом. Google заставил меня понять, что я удалил ядра. Одно ограничение, которое у меня было, - медленная сеть, поэтому загрузка полного ISO не была опцией. Поэтому я использовал минимальный CD Ubuntu (только 40 Мбайт) и загрузился на нем. После обнаружения опции аппаратного обеспечения (которая помогла мне подключиться к беспроводной сети) я перешел в оболочку. Я следовал инструкциям @Lekensteyn, и мне это удалось. несколько вещей, хотя: вам нужно скопировать resolv.conf
перед тем, как идти в chroot, или же ваш DNS будет завинчен, а так как зарегистрированный пользователь root не нуждается в sudo в любом месте. Р>
Я знаю его старый, но я думал, что добавление этого ответа добавит ценность тем, с которыми столкнутся проблемы.