Initramfs isteminde ve "mount: 'okuyamıyor' / etc / fstab ': Böyle bir dosya ya da dizin yok' ve" Init bulunamadı "içine önyükleme nasıl düzeltilir?


25

Tek bir bölüme tahsis edilmiş GPT bölümlü bir disk, ext4 biçimli, extlinux (sürüm 4.05), bootloader, Ubuntu Core sürüm 13.10 , rootfs olarak amd64 ve çekirdeği olarak Ubuntu linux-image-3.11.0-18-jeneric kullanarak yeni bir sistem kurmak , ve önyükleyici yapılandırması oluşturmak için extlinux-update.

Yeniden başlattıktan sonraki sonuç (hala KVM tabanlı bir sanal makinenin içinde) bir (initramfs) istemi ve bu mesajlar:

mount: can't read '/etc/fstab': No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
The filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.

BusyBox v1.20.2'dir.

gerileme:

  • dosya sistemi ile kontrol edildi fsck.ext4

Kök varlığını kontrol et

(initramfs) ls -l /dev/[hs]da*
ls: /dev/[hs]da*: No such file or directory

Kök önyükleme argümanı

(initramfs) cat /proc/cmdline
initrd=/boot/initrd.img-3.11.0-18-generic ro quiet BOOT_IMAGE=/boot/vmlinuz-3.11.0-18-generic

Yüklenen modülleri kontrol et

(initramfs) cat /proc/modules
e1000 145368 0 - Live 0xffffffffa0000000

/ boot klasörü içeriği

$ sudo ls -l boot
-rw------- 1 root root 3296162 Feb 18 22:37 System.map-3.11.0-18-generic
-rw-r--r-- 1 root root 1007681 Feb 18 22:37 abi-3.11.0-18-generic
-rw-r--r-- 1 root root  163258 Feb 18 22:37 config-3.11.0-18-generic
drwxr-xr-x 2 root root    4096 Mar 17 20:13 extlinux
-rw-r--r-- 1 root root 4995000 Mar 16 23:35 initrd.img-3.11.0-18-generic
-rw------- 1 root root 5634192 Feb 18 22:37 vmlinuz-3.11.0-18-generic

Bu sistemin beklenen varsayılan bash istemine önyükleme yapması nasıl yapılır?


Neden iki init imgesi var? Lütfen bunu gerçek bir diske yerleştirip açmayı deneyebilir misiniz? Qemu ve EFI'nin sorunları var - örneğin, eğer bir EFI önyükleme bellenimi görüntüsü kullanmazsanız, çok fazla uzağa gidemezsiniz.
mikeserv

İstediğin bir bash istemi ise Ve her zaman ... senin Initramfs bash içerebilir
mikeserv

Aslında, Ubuntu'daki BÜYÜK GPT bölümlerine baktığımı ve tamamen boş olarak kaydettiklerini hatırlıyorum. Canlı disk için grubun seçimini yapmak üzere yeniden başlatma sırasında vardiya yaptıktan sonra, Efi seçeneğini seçebildim, daha sonra bir diskim vardı.
mikeserv

Yanıtlar:


11

root=/dev/sdaXSeçeneği ayarlayarak çekirdek önyükleme parametrenizi değiştirin . sdaXsenin /veya rootbölümün olur. Bir sonraki açılışta , dosya sistemlerine initramfserişmeye /etc/fstabve monte etmeye çalışmadan önce bölümü bölmeye çalıştığınızı göreceksiniz .

Daha fazla ayrıntı için " initramfs / etc / fstab kullanıyor mu? "


Ekleme root=/dev/sdaX durum arttırır, artık yoktur (initramfs)ama bashonun yerine giriş istemi.
Pro Yedekleme

1
Yanında manuel olarak eklemek root=/dev/sdaXçekirdek boot, ben güncelleme gereken /mnt/etc/default/extlinuxve değişim EXTLINUX_ROOT=""önerilen etmek EXTLINUX_ROOT="/dev/sdaX"ve çalıştırmak extlinux-updatetekrar.
Pro Yedekleme

10

Anlamanız gereken initramfsşey onun bir dosya sistemi olduğudur. Çekirdek 2.6'dan beri, temelde, makinenizde yalnızca çekirdeğe yüklenen dosya sistemi ( tartışmalı olarak bir dosya sistemi olan VFS'yi bir kenara bırakmak ) vardır. Sizin initramfs imagebir disk görüntüsüdür.

Senin içinde initramfs imagekarar Dağıtım kök diski bulunursa önce gerektirecek önemli yeterliydi dosyaları ne olursa olsun olacaktır. Genellikle bu Busybox ve kök cihazınızı bulup monte etmek için gereken çekirdek modüller. Bu senin için çalışmıyor.

Burada her şey göz önünde bulundurularak gerçek bir gizem yoktur. Bir terminal isteminde yolunuzu bulabilirseniz gezinebilirsiniz, initramfs.ancak önce bunu çözmek zorundasınız.

İlk ve en önemlisi ve bir kez daha - bu sadece /.Linux kök tipi şeyler yapan Linux köküdür. Aslında, çekirdeğinizden ayrı bir dosyadaysa, aslında zaten ikinci kök aygıtınızdır. Her Linux çekirdeği, çekmeden önce ilk monte ettiği , kendisinin temelde/ tamamen boş bir parçasını içerir .initramfs.

Dahası initramfsolan gerçek kökü. Linux çekirdeğinin initdaha sonra karşılaşacağınız herhangi bir problem için tüm sorumluluğu yerine getirerek ve sonra feragat ederek kullanıcı alanını başlattığı yerdir . Sizin initkadar ona eşlik eden kabuk komut dosyalarını düzenleme olarak eylemleri basit olarak olması gerektiği kontrol anlamına gelir çoktur, Busybox gibi görünüyor.

Öyleyse niçin init?kesinlikle bulamamayla ilgili hata init, gerçek initkomutunuzun kendisini çalıştırması için kabuk betiği ile bilgilendirildiği bir programa atıfta bulunuyor .

Bana en çarpıcı olan, çekirdek sözde dosya sistemlerinin - dev sys procbağlanmadığıdır. Bu ya çok sıkıntılı ya da çok iyi bir ipucu. Beni çekirdek yeteneklerini sorgulamaya yönlendiren KVM'den bahsediyorsunuz, ama o karanlık ve dar yoldan inmeden önce, önce başka bir şey deneyebilir miyiz?

cd /root || mkdir /root

Bana hata mesajının tekrar tekrar geldiğini söylüyor:

Böyle bir dosya ya da dizin yok

initramfsResminizi yeniden oluşturmanız gerekmiyor . Bunu yapmak için canlı diske önyükleme yapın ve dağıtımınızın bu işlemi gerçekleştirmek için sağladığı araçlardan birini çalıştırın. Oh, ve lütfen bu canlı diskin EFI modunda yüklendiğinden emin olun .

Yani burada gerçekten sıra dışı olan tek şey var. initramfs - switchroot.

Linux çekirdeği, erken kullanım alanı için amaçlanan ve initramfskök disk cihazınıza geçişi gerçekleştirmek için tasarlanmış çok özel bir sistem sunar . İlk önce kök diskinizi bir bağlantı noktasına monte initramfsedip kök dosya sistemini kendi içine döndürerek çalışır. Ben senin varsayalım initramfs'shedef olan bağlama noktası rootbu konuda inilti tutan yolda dayalı. Neden orada olduğundan emin değilsin?

Daha fazla araştırma için biraz cesur olmanız gerekecek. Önyükleyicinizi geçmek üzere ayarlayın ...

init=/bin/sh

... bir çekirdek parametresi olarak.


... hedef bağlama noktası kök ... Neden orada olduğundan emin değilsin? Bunun nasıl doğrulanacağı konusunda en ufak bir fikrim yok.
Pro Yedekleme

Artık gerek yok. Sen bash aldın, bu demek ki initramfs geçmişsin. Ama hala kvm'de misin?
mikeserv

Evet, hala kvm'deyim.
Pro Yedekleme

@ProBackup Eğer orada başardıysanız, diğer adama ödülünüzü vermeniz gerekir - bu zaten amacınız olduğunu belirtti. Boşver - görünüşe göre zaten yaptın. Neden iki tane init görüntüsü belirtmeniz gerektiğini bilmek istiyorum - neden initrd ve boot? O nedir? Ayrıca efibootmgr, sanal makinenizde istekte bulunduğunuzda kaçabilecek bir şey olup olmadığını da bilmek isterim .
mikeserv

Neden için yeni bir SE sorusu yaptım: unix.stackexchange.com/questions/120999/… Not: Bu KVM'nin (Parallels Desktop v8) BIOS önyükleme mesajı nedeniyle yalnızca BIOS (UEFI değil) olduğunu düşünüyorum.
Pro Yedekleme

0

Ben de aynı problemi yaşadım. Alex'in söylediği doğru. İlk önce fstab'ımı ayarladım ama bu işe yaramadı. Böylece grubumu kontrol ettim. Grub menüsüne erişim imkanınız varsa.

  • Linux'u, ne başlatmak istediğinizi ve hangilerinin sorun yarattığını seçin.
  • 'E' ye basın ve 'boot_image' veya 'boot ... root' arayın.
  • Uuid'i kontrol et .
  • Benim durumumda yanlıştı. İnitramfs'ta 'blkid' yazarak resim yapıyorum ve linux'umun hangi bölüme kurulduğunu uuid kullanıyorum.
  • Doğru uuidi blkid'den grub -> boot_image 'e geçmiş.

Bu benim sorunumu çözdü. Yeniden başlattıktan sonra linux'um diski kontrol etmek için daha uzun zamana ihtiyaç duyuyordu. Ama şimdi yine çalışıyor.

Umarım yardımcı olabilirim.

Saygılarımızla

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.