Saya mencoba menghapus kernel lama, tetapi saya harus menghapus semua kernel di laptop Ubuntu 11.04 saya. Apakah ada cara untuk memperbaikinya melalui boot USB atau memasang hard drive di sistem lain?
Saya mencoba menghapus kernel lama, tetapi saya harus menghapus semua kernel di laptop Ubuntu 11.04 saya. Apakah ada cara untuk memperbaikinya melalui boot USB atau memasang hard drive di sistem lain?
Jawaban:
Boot ke live CD (atau live USB), pasang beberapa sistem, chroot ke dalamnya dan instal kernel. Setelah instalasi kernel berhasil, unmount sistem file.
sudo mount /dev/sdXY /mnt
Pasang beberapa partisi khusus:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
(opsional) Saat Anda terhubung ke jaringan, gunakan server DNS dari lingkungan Live Anda (jika tidak nama host mungkin tidak dapat diselesaikan):
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(tidak perlu sudo karena Anda root setelah chroot)Setelah instalasi kernel berhasil, keluar dari chroot dan unmount beberapa sistem file:
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
/mnt
. Ubuntu biasanya menangani unmount / menyinkronkan sistem file, tetapi ini terlihat lebih bersih bagi saya.
/dev/mdxxx
drive - dengan asumsi itu mdadm.
/etc/resolv.conf
(hapus jika itu adalah symlink) dan masukkan sesuatu seperti nameserver 8.8.8.8
itu (server DNS publik Google). Ganti jika perlu.
cp /etc/resolv.conf /mnt/etc/resolv.conf
sebelum masuk ke chroot. Itu berhasil bagi saya
Prosedur yang diperluas ini mencakup sebagian besar komplikasi yang dapat terjadi, termasuk masalah koneksi ke Internet di chroot
, tidak mengetahui paket kernel mana yang harus diinstal (sebelum Ubuntu 12.10, tidak akan selalu demikian linux-image-generic
), tidak mengetahui pada awalnya partisi mana atau bahkan drive fisik mana yang berisi sistem /
file, dan memiliki /boot
partisi yang terpisah .
Saya belum menulis ini dengan mengacu pada salah satu prosedur lain di sini, meskipun Anda akan melihat beberapa kesamaan. Saya mendasarkannya, secara longgar, pada prosedur di sini (meskipun instruksi itu untuk sesuatu yang sangat berbeda, saya telah mengadaptasinya secara luas, dan hanya beberapa perintah, bukan prosa, yang disalin).
Anda menghapus semua paket kernel, dan Ubuntu tidak dapat boot tanpa kernel diinstal. Jadi solusinya adalah boot dari live CD / DVD / USB, chroot
ke sistem yang diinstal, dan instal kernel di dalamnya.
Boot dari live CD / DVD Ubuntu atau USB flash drive langsung.
Pilih Coba Ubuntu (bukan Instal Ubuntu ).
Saat desktop muncul, pastikan Anda terhubung ke Internet. Jika tidak, sambungkan ke Internet. Salah satu cara untuk melihat apakah Anda terhubung ke Internet adalah dengan membuka browser web. Anda bahkan dapat mengikuti petunjuk lainnya dengan membawa jawaban Tanya Ubuntu ini di browser web Anda, dalam sistem live CD / DVD / USB. Saya sangat merekomendasikan melakukan itu.
Buka jendela Terminal dengan Ctrl+ Alt+ T.
Di jendela Terminal, jalankan perintah ini untuk mendaftar partisi Anda:
sudo parted -l
Anda akan melihat sesuatu seperti ini (tetapi tidak akan persis seperti ini):
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!
Periksa output yang Anda dapatkan, untuk menentukan nama perangkat dari partisi yang berisi sistem /
file dari sistem Ubuntu yang diinstal pada hard drive (yang sedang Anda perbaiki).
Jika Anda hanya memiliki satu ext4
partisi, itu saja.
Jika Anda memiliki lebih dari satu ext4
partisi, itu mungkin yang pertama. Namun, jika yang pertama sangat kecil - kurang dari satu gigabyte - maka itu mungkin merupakan /boot
partisi yang terpisah (ingat itu juga).
Harap dicatat bahwa ada atau tidaknya boot
daftar di bawah Flags
ini tidak ada hubungannya dengan apakah suatu partisi adalah partisi yang terpisah atau tidak /boot
. Sistem saya, yang informasinya tercantum di atas, tidak memiliki /boot
partisi terpisah .
Nama perangkat untuk partisi dimulai dengan nama perangkat untuk drive fisik, dinyatakan segera setelah Disk
di baris kedua. Kemudian cukup tambahkan nomor partisi di akhir itu. Jadi, nama perangkat untuk partisi yang berisi sistem file saya /
adalah /dev/sda1
. Berikut adalah dua baris di mana saya menemukan informasi itu:
Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
Jika Anda memiliki lebih dari satu drive fisik, Anda akan mendapatkan lebih dari satu daftar seperti apa yang ditunjukkan di atas. Tetapi kecuali jika Anda memiliki sistem lain yang mirip Unix yang diinstal, Anda mungkin hanya akan memiliki satu drive yang berisi ext4
partisi, setidaknya tanpa membuatnya secara sengaja di drive lain. Jika Anda memiliki banyak drive dengan ext4
partisi, maka ext4
partisi yang berisi /
sistem file Anda mungkin ada di drive yang juga berisi linux-swap
partisi.
Ini mungkin bahwa sistem Ubuntu Anda /
filesystem pada partisi tipe lain dari ext4
. Ketika ini terjadi, hampir selalu ext3
, dan hampir selalu pada sistem yang cukup lama. Sangat jarang hal ini terjadi, kecuali jika Anda sendiri yang mengaturnya sendiri.
Ingat nama perangkat partisi yang berisi /
sistem file Anda (atau tuliskan). Jika berbeda dengan /dev/sda1
, maka Anda akan menggantinya /dev/sda1
dengan langkah-langkah di bawah ini.
(Jika sepertinya Anda memiliki /boot
partisi yang terpisah , ingat nama perangkat untuk itu juga.)
Pasang /
filesystem ke /mnt
, dan pasang /dev
filesystemnya:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
Periksa apakah sistem Ubuntu yang rusak yang Anda perbaiki memiliki /boot
partisi terpisah yang harus dipasang secara terpisah. (Jika Anda yakin tidak, Anda dapat melewati ini.)
Untuk memeriksa, jalankan:
ls /mnt/boot
Jika ada output (seperti grub memtest86+.bin memtest86+_multiboot.bin
, tetapi tidak harus persis seperti itu), maka sistem yang rusak /boot
ada di partisi yang sama /
dan Anda tidak perlu me-mount apa pun untuk mengaksesnya.
Tetapi jika tidak ada output, maka Anda harus me-mount sistem /boot
file:
sudo mount BOOT-PARTITION /mnt/boot
Ganti BOOT-PARTITION
dengan nama perangkat /boot
partisi (lihat langkah 6 di atas).
chroot
ke dalam sistem yang rusak, pasang sistem file virtual penting yang tersisa, dan tetapkan beberapa variabel lingkungan penting:
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
Tentukan apakah akses Internet berfungsi dari dalam dengan chroot
menggunakan ping
beberapa host andal yang dikenal merespons secara normal terhadap ping:
ping -c 5 www.google.com
Anda harus melihat sesuatu seperti ini:
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
Jika sebagian besar terlihat seperti itu, dan angka sebelumnya % packet loss
kurang dari 100, maka koneksi internet di dalamnya chroot
berfungsi:
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Ini berfungsi, sehingga Anda dapat melewati langkah 11 .
Jika sebagian besar terlihat seperti itu, dan nomor sebelumnya % packet loss
adalah 100, koneksi perlu pemecahan masalah. Pastikan koneksi pada sistem live CD (misalnya, melalui browser web, atau dengan menjalankan perintah yang sama di chroot
tab / jendela Terminal yang terpisah ) tidak berfungsi. Pastikan Anda mengetik perintah dengan benar. Gunakan www.google.com
jika Anda belum.
Jika output tidak terlihat seperti di atas sama sekali, tetapi sebaliknya mengatakan ping: unknown host www.google.com
, maka jaringan belum berfungsi di chroot
.
Siapkan jaringan di Internet chroot
. Lewati langkah ini kecuali Anda mendapat unknown host
kesalahan di langkah 10 di atas.
Untuk menyiapkan jaringan, cadangan sistem yang rusak ini hosts
file, dan menyalin CD sistem hidup ini hosts
dan resolv.conf
file. (Anda tidak perlu mencadangkan versi sistem yang rusak resolv.conf
, karena file itu secara otomatis dibuat ulang saat itu juga.)
Buka tab Terminal baru ( Ctrl+ Shift+ T) atau, jika Anda suka, jendela Terminal baru ( Ctrl+ Shift+ N, atau hanya Ctrl+ Alt+ T). Jalankan perintah ini di dalamnya:
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
Perintah di akhir menutup tab / jendela baru.)
Ulangi langkah 10 di atas untuk memastikan akses Internet berfungsi sekarang dari dalam chroot
. Itu harus.
Cari tahu paket kernel mana yang harus diinstal. Biasanya, ini akan terjadi linux-image-generic
. Tapi tidak selalu.
Jika Anda tidak yakin akan menginstal yang mana, sebagian tergantung pada rilis Ubuntu mana yang telah Anda instal, dan sebagian pada informasi lainnya. Jika Anda tidak yakin rilis Ubuntu mana yang telah Anda instal, cari tahu dengan menjalankan perintah ini (di chroot
, bukan di jendela / tab Terminal terpisah):
lsb_release -r
Di Ubuntu 12.10 (rilis Ubuntu berikutnya, saat ini dalam pengembangan), akan selalu seperti itu linux-image-generic
. (Lihat ini , ini , dan ini .)
Di Ubuntu 12,04 LTS, kemungkinan yang ada adalah linux-image-generic
dan linux-image-generic-pae
. (Tidak seperti versi sebelumnya, 12.04 tidak lagi memiliki kernel server dan desktop terpisah.)
Jika sistem Ubuntu yang diinstal (yang Anda perbaiki) adalah versi 64-bit, gunakan linux-image-generic
. ( linux-image-generic-pae
hanya berlaku untuk sistem 32-bit.)
Dimungkinkan untuk memiliki sistem Ubuntu 32-bit yang diinstal pada komputer 32-bit atau 64-bit. Selain itu, Anda mungkin menggunakan CD live 32-bit atau 64-bit untuk memperbaiki sistem yang diinstal 32-bit. Jadi, jika Anda tidak tahu apakah sistem Ubuntu yang diinstal adalah 32-bit atau 64-bit, periksa dengan menjalankan perintah ini (di chroot
, bukan di jendela / tab Terminal terpisah):
dpkg-architecture -qDEB_HOST_ARCH_BITS
Output akan berupa 32
atau 64
.
(Harap dicatat bahwa uname -m
ini bukan cara yang benar untuk menemukan informasi ini, karena bahkan ketika berjalan dalam chroot
, yang akan memberitahu Anda arsitektur kernel yang berjalan , yang merupakan kernel CD sistem hidup dan tidak terpasang (rusak) sistem kernel.)
Jika sistem Ubuntu yang terinstal (yang Anda perbaiki) adalah versi 32-bit, kernel terbaik untuk digunakan akan tergantung pada berapa banyak RAM yang Anda miliki. Saya merekomendasi:
linux-image-generic
jika Anda memiliki kurang dari 3 GB RAMlinux-image-generic-pae
jika Anda memiliki 3 GB RAM atau lebih.(Beginilah installer Ubuntu memilih yang mana yang akan disiapkan, sejak installer memperoleh kemampuan untuk menginstal kernel PAE. Lihat resolusi untuk bug ini . Jika Anda ingin mengetahui apa itu PAE, lihat artikel Wikipedia ini . Jika Anda ingin pelajari tentang PAE di Ubuntu, lihat halaman wiki Ubuntu ini .)
Jika Anda tidak tahu berapa banyak RAM yang Anda miliki, jalankan perintah ini untuk mencari tahu:
grep MemTotal /proc/meminfo
Itu tercantum dalam kilobyte . Untuk mengonversi ke gigabyte , bagilah dengan 1.048.576 (1024 2 ).
Pada rilis Ubuntu sebelumnya 12,04, kemungkinan besar kemungkinan linux-image-generic
, linux-image-generic-pae
, dan linux-image-server
.
linux-image-server
.Inilah saat yang telah Anda tunggu-tunggu! Instal kernel di sistem yang rusak.
(Seperti sebelumnya, kecuali jika dinyatakan sebaliknya, perintah ini dijalankan di chroot
, bukan di jendela / tab Terminal terpisah.)
apt-get update
apt-get -y install linux-image-generic
Ganti linux-image-generic
dengan paket kernel apa pun yang Anda putuskan untuk diinstal pada langkah 12 di atas, jika berbeda.
Jika Anda harus melakukan langkah 11 untuk mengatur jaringan di chroot
, kembalikan hosts
file yang lama . Jika Anda melewatkan langkah 11, lewati langkah ini juga.
Untuk mengembalikannya, jalankan perintah ini:
cp /etc/hosts.old /etc/hosts
Lepas sistem file, exit
dari chroot
:
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
Matikan live CD / DVD / sistem USB, lepaskan live CD / DVD atau USB flash drive. Boot ke sistem yang diinstal pada hard drive, yang baru saja Anda perbaiki. Anda telah menginstal paket kernel di dalamnya (dan sebagai bagian dari instalasi, kernel yang disediakannya akan ditambahkan kembali ke menu boot GRUB2). Jika semuanya berfungsi dengan benar, sistem Anda harus boot tanpa masalah. (Saya pikir ini mungkin membutuhkan waktu lebih lama untuk boot dari biasanya, kali ini.)
PENOLAKAN: Saya tidak menguji prosedur di atas pada setiap sistem Ubuntu yang memungkinkan , jadi ada kemungkinan ada kesalahan di dalamnya yang belum saya identifikasi.
Di masa depan, saya sarankan selalu mencoba untuk tetap menginstal dua kernel. Ada baiknya memiliki dua jika salah satu dari mereka berhenti bekerja karena alasan apa pun (Anda dapat memilih yang lain di menu boot GRUB2). Selain itu, jika Anda bermaksud menyimpan dua kernel dan Anda secara tidak sengaja menghapus satu kernel lebih dari yang seharusnya dan reboot, Anda masih memiliki satu yang tersisa untuk boot.
/etc/resolv.conf
saat ini dikelola oleh resolvconf
, itu akan secara otomatis dihasilkan ketika menggunakan NetworkManager dan dapat dengan aman dihapus menggunakan rm /etc/resolv.conf
seperti yang Anda ketahui .
Ketika saya menghapus kernel saya, saya menemukan solusi ini di Forum Ubuntu. Saya mengikuti setiap langkah dan sistem dipulihkan. Semoga ini bisa membantu Anda.
Chroot mungkin berfungsi, chroot berarti bahwa ketika Anda memulai sistem, Anda mengubah sistem file root. Misalnya Anda mulai dari CD langsung tetapi Anda mengubah root "/" ke tempat ubuntu Anda diinstal.
Katakanlah ubuntu Anda terinstal di / dev / sda2 maka Anda dapat mencoba perintah berikut:
Kode:
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
sekarang Anda root "/" di / dev / sda2, coba instal kernel
apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub
Saya harus melakukan sedikit tebakan di sini karena saya tidak pernah melakukan ini sebelumnya tetapi ini harus tentang hal itu. Tidak tahu apakah Anda mendapatkan peringatan kesalahan fstab (seperti tidak dapat menemukan root).
Sekarang Anda perlu membersihkan beberapa hal dan melepas partisi yang terpasang: Kode:
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
Dan Anda dapat reboot untuk melihat apakah itu berhasil.
URL untuk utas: http://art.ubuntuforums.org/showthread.php?t=1688928
/etc/hosts
dan menghapus /sbin/initctl
? Itu ada di sana karena suatu alasan.
/sbin/initctl
atau dbus-uuidgen
atau dpkg-divert
. Anda mungkin perlu mengganti /etc/hosts
untuk terhubung ke Internet, tetapi tidak biasanya, dan jika Anda melakukannya, Anda harus mengembalikan yang asli. Pada sistem yang diinstal (daripada CD langsung yang melakukan booting lalu membongkar sistem file squashfs), Anda tidak harus menjalankan update-initramfs
atau bahkan update-grub
setelah menginstal kernel.
linux-image-2.6.32-26-generic
tidak akan menjadi kernel yang tepat bagi kebanyakan orang untuk menginstal.
Setelah saya menghapus kernel lama dari Trusty14.04 kemarin (FTR: Saya tidak menghapus dua yang terbaru!) Sistem saya tidak bisa boot lagi. GRUB menunjukkan
Error: File not found
Error: You need to load the kernel first
Tidak tahu kenapa.
Saya kemudian mengikuti instruksi luar biasa Eliah Kagan untuk menginstal linux-image-generic
dari CD langsung. Itu memang menginstal 150 MB kernel baru, tetapi sayangnya itu tidak menyelesaikan masalah.
Untungnya, saya menemukan halaman ini . The Boot-Repair
alat sudah benar, sistem saya berjalan lagi.
Saya hanya ingin menambahkan pengalaman yang saya lalui hari ini dalam meningkatkan ke Willy. Saya membersihkan sedikit dan saya menemukan diri saya hanya dengan memtest. google membuat saya mengerti bahwa saya telah menghapus kernel. Salah satu kendala yang saya miliki adalah jaringan yang lambat dan mengunduh ISO penuh bukanlah pilihan. Jadi saya menggunakan CD Ubuntu Minimal (hanya 40MB) dan boot di atasnya. Setelah mendeteksi opsi perangkat keras (yang membantu saya terhubung ke nirkabel) saya masuk ke opsi shell. Saya mengikuti instruksi @Lekensteyn dan saya berhasil. beberapa hal: Anda harus menyalin resolv.conf
sebelum chroot atau DNS Anda akan kacau dan karena pengguna yang masuk ada root, tidak perlu untuk sudo di mana pun.
Saya tahu ini lama tapi saya pikir menambahkan jawaban ini akan menambah nilai bagi mereka yang akan menghadapi masalah.