Mandriva Linux systemd kurulduktan sonra önyükleme yapamıyor


1

Kullanarak yerinde yükseltilmiş bir Mandriva Linux sistemim var urpmi 2010.0 sürümünden 2010.1'e ve ardından 2011.0'a kadar. Birkaç küçük sorunla karşılaştım ama baş edemediğim hiçbir şey yoktu.

Birkaç hafta önce, Mandriva güncellemesi beni güncellemek için bilgilendirdi shorewall, Ayrıca değiştirmek zorunda kaldım sysvinit ile systemd ve systemd-sysvinit. Doğal olarak, güncelleyicinin önyükleme sistemi kadar kritik bir şeye sebepsiz yere dokunma konusunda isteksizdim, bu yüzden erteledim. Doğal olarak, Mandriva güncelleyici uygulaması beni rahatsız etmeye devam ediyordu. Doğal olarak, sonunda pes ve kabul etti. Ve, doğal olarak, sistemimin kendi kendine başlayamayacağı bir karışıklık yarattı.

Normalde başlatılır, birkaç mesaj gönderilir ve sonra bu formatta birçok mesaj alıyorum:

Starting XXXX aborted because a dependency failed.

XXXX dosya sistemiyle ilgili bir şey olduğunda, fsck çağrı veya bir dosya sistemi Beni, kısa sürede başarısız olan bağımlılığın belirginleştiği kök kabuğa düşürüyor: çoğu MD dizisi başlatılmadı. El ile yürütme

# mdadm -As
# mount -a
# systemctl default

Bu sırada sistemin önyükleme işlemini tamamlamasına olanak sağlar.

Bölümlere bölünmüş birkaç fiziksel sürücüm var ve bunlar birkaç RAID-1 ile birleştiriliyor (ör. /boot ) ve RAID-5 ( /, takas ve hemen hemen her şey) diziler. Bölümler ve diziler ile içerdikleri dosya sistemleri manuel olarak oluşturulduktan sonra Mandriva Linux kuruldu. Orada hiçbir not sorunu ve her şeyin iyi çalıştığı systemd geldi.

ben düşünmek bu konuyu bir dereceye kadar izledim. Yaşlı sysvinit çalışan sistem /etc/rc.d/rc.sysinit Mandriva tarafından sağlanan şekilde, bu satırı içerir:

MDADM_RETURN=`/sbin/mdadm -As --auto=yes --run 2>&1`

bu, belirtilen herhangi bir MD dizisini başlatır. /etc/mdadm.conf bu başlatılmadı. Söyleyebileceğim kadarıyla, bu dosya daha sonra kullanılmıyor system kuruldu ve yukarıdaki satır bu satırla değiştirildi. /lib/systemd/fedora-storage-init:

[ -r /proc/mdstat -a -r /dev/md/md-device-map ] && /sbin/mdadm -IRs

Ne yazık ki. sistemim eksik görünüyor /dev/md/md-device-map dosya, yani mdadm yürütülmedi. Düzenleme gibi bu sorunu "düzeltmenin" birkaç yolunu düşünebilirim. systemd komut dosyaları veya benim /boot/initrd.img Tüm MD dizilerini başlatmak için, ancak bir sonraki paket güncellemesinden kopmayacak şekilde yapmayı tercih ederim.

  • Formatı nedir /dev/md/md-device-map ve onu nasıl oluşturabilirim? Bu dosya yaygın mı, örn. daha yenisiyle mdadm sürümleri veya Fedora / Mandriva'ya özgü bir şey mi? Fedora forumlarında birkaç örnek gördüm ama sağlam bir şey yok.

  • Bu önyükleme hatasını düzeltmek için "uygun" yol nedir? Kaçınılabilirsem, beyin ameliyatına başvurmamayı tercih ederim.

  • Neden, neden, neden "Yapılmadıysa, tamir etmeyin!" maxim? (Evet, bu retorik bir ...)

Yanıtlar:


1

Bu sorunu izlemeyi başardım. /dev/md/md-device-map görünüşe göre mdadm Mandriva sistemim kullanırken Fedora sistemlerdeki cihaz harita dosyasını /dev/.mdadm/map yerine. bu yüzden /lib/systemd/fedora-storage-init komut dosyası başlatılamadı mdadm yanlış yere bakıyordu çünkü.

Bu komut dosyasını düzenlemek ve gelecekteki bir paket güncellemesinde değişiklikleri kaybetme riski yerine, kendi komut dosyasını ekledim:

$ cat /lib/systemd/mdadm-array-start 
#!/bin/bash

# Start any MD RAID arrays that have not been started yet
[ -r /proc/mdstat ] && /sbin/mdadm --assemble --scan

exit 0

Ayrıca bir birim dosyası oluşturdum. systemd:

$ cat /lib/systemd/system/mdadm-array-start.service 
[Unit]
Description=Start MD arrays
DefaultDependencies=no
Conflicts=shutdown.target
After=fedora-wait-storage.service
Before=fedora-storage-init.service local-fs.target shutdown.target
Wants=fedora-wait-storage.service

[Service]
ExecStart=/lib/systemd/mdadm-array-start
Type=oneshot
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=basic.target

Sonra sadece hizmeti etkinleştirdim:

# systemctl enable mdadm-array-start.service
ln -s '/lib/systemd/system/mdadm-array-start.service' '/etc/systemd/system/basic.target.wants/mdadm-array-start.service'

Bu, herhangi bir MD dizisinin bir yönetici tarafından müdahale edilmeden başlatılmasını sağlar.


Bilginize: kullanıcı tarafından oluşturulan birimler gitmek gerekir /etc/systemd/system.
grawity

@grwity: Doğru, beri /etc/systemd/ birimler önceliklidir. Ancak benim durumumda, birimimi bir hata düzeltme yaması gibi sistemin bir parçası olarak görüyorum ...
thkala

Buradaki ayrım "sistemin bir parçası" değildir ya da değildir; bunun yerine "kullanıcı / sysadmin tarafından elle yüklenen" yerine "paket yöneticisi tarafından bir paketten yüklendi".
grawity

1
@grawity: err ... benim kural oldu Paket yöneticisini kullanarak yükledim ... 4 saatlik bir araba yolculuğumda sistemimi öldürebilecek talihsiz aksiliklerden kaçınmanın tek yoluydu ... rpm Birileri eklemelerimin üzerine yazmaya çalışırsa sızlanmaya başlayacağım ...
thkala
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.