Я намагався видалити старі ядра, але я повинен був видалити всі ядра з мого ноутбука Ubuntu 11.04. Чи є можливість це виправити за допомогою завантажувача USB або встановлення жорсткого диска на іншій системі?
Я намагався видалити старі ядра, але я повинен був видалити всі ядра з мого ноутбука Ubuntu 11.04. Чи є можливість це виправити за допомогою завантажувача USB або встановлення жорсткого диска на іншій системі?
Відповіді:
Завантажте на живий компакт-диск (або живий 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-сервери зі свого прямого середовища (інакше імена хостів, можливо, не можуть бути вирішені):
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(Судо не потрібно, оскільки ви 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 ).
Коли з'явиться робочий стіл, переконайтеся, що ви підключені до Інтернету. Якщо вас немає, підключіться до Інтернету. Один із способів дізнатися, чи підключено ви до Інтернету, - це відкрити веб-браузер. Ви навіть можете дотримуватися решти інструкцій, перенісши цю відповідь на запитання Ubuntu у своєму веб-переглядачі, в системі живих 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
надійного хоста, який, як відомо, нормально реагує на pings:
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, з'єднання потребує усунення несправностей. Переконайтесь, що з'єднання в режимі живого CD (наприклад, через веб-браузер або за допомогою тієї самої команди в окремій, не chroot
відредагованій вкладці / вікні терміналу) працює. Переконайтесь, що ви правильно ввели команду. Використовуйте, www.google.com
якщо ви ще не були.
Якщо вихід взагалі не схожий на вищезазначений, але натомість каже ping: unknown host www.google.com
, то мережа ще не працює в chroot
.
Налаштування мереж у chroot
. Пропустіть цей крок, якщо не unknown host
сталася помилка на кроці 10 вище.
Щоб налаштувати мережу, створіть резервну копію розбитого hosts
файлу системи та скопіюйте файли hosts
та resolv.conf
файли живих 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-бітному або 64-бітному комп'ютері встановлена 32-розрядна система Ubuntu. Крім того, ви можете використовувати 32-бітний або 64-бітний живий компакт-диск для виправлення 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
Вимкніть живу систему CD / DVD / USB, видаливши живий CD / DVD або флешку. Завантажтесь у систему, встановлену на жорсткому диску, яку ви тільки що відремонтували. Ви встановили пакет ядра в ньому (і як частина установки, ядро, яке він надає, буде додано до меню завантаження GRUB2). Якщо все працювало правильно, ваша система повинна без проблем завантажуватися. (Я думаю, що цілком можливо, що цього разу завантаження займе трохи більше часу, ніж зазвичай.)
ВИСНОВОК: Я не перевіряв вищевказану процедуру на всіх можливих системах Ubuntu, тому, можливо, в ній є помилка, яку я не визначив.
Надалі я рекомендую завжди намагатися тримати два ядра. Добре мати два, якщо одна з них перестане працювати з будь-якої причини (ви можете вибрати іншу в меню завантаження GRUB2). Крім того, якщо ви маєте намір зберегти два ядра, і ви випадково видалили ще одне, ніж ви мали намір і перезавантажити, у вас все одно залишилося одне для завантаження.
/etc/resolv.conf
сьогодні управляється resolvconf
, він автоматично генерується при використанні NetworkManager і може бути безпечно видалений за допомогою, rm /etc/resolv.conf
як ви дізналися.
Коли я видалив своє ядро, я знайшов це рішення на форумах 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).
Тепер вам потрібно очистити деякі речі та відключити змонтовані розділи: Code:
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
для підключення до Інтернету, але зазвичай не, і якщо ви робите, ви повинні поставити вихідне стан . На встановленій системі (а не на живому компакт-диску, який завантажується, потім розпаковується файлова система 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
з живого компакт-диска. Він встановив 150 Мб нового ядра, але, на жаль, це не вирішило проблему.
На щастя, я знайшов цю сторінку . Boot-Repair
Інструмент отримав це право, моя система працює знову.
Мені просто хотілося додати свій досвід, який я пройшов сьогодні з модернізації до Віллі. Я трохи прибрав, і я опинився лише на пам'ять. google привів мене до розуміння того, що я видалив ядра. Одне обмеження у мене - це повільна мережа, тому завантаження повного ISO не було можливим. Тому я використав компакт-диск Ubuntu Minimal (лише 40 МБ) і завантажився на ньому. Після виявлення апаратної опції (яка допомогла мені підключитися до бездротового зв'язку) я перейшов у варіант оболонки. Я дотримувався інструкцій @Lekensteyn і мені це вдалося. Однак декілька речей: вам доведеться копіювати resolv.conf
перед chroot або інакше ваш DNS буде загвинтований, і оскільки користувач, який увійшов у систему, не має корінця, нікуди не потрібно судо.
Я знаю його давнє, але я думав, що додавання цієї відповіді додасть значення тим, хто зіткнеться з проблемою.