Eski çekirdekleri silmeye çalışıyordum, ancak Ubuntu 11.04 dizüstü bilgisayarımdaki tüm çekirdekleri silmiş olmalıyım. Bunu USB önyüklemesi ile düzeltmek veya sabit sürücüyü başka bir sisteme monte etmek için herhangi bir yol var mı?
Eski çekirdekleri silmeye çalışıyordum, ancak Ubuntu 11.04 dizüstü bilgisayarımdaki tüm çekirdekleri silmiş olmalıyım. Bunu USB önyüklemesi ile düzeltmek veya sabit sürücüyü başka bir sisteme monte etmek için herhangi bir yol var mı?
Yanıtlar:
Canlı bir CD'ye (veya canlı USB'ye) önyükleyin, bazı sistemleri monte edin, içine yerleştirin ve çekirdeği yerleştirin. Çekirdeğin başarılı bir şekilde yüklenmesinden sonra, dosya sistemlerini çıkarın.
sudo mount /dev/sdXY /mnt
Bazı özel bölümleri monte edin:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
(isteğe bağlı) Bir ağa bağlandığınızda, Canlı ortamınızdan DNS sunucularını kullanın (aksi takdirde ana bilgisayar adları çözülemez):
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(chroot'tan sonra root olduğunuz için sudo gerekmez)Çekirdeğin başarılı bir şekilde yüklenmesinden sonra chroot'tan çıkın ve bazı dosya sistemlerini çıkarın:
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
/mnt
. Ubuntu genellikle dosya sistemlerini açmayı / senkronize etmeyi önemser, ancak bu bana daha temiz görünüyor.
/dev/mdxxx
edeceğiniz yerde) bir sürücüyü eşleştiriyorsunuz - mdadm olduğu varsayılıyor.
/etc/resolv.conf
(bir bağlantı ise onu kaldırın) ve buna benzer bir şey koyun nameserver 8.8.8.8
(Google genel DNS sunucusu). Gerekirse değiştirin.
cp /etc/resolv.conf /mnt/etc/resolv.conf
chroot'a girmeden önce cevaba eklemelisin . Bu yine de benim için çalıştı
Bu genişletilmiş prosedür , hangi internete bağlanacağını chroot
bilmeden (Ubuntu 12.10'dan önce, her zaman olmayacak linux-image-generic
), hangi bölümün ne olduğunu bilmeden , internete bağlanma problemleri de dahil olmak üzere, ortaya çıkabilecek komplikasyonların çoğunu oluşturur. hangi fiziksel sürücünün /
dosya sistemini içerdiği ve ayrı bir /boot
bölüme sahip olduğu .
Bazı benzerlikler göreceksiniz, ancak buradaki diğer prosedürlerden herhangi birine atıfta bulunarak yazmadım. Buradaki prosedürü gevşek bir şekilde temel aldım (bu talimatlar oldukça farklı bir şey olsa da, onları kapsamlı bir şekilde uyarladım ve sadece bazı komutlar, nesir değil, kopyalandı).
Tüm çekirdek paketlerini kaldırdınız ve Ubuntu bir çekirdek yüklenmeden önyükleme yapamıyor. Bu yüzden çözüm, chroot
yüklü bir CD / DVD / USB'den kurulu bir sisteme önyükleme yapmak ve içine bir çekirdek yüklemek.
Bir Ubuntu canlı CD / DVD'sinden veya canlı USB flash sürücüsünden önyükleyin.
Seçin Ubuntu deneyin (değil Ubuntu yükleyin ).
Masaüstü açıldığında, İnternete bağlı olduğunuzdan emin olun. Değilse, İnternete bağlanın. İnternete bağlı olup olmadığınızı görmenin bir yolu bir web tarayıcısı açmaktır. Web tarayıcınızda, canlı CD / DVD / USB sisteminde bu Ubuntu askını cevapla mesajını getirerek talimatların kalanını bile takip edebilirsiniz. Bunu yapmayı şiddetle tavsiye ederim.
Ctrl+ Alt+ İle bir Terminal penceresi açın T.
Terminal penceresinde bölümlerinizi listelemek için bu komutu çalıştırın:
sudo parted -l
Böyle bir şey göreceksiniz (ancak bu tam olarak böyle olmayacak ):
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!
Sabit sürücüde yüklü olan (tamir ediyor olduğunuz) Ubuntu sisteminin /
dosya sistemini içeren bölümün cihaz adını belirlemek için sahip olduğunuz çıktıyı inceleyin .
Sadece bir ext4
bölümünüz varsa, o bölüm odur.
Birden fazla ext4
bölümünüz varsa, muhtemelen ilkidir. Ancak, ilki çok küçükse - gigabayttan az - o zaman bu ayrı bir /boot
bölüm olabilir (bunu da unutma).
Lütfen boot
altında listelenip listelenmemenin Flags
bir bölümün ayrı bir bölüm olup olmadığına çok az bir ilgisi olduğunu unutmayın /boot
. Bilgilerini yukarıda listelenen Benim sistem, yok değil ayrı olması /boot
bölüm.
Bölümün cihaz adı Disk
, ikinci satırın hemen ardından belirtilen fiziksel sürücünün cihaz adı ile başlar . Sonra bunun sonuna bölüm numarasını ekleyin. Yani, içerdiği bölümü için aygıt adı benim /
dosya sistemini olduğu /dev/sda1
. İşte bu bilgiyi bulduğum iki satır:
Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
Birden fazla fiziksel sürücünüz varsa, yukarıda gösterilenler gibi birden fazla giriş elde edersiniz. Ancak başka bir Unix benzeri sistem kurulmamışsa, muhtemelen ext4
en azından bilerek başka bir sürücüde oluşturmadan bölümler içeren yalnızca bir sürücünüz olur. Eğer birden fazla sürücü var ise ext4
bölümleri, ardından ext4
da içeren bölüm /
dosya sistemi bir sürücüde muhtemelen de bir içeriyor linux-swap
bölümü.
Bu var mümkün Ubuntu sistemin bu /
dosya sistemi dışındaki türde bir bölümde olduğu ext4
. Bu olduğunda, neredeyse her zaman ext3
ve neredeyse her zaman oldukça eski bir sistemdedir. Kasıtlı olarak işleri kendiniz ayarlamazsanız, durum böyle olması çok nadirdir.
/
Dosya sisteminizi içeren bölümün cihaz adını unutmayın (veya yazın). Eğer farklıysa, aşağıdaki adımlarda onunla /dev/sda1
değiştireceksiniz /dev/sda1
.
(Ayrı bir /boot
bölümünüz var gibi görünüyorsa, bunun için cihazın adını da unutmayın.)
Monte /
etmek dosya sistemini /mnt
ve bunun montaj /dev
dosya sistemi:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
Tamir ettiğiniz kırılmış Ubuntu sisteminin ayrı /boot
olarak monte edilmesi gereken ayrı bir bölümü olup olmadığını kontrol edin . (Yapılmadığından eminseniz bunu atlayabilirsiniz.)
Kontrol etmek için çalıştırın:
ls /mnt/boot
Çıktı varsa ( grub memtest86+.bin memtest86+_multiboot.bin
ancak tam olarak tam olarak olmasa da), o zaman kırık sistem /boot
aynı bölümdedir /
ve erişmek için hiçbir şey monte etmeniz gerekmez.
Ancak çıktı yoksa /boot
dosya sistemini bağlamak zorunda kalacaksınız :
sudo mount BOOT-PARTITION /mnt/boot
Bölümün BOOT-PARTITION
cihaz adı ile değiştirin /boot
(yukarıdaki 6. adıma bakın).
chroot
Bozuk sisteme, kalan önemli sanal dosya sistemlerini bağlayın ve bazı önemli ortam değişkenlerini ayarlayın:
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
İnternet erişiminin , ping'lere normalde yanıt verdiği bilinen bazı güvenilir bir ana bilgisayar chroot
aracılığıyla çalışıp çalışmadığını belirleyin ping
:
ping -c 5 www.google.com
Böyle bir şey görmelisin:
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
Çoğunlukla böyle görünüyorsa ve önceki sayı % packet loss
100'den azsa, telefondaki İnternet bağlantısı chroot
çalışıyor demektir:
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Çalışıyor, 11. adımı atlayabilirsiniz .
Çoğunlukla böyle görünüyorsa ve önceki sayı % packet loss
100 ise, bağlantının sorun gidermeye ihtiyacı vardır. Canlı CD sistemindeki bağlantının (örneğin, bir web tarayıcısı üzerinden veya aynı komutu ayrı, chroot
sıralanmamış bir Terminal sekmesinde / penceresinde çalıştırarak) çalıştığından emin olun. Komutu doğru yazdığınızdan emin olun. Yapmadıysanız kullanın www.google.com
.
Çıktı, yukarıdakine hiç benzemiyorsa, ancak bunun yerine, diyorsa ping: unknown host www.google.com
, ağ henüz chroot
.
Ağ ayarlarını yapın chroot
. Yukarıdaki 10. adımda bir unknown host
hata almadıkça bu adımı atlayın .
Ağ kurmak için bozuk sistemin hosts
dosyasını yedekleyin ve canlı CD sisteminin hosts
ve resolv.conf
dosyalarının üzerine kopyalayın . (Bozuk sistemin versiyonunu yedeklemeniz gerekmez resolv.conf
, çünkü o dosya anında otomatik olarak yenilenir.)
Bir açın yeni Terminal sekmesini ( Ctrl+ Shift+ Tİsterseniz, a) veya yeni Terminal penceresi ( Ctrl+ Shift+ N, ya da sadece Ctrl+ Alt+ T). Bu komutları içinde çalıştırın:
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
(Sondaki exit
komut yeni sekme / pencereyi kapatır.)
İnternet erişiminin şimdi içinden çalıştığından emin olmak için yukarıdaki 10. adımı tekrarlayın chroot
. Olması gerekiyor.
Hangi çekirdek paketinin kurulması gerektiğini belirleyin. Genellikle, bu olacak linux-image-generic
. Ama her zaman değil.
Hangi kurulumun yapılacağından emin değilseniz, kısmen yüklediğiniz Ubuntu sürümüne ve kısmen başka bilgilere bağlı olacaktır. Eğer olduğunuz yüklü Ubuntu sürümü emin değilseniz, (bu komutu çalıştırarak öğrenmek chroot
, değil ayrı terminal pencerede / sekmede):
lsb_release -r
Ubuntu 12.10 (şu anda geliştirilmekte olan bir sonraki Ubuntu sürümü), her zaman olacaktır linux-image-generic
. ( Buna , buna ve buna bakın .)
Ubuntu 12.04 LTS'de, olasılıklar linux-image-generic
ve linux-image-generic-pae
. (Önceki sürümlerin aksine, 12.04'te artık ayrı sunucu ve masaüstü çekirdekleri yoktur.)
Kurulu Ubuntu sistemi (tamir ettiğiniz) 64 bit versiyonuysa, kullanın linux-image-generic
. ( linux-image-generic-pae
yalnızca 32 bit sistemler için geçerlidir.)
32 bit veya 64 bit bir bilgisayara 32 bit bir Ubuntu sistemi kurulması mümkündür. Ayrıca, 32 bit yüklü bir sistemi düzeltmek için 32 bit veya 64 bit canlı CD kullanıyor olabilirsiniz. Eğer olup olmadığını bilmiyorsanız Yani yüklü Ubuntu sistemi 32-bit veya 64-bit, (bu komutu çalıştırarak kontrol chroot
, değil ayrı terminal pencerede / sekmede):
dpkg-architecture -qDEB_HOST_ARCH_BITS
Çıktı ya 32
da olacaktır 64
.
(Lütfen unutmayın uname -m
olduğu değil çalıştırmak bile, çünkü bu bilgileri bulmak için doğru yoldur chroot
, bu sana mimarisini söyleyecektir çalışan çekirdekten canlı CD sistemin çekirdek değil yüklü (kırık) sistemin çekirdeğidir.)
Kurulu Ubuntu sistemi (tamir ettiğiniz) 32-bit versiyon ise, kullanılacak en iyi çekirdek ne kadar RAM aldığınıza bağlı olacaktır. Ben tavsiye ediyorum:
linux-image-generic
3 GB'den az RAM varsalinux-image-generic-pae
3 GB RAM veya daha fazlası varsa.(Bu Ubuntu'nun yükleyici yükleyici PAE çekirdekleri yükleme olanağı kazanmış beri kurmak için hangisinin tercih nasıl. Bkz çözünürlük için bu hata . Eğer PAE ne olduğunu öğrenmek istiyorsanız, bkz bu Wikipedia makalesine . Eğer isterseniz Ubuntu'da PAE hakkında bilgi edinin, bu Ubuntu wiki sayfasına bakın .)
Ne kadar RAM'e sahip olduğunuzu bilmiyorsanız, aşağıdakileri bulmak için bu komutu çalıştırın:
grep MemTotal /proc/meminfo
Bu kilobayt cinsinden listelenmiştir . Gigabaytlara dönüştürmek için 1,048,576 (1024 2 ) ile bölün .
Ubuntu serbest bırakır On önce 12.04, muhtemel olasılıklar vardır linux-image-generic
, linux-image-generic-pae
ve linux-image-server
.
linux-image-server
.Beklediğin an bu! Bozuk sistemde bir çekirdek kurun.
(Daha önce olduğu gibi, aksi açıkça belirtilmediği sürece, bu komutlar chroot
ayrı bir Terminal penceresinde / sekmesinde değil, içinde çalıştırılır .)
apt-get update
apt-get -y install linux-image-generic
Farklıysa linux-image-generic
, yukarıda adım 12'de kurmaya karar verdiğiniz diğer çekirdek paketiyle değiştirin .
Ağ kurmak için 11. adımı gerçekleştirmek zorundaysanız chroot
, eski hosts
dosyayı geri yükleyin. 11. adımı atladıysanız, bu adımı da atlayın.
Geri yüklemek için bu komutu çalıştırın:
cp /etc/hosts.old /etc/hosts
Aşağıdakilerden exit
yola çıkarak dosya sistemlerini çıkarın chroot
:
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
Canlı CD / DVD veya USB flash sürücüyü çıkartarak canlı CD / DVD / USB sistemini kapatın. Onardığınız, sabit diskte kurulu olan sisteme önyükleme yapın. İçine bir çekirdek paketi yerleştirdiniz (kurulumun bir parçası olarak, sağladığı çekirdek GRUB2 önyükleme menüsüne eklenecek). Her şey düzgün çalıştıysa, sisteminizin sorunsuz başlatılması gerekir. (Bu sefer önyüklemenin normalden daha uzun sürmesinin mümkün olduğunu düşünüyorum.)
YASAL UYARI: Yukarıdaki prosedürü her olası Ubuntu sisteminde test etmedim , bu yüzden tanımlamamam gereken bir hata olabilir.
Gelecekte, her zaman iki çekirdeği takılı tutmaya çalışmayı öneririm . Bunlardan birinin herhangi bir nedenle çalışmayı durdurması durumunda iki taneye sahip olmak iyidir (diğerini GRUB2 önyükleme menüsünde seçebilirsiniz). Ayrıca, iki çekirdeği saklamak istiyorsanız ve yanlışlıkla bir tane daha beklediğinizden kaldırıp yeniden başlatıyorsanız, hala önyüklemek için bir tane kaldı.
/etc/resolv.conf
bugünlerde tarafından yönetilmektedir resolvconf
, NetworkManager kullanırken otomatik olarak üretilecektir ve rm /etc/resolv.conf
öğrendiğiniz şekilde güvenle kaldırılabilir .
Çekirdeğimi çıkardığımda bu çözümü Ubuntu forumlarında buldum. Her adımı takip ettim ve sistem iyileşti. Umarım size yardımcı olur.
Bir chroot işe yarayabilir, chroot, bir sistemi başlattığınızda kök dosya sistemini değiştirdiğiniz anlamına gelir. Örneğin, canlı bir CD'den başladınız ancak "/" kökünü ubuntu'nuzun bulunduğu yere değiştirdiniz.
Ubuntu'nuzun / dev / sda2'ye kurulu olduğunu söyleyelim, sonra aşağıdaki komutları deneyebilirsiniz:
Kod:
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
Şimdi kök "/" is / dev / sda2 açık, çekirdeği kurmayı deneyin
apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub
Daha önce hiç yapmak zorunda olmadığım için burada biraz tahminde bulunmak zorunda kaldım, ancak bununla ilgili olmalı. Bazı fstab hata uyarısı alıp almadığınızı bilmiyorum (gibi kök bulamıyor).
Şimdi bazı şeyleri temizlemeniz ve takılan bölümleri ayırmanız gerekir: Kod:
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
Ve işe yarayıp yaramadığını görmek için yeniden başlatabilirsiniz.
Konunun URL'si: http://art.ubuntuforums.org/showthread.php?t=1688928
/etc/hosts
kaldırsın /sbin/initctl
? Bir nedeni var.
/sbin/initctl
veya dbus-uuidgen
veya dpkg-divert
. Sen belki değiştirmeniz gerekiyor /etc/hosts
internete bağlanmak için değil, genellikle, ve bunu yaparsanız, özgün geri koymalıyız. Yüklü bir sistemde (ziyade bot sonra squashfs dosya sistemini açar canlı CD) üzerinde, çalıştırmak zorunda değilsiniz update-initramfs
, hatta update-grub
çekirdeği yüklendikten sonra.
linux-image-2.6.32-26-generic
çoğu insanın kurulumu için doğru çekirdek olmayacak.
Ben Trusty14.04 dün eski tanelerini kaldırıldı sonra (FTR: Ben yaptım değil son iki olanları kaldırmak!) Benim sistem önyükleme artık olmaz. GRUB gösterdi
Error: File not found
Error: You need to load the kernel first
Neden hiçbir fikrim yok.
Sonra canlı bir CD'den yüklemek için Eliah Kagan'ın mükemmel talimatlarını takip ettimlinux-image-generic
. 150 MB'lık yeni bir çekirdek yükledi, ancak ne yazık ki bu sorunu çözmedi.
Neyse ki bu sayfayı buldum . Boot-Repair
Aracı doğru, benim sistemini yeniden çalıştırmayı aldık.
Ben sadece bugün Willy ile yükselterek yaşadığım deneyimlerimi eklemek istedim. Biraz temizledim ve kendimi sadece memtest ile buldum. google beni çekirdeği çıkardığımı anlamama yönlendirdi. Sahip olduğum tek kısıtlama yavaş ağ ve bu yüzden de tam ISO indirme seçeneği değildi. Bu yüzden Ubuntu Minimal CD kullandım (sadece 40 MB) ve üzerine çizdim. Donanım seçeneğini tespit ettikten sonra (bu telsize bağlanmama yardımcı oldu) kabuk seçeneğine girdim. @Lekensteyn talimatlarını takip ettim ve başardım. Ancak birkaç şey: resolv.conf
chroot gitmeden önce kopyalamanız gerekir, aksi takdirde DNS'iniz vidalanır ve oturum açmış olan kullanıcının kökleri sudo'ya ihtiyaç duymaz.
Eski olduğunu biliyorum ama bu cevabı eklemenin sorunla karşılaşacak olanlara değer katacağını düşündüm.