Yanlışlıkla tüm çekirdekleri temizledikten sonra sistem nasıl geri yüklenir?

65

Eski çekirdekleri silmeye çalışıyordum ama Ubuntu 11.04 dizüstü bilgisayarımdaki tüm çekirdekleri silmeliydim. Bunu USB önyükleme veya sabit sürücüyü başka bir sisteme takma yolu var mı?

    
sordu user7242 25.02.2011 23:31

5 cevap

88

Canlı bir CD'ye (veya canlı USB'ye) önyükleme yapın, bazı sistemleri takın, içine chroot ve çekirdeği takın. Çekirdeğin başarılı bir şekilde kurulmasından sonra, dosya sistemlerini ayırın.

  1. Terminali Aç
  2. Ubuntu bölümünü takın: sudo mount /dev/sdXY /mnt
  3. Bazı özel bölümleri takın:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    
  4. (isteğe bağlı) Bir ağa bağlı olduğunuzda, Canlı ortamınızdan DNS sunucularını kullanın (aksi takdirde ana makine adları çözülemez):

    cp /etc/resolv.conf /mnt/etc/resolv.conf
    
  5. /mnt 'ye chroot: sudo chroot /mnt
  6. Linux çekirdeğini kurun: apt-get install linux-image-generic (chroottan sonra root'unuz olması için sudo gerekli değildir)
  7. Çekirdeğin başarılı bir şekilde kurulmasından sonra, chroot'tan çıkın ve bazı dosya sistemlerini kaldırın:

    exit
    sudo umount /mnt/sys
    sudo umount /mnt/proc
    sudo umount /mnt/dev
    sudo umount /mnt
    
  8. CD'yi veya USB'yi yeniden başlatın ve kaldırın: sudo reboot
verilen cevap Lekensteyn 25.02.2011 23:41
52

Bu genişletilmiş yordam , hangi kernel paketinin yükleneceğini (% Ubuntu 12.10'dan önce) bilmeden, chroot 'de internete bağlanma sorunları dahil olmak üzere oluşabilecek karmaşıklıkların çoğunu açıklar. başlangıçta hangi bölümün veya hangi fiziksel sürücünün linux-image-generic dosya sistemini içerdiğini ve ayrı bir / bölümünün bulunduğunu bilmeden, her zaman /boot olmaz)

Buradaki diğer prosedürlerden herhangi birine atıfta bulunmadım, yine de bazı benzerlikler göreceksiniz. buradaki prosedürü temel aldım. Bu talimatlar oldukça farklı olsa da onları kapsamlı bir şekilde uyarladım. ve sadece bazı komutlar, kopyalanamaz, kopyalanır.)

Tüm çekirdek paketlerini kaldırdınız ve Ubuntu bir çekirdek yüklenmeden önyükleme yapamaz. Böylece çözüm, kurulu sisteme canlı bir CD / DVD / USB'den, chroot önyükleme yapmak ve İçinde çekirdek.

  1. Ubuntu canlı CD / DVD'den veya canlı USB flash sürücüsünden önyükleme yapın.

  2. Ubuntu'nu deneyin 'i seçin ( Ubuntu'yu Yükle ' yi değil.

  3. Masaüstü geldiğinde, İnternet'e bağlı olduğunuzdan emin olun. Eğer değilseniz, internete bağlanın. İnternete bağlı olup olmadığınızı görmenin bir yolu, bir web tarayıcısı açmaktır. Ayrıca, bu soruyu Ubuntu'yu web tarayıcınızda, canlı CD / DVD / USB sisteminde yanıtlayarak getirerek talimatları takip edebilirsiniz. Bunu yapmanızı kesinlikle öneririz.

  4. Ctrl + Alt + T ile bir Terminal penceresi açın.

  5. Terminal penceresinde, bölümlerinizi listelemek için bu komutu çalıştırın:

     sudo parted -l
    

    Bunun gibi bir şey görürsünüz (ancak 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!
    
  6. Elinizde olan çıktıyı inceleyin, bu bölümün / dosya sistemini içeren bölümün cihaz adını belirleyin. Sabit sürücüye (onardığınız) yüklenen Ubuntu sistemi.

    • Yalnızca bir ext4 bölümünüz varsa, bu o.

    • Birden fazla ext4 bölümünüz varsa, muhtemelen bir tanesidir. Ancak, birincisi çok küçükse - bir gigabayttan daha az - bu, ayrı bir /boot bölümü olabilir (bunu da unutmayın).

      Lütfen boot 'nin Flags altında listelenip listelenmediğine, bölümün ayrı bir /boot bölümü olup olmadığına çok az dikkat edin. Bilgiler yukarıda listelenen sistemim değil 'in ayrı bir /boot bölümü var.

    • Bölümün cihaz adı, ikinci satırdaki Disk öğesinden hemen sonra belirtilen fiziksel sürücü için cihaz adıyla başlar. Ardından, bölüm numarasını sonuna ekleyin. Dolayısıyla, benim / dosya sistemini içeren bölümün cihaz adı /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şe sahip olursunuz. Ancak, başka bir Unix benzeri sistem yüklü değilse, muhtemelen en azından başka bir sürücüde kasıtlı olarak oluşturmadan, ext4 bölümleri içeren bir sürücünüz olacaktır. % Co_de% bölümlü birden fazla sürücünüz varsa, ext4 dosya sisteminizi içeren ext4 bölümü büyük olasılıkla ayrıca / bölümü içeren bir sürücüde.

    • Ubuntu sisteminizin linux-swap dosya sisteminizin / dışındaki bir bölümden oluştuğunu mümkün . Bu olduğunda, hemen hemen her zaman ext4 ve neredeyse her zaman oldukça eski bir sistemde. Bu durumun, bu şekilde kendinizin kasten ayarlanmadıkça, durumun böyle olması çok nadirdir.

    ext3 dosya sisteminizi içeren bölümün cihaz adını hatırlayın (veya aşağıya yazın). / değerinden farklıysa, /dev/sda1 yerine aşağıdaki adımlarda yer verilecektir.

    (Eğer ayrı bir /dev/sda1 bölümünüz varmış gibi görünüyorsa, bunun için de cihaz adını hatırlayın.)

  7. /boot dosya sistemini / olarak yükleyin ve /mnt dosya sistemini takın:

    sudo mount /dev/sda1 /mnt
    sudo mount --bind /dev /mnt/dev
  8. Onardığınız kırık Ubuntu sisteminin ayrı olarak monte edilmesi gereken ayrı bir /dev bölümüne sahip olup olmadığını kontrol edin. ( siz iseniz, bunu atlayabilirsiniz.)

    Kontrol etmek, çalıştırmak için:

    ls /mnt/boot
    

    Eğer çıktı varsa ( /boot gibi, fakat tam olarak bunun gibi değil), bozuk sistemin grub memtest86+.bin memtest86+_multiboot.bin 'si /boot ile aynı bölümdeyken ve ona erişmek için herhangi bir şey eklemek zorunda değilsiniz.

    Ancak çıktı yoksa, / dosya sistemini kurmanız gerekir:

    sudo mount BOOT-PARTITION /mnt/boot

    /boot değerini, BOOT-PARTITION bölümünün cihaz adıyla değiştirin (bkz. yukarıdaki 6. adım).

  9. Bozuk sisteme /boot , kalan önemli sanalları yükleyin dosya sistemlerini 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
    
  10. İnternet erişiminin chroot <% 'si ile chroot içinden çalışıp çalışmadığını belirleyin. Normalde pinglere yanıt verdiği bilinen bazı güvenilir konaklar:

    ping -c 5 www.google.com
    

    Bunun gibi bir şey görmelisiniz:

    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
    
    • Genellikle böyle görünürse ve ping değerinden önceki sayı 100'den azsa, % packet loss 'deki İnternet bağlantısı şu şekilde çalışır:

      5 packets transmitted, 5 received, 0% packet loss, time 4006ms

      Çalışıyor, böylece 11. adımı atlayabilirsiniz .

    • Eğer çoğunlukla böyle görünüyorsa ve chroot 'sinden önceki sayı 100 ise, bağlantının sorun gidermesi gerekiyor. Canlı CD sistemindeki bağlantının (örneğin, bir web tarayıcısı üzerinden veya aynı komutu ayrı, % packet loss bir Terminal sekmesi / penceresinden çalıştırarak) çalıştığından emin olun. Komutu doğru yazdığınızdan emin olun. Henüz yapmadıysanız chroot kullanın.

    • Çıktı yukarıdaki gibi görünmüyor, ancak bunun yerine www.google.com diyorsa, ağ iletişimi henüz ping: unknown host www.google.com 'da çalışmıyor.

  11. chroot 'da ağ kurulumu yapın. Yukarıdaki adım 10’da chroot hatası olmadıkça bu adımı atlayın.

    Ağ kurmak için, bozuk sistemin unknown host dosyasını yedekleyin ve canlı CD sisteminin hosts ve hosts dosyalarını kopyalayın. (Bu dosya otomatik olarak anında yeniden oluşturulduğundan, bozuk sistemin resolv.conf sürümünü yedeklemeniz gerekmez.)

    yeni Terminal sekmesini ( Ctrl + ÜstKrkt + T ) açın ya da isterseniz, yeni Terminal penceresi ( Ctrl + ÜstKrkt + N veya sadece Ctrl + < kbd> 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 resolv.conf komutu, yeni sekmeyi / pencereyi kapatır.)

    İnternet erişiminin şu anda exit içinden çalışmasını sağlamak için yukarıdaki 10. adımı tekrarlayın. Olmalı.

  12. Hangi çekirdek paketinin yükleneceğini belirtin. Genellikle, bu chroot olacaktır. Ama her zaman değil.

    Hangi kurulacağından emin değilseniz, kısmen yüklediğiniz Ubuntu sürümüne ve kısmen de diğer bilgilere bağlı olacaktır. Hangi Ubuntu sürümünün kurulduğundan emin değilseniz, bu komutu çalıştırarak öğrenin (ayrı bir Terminal penceresinde / sekmesinde linux-image-generic , not içinde):

    lsb_release -r
    
    • Ubuntu 12.10'da (şu anda geliştirilmekte olan bir sonraki Ubuntu sürümü), her zaman chroot olacaktır. (Bkz. bu , bu ve Bu .)

    • Ubuntu 12.04 LTS'de, olası olasılıklar linux-image-generic ve linux-image-generic 'dir. (Önceki sürümlerin aksine, 12.04 artık ayrı sunucu ve masaüstü çekirdeklerine sahip değil.)

      • Yüklü Ubuntu sistemi (düzeltmekte olduğunuz) 64 bit sürümdeyse, linux-image-generic-pae kullanın. ( linux-image-generic sadece 32 bit sistemler için geçerlidir.)

        32 bit veya 64 bit bir bilgisayara yüklenmiş 32 bit Ubuntu sistemine sahip olmak mümkündür. Ayrıca, 32 bit yüklü bir sistemi onarmak için 32 bit veya 64 bit canlı CD kullanıyor olabilirsiniz. Bu nedenle, eğer kurulu Ubuntu sistemi nin 32-bit mi yoksa 64-bit mi olduğunu bilmiyorsanız, bu komutu çalıştırarak kontrol edin ( linux-image-generic-pae , not içinde bir ayrı Terminal penceresi / sekmesi):

        dpkg-architecture -qDEB_HOST_ARCH_BITS
        

        Çıkış, chroot veya 32 .

        olacaktır.

        ( 64 öğesinin bu bilgiyi bulmanın doğru bir yolu olduğunu lütfen unutmayın, çünkü uname -m uygulamasında çalıştırıldığında bile, canlı CD sisteminin çekirdeği olan çekirdeği , yüklü (kırık) sistemin çekirdeğini değil.)

      • Yüklü Ubuntu sistemi (sabitlediğiniz dosya), 32 bit sürümdeyse, kullanılacak en iyi çekirdek, ne kadar RAM'e sahip olduğunuza bağlı olacaktır. Tavsiye ederim:

        • 3 GB'den daha az RAM'iniz varsa chroot
        • 3 GB RAM veya daha fazlaysa linux-image-generic .

        (Bu, Ubuntu'nun yükleyicisinin, kurulum yapan kişi PAE çekirdeklerini yükleme yeteneğini kazandığından beri, hangisini kuracağını seçer. Bkz. çözünürlüğü bu hataya . PAE'nin ne olduğunu öğrenin, bu Wikipedia makalesine bakın.Ubuntu'da PAE hakkında bilgi edinmek isterseniz bu Ubuntu viki sayfasına bakın.)

        Ne kadar RAM'iniz olduğunu bilmiyorsanız, öğrenmek için bu komutu çalıştırın:

        grep MemTotal /proc/meminfo
        

        Bu, kilobayt olarak listelenmiştir. gigabaytlara dönüştürmek için, 1,048,576 (1024 2 ) ile bölün.

        • 3 konser = 3,145,728 kB
    • Ubuntu'da önce 12.04 yayınlar, olası olasılıklar linux-image-generic-pae , linux-image-generic ve linux-image-generic-pae .

      • Bir Ubuntu Sunucu sistemi çalıştırıyorsanız, linux-image-server kullanın.
      • Aksi takdirde, 12.04 sistemler için yukarıdaki tavsiyelere uyun.
  13. Bu beklediğiniz an! Kırık sistemde bir çekirdek yükleyin.

    (Önceden olduğu gibi, aksi açıkça belirtilmedikçe, bu komutlar ayrı bir Terminal penceresinde / sekmesinde değil, linux-image-server dizininde çalıştırılır.)

    apt-get update
    apt-get -y install linux-image-generic

    Farklıysa, chroot 'ı, yukarıdaki 12. adımda yüklemeye karar verdiğiniz diğer çekirdek paketi ile değiştirin.

  14. linux-image-generic 'da ağ kurmak için 11. adımı gerçekleştirmeniz gerekiyorsa, eski chroot dosyasını geri yükleyin. 11. adımı atladıysanız, bu adımı da atlayın.

    Geri yüklemek için şu komutu çalıştırın:

    cp /etc/hosts.old /etc/hosts
    
  15. Dosya sistemlerini kaldırın, hosts giriş exit 'si:

    umount /proc || umount -lf /proc
    umount /sys /dev/pts
    exit
    sudo umount /mnt/dev /mnt
    
  16. Canlı CD / DVD / USB sistemini kapatın, canlı CD / DVD veya USB flash sürücüyü çıkarın. Sadece tamir ettiğiniz sabit diskte kurulu sisteme önyükleme yapın. İçine bir çekirdek paketi yüklediniz (ve kurulumun bir parçası olarak, sağladığı çekirdek, GRUB2 önyükleme menüsüne eklenecektir). Her şey doğru bir şekilde çalıştıysa, sisteminiz sorunsuz bir şekilde önyükleme yapmalıdır. (Sanırım her zamankinden daha fazla önyükleme yapmak biraz daha uzun sürecektir.)

YASAL UYARI: Yukarıdaki prosedürü her olası Ubuntu sistemde test etmedim, bu yüzden tanımlayamadığım bir hata var.

Gelecekte, her zaman iki çekirdek kurmaya çalışmanızı öneririz. Birisinin herhangi bir nedenden dolayı çalışmayı durdurması durumunda iki taneye sahip olmak iyidir (GRUB2 önyükleme menüsünde diğerini seçebilirsiniz). Ayrıca, iki çekirdek tutmayı ve yanlışlıkla yeniden başlatmayı düşündüğünüzden bir tanesini kaldırmayı planlıyorsanız, yine de önyükleme yapmak için bir tane kaldırabilirsiniz.

    
verilen cevap Eliah Kagan 20.07.2012 17:58
0

Çekirdeğimi kaldırdığımda Ubuntu Forumlarında bu çözümü buldum. Her adımı takip ettim ve sistem kurtarıldı. Umarım size yardımcı olur.

Bir chroot işe yarayabilir, chroot, bir sistemi başlattığınızda kök dosya sistemini değiştireceğiniz anlamına gelir. Örneğin, canlı bir CD'den başladınız ancak ubuntu'nuzun kurulu olduğu "/" kökünü değiştirdiniz.

Ubuntu'nuzun / dev / sda2 üzerine 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

Artık root'unuz "/" / dev / sda2 üzerindeyken, çekirdeği yüklemeyi deneyin

apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub

Burada daha önce hiç yapmak zorunda olmadığım için biraz tahmin çalışması yapmalıydım ama bu konuyla ilgili olmalı. Bazı fstab hata uyarısı alıp almadığınızı (root bulamıyorsanız) bilmiyorum.

Şimdi bazı şeyleri temizlemeniz ve monte edilen bölümleri ayırmanız gerekiyor: 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 çalışıp çalışmadığını görmek için yeniden başlatabilirsiniz.

Konu için URL: İşte

    
verilen cevap Melvin 26.02.2011 13:23
0

Eski çekirdekleri Trusty14.04'ten kaldırdıktan sonra (FTR: değil en son iki ürünü kaldırdım!) Sistemim artık önyükleme yapmıyordu. GRUB gösterdi

Error: File not found
Error: You need to load the kernel first

Fikrim yok.

Daha sonra, canlı bir CD'den linux-image-generic yüklemek için Eliah Kagan'ın mükemmel talimatlarını izledim. 150 MB'lık yeni çekirdeği kurdu, ancak ne yazık ki bu problemi çözmedi.

Neyse ki, bu sayfayı buldum. % Co_de% aracı doğru anladı, sistemim yeniden çalışıyor.

    
verilen cevap leftaroundabout 16.07.2015 13:00
0

Sadece bugün Willy'ye geçişte geçirdiğim deneyimlerimi eklemek istedim. Biraz temizledim ve kendimi sadece memtest ile buldum. google, çekirdekleri çıkardığımı anlamamı sağladı. Sahip olduğum bir kısıtlama yavaş ağ ve bu yüzden tam ISO indirme seçeneği olmadı. Bu yüzden Ubuntu Minimal CD'sini (yalnızca 40MB) ve üzerinde önyükleme yaptım. Donanım seçeneğini tespit ettikten sonra (kablosuz bağlantıya yardımcı oldu) kabuk seçeneğine girdim. Lekensteyn talimatlarını takip ettim ve başarılı oldum. Birkaç şey olsa da: chroot'a gitmeden önce resolv.conf 'i kopyalamanız gerekmektedir, aksi takdirde DNS'iniz vidalanacaktır ve oturum açmış olan kullanıcı kök olduğundan sudo'ya ihtiyaç yoktur.

Eskiini biliyorum ama bu cevabı eklemenin, bu sorunla karşılaşacaklarına değer katacağını düşündüm.

    
verilen cevap Stefano Mtangoo 14.04.2016 22:28

Etiketlerdeki diğer soruları oku