Önyükleme sırasında bir döngü cihazı nasıl kurulur?


14

Önyükleme sırasında bir döngü aygıtı ayarlamak istiyorum. Bunu yapmanın en iyi yolunun ne olduğunu merak ediyorum.

Google'da aradım. Bazıları bir udev kuralı eklemeyi söylerken, bazıları bir komut dosyası yerleştirmeyi /etc/init.d, bazıları da initramfları değiştirdiğini söylüyor .

Peki bunu yapmanın en iyi veya doğru yolu nedir? Lütfen bazı detayları verebilir misiniz (nasıl yapılacağı hakkında)?

Teşekkür ederim.


Ben gitmek istiyorum /etc/init.d/something, ya da /etc/rc.local, ama işe yarayan herhangi bir yöntem ile kalmak öneririz.
enzotib

6
Ne için? Bir dosyanın önyükleme zamanında monte edilmesini istiyorsanız, döngü seçeneğiyle / etc / fstab dosyasına eklemeniz yeterlidir; mount, geri döngü aygıtını sizin için yapılandırmaya özen gösterir.
psusi

@psusi: Tavsiyeniz için teşekkür ederim, ancak amacım için montaj yeterli değil ve aslında dosya basitçe monte edilemiyor. Bir bölüm görüntüsü yerine bir disk görüntüsüdür. Ve VirtualBox sanal bir disk yapmak için kullanmak için döngü cihazın tam adını bilmek gerekir. (Bu tür bir sanal diski, sanal makine ile ana makine arasında dosya paylaşmanın daha kolay olduğunu düşünerek
yapıyorum

4
Sanal makineyi geridöngü aygıtı yerine dosyaya yönlendirebilirsiniz. Ayrıca sanal makineyi asla çalıştırmamanız (veya askıya almamanız) ve dosya sistemini aynı anda ana bilgisayara takmamanız için çok dikkatli olmanız gerekir, aksi takdirde fs'yi bozarsınız. Bu nedenle, ana bilgisayarın nfs veya samba veya sshfs üzerinden paylaştığı konuk erişim dosyalarına sahip olmak için ağ iletişimi kullanmak çok daha iyi bir fikirdir.
psusi

@Roun: Dosyadaki bölümler yine de bağlanabilir, ancak dosyanın başından itibaren bölümün sektör ötelemesini belirtmeniz gerekir (örn mount /disk.img /mnt -o loop,offset=2048. İlk bölüm için). Ofsetler döngü cihazı kurulduktan sonra ayrıştırılmış veya fdisk kullanılarak bulunabilir (bunun için aşağıdaki cevabım bölümüne bakınız).
zanfur

Yanıtlar:


7

Ubuntu'da başlangıç ​​öğelerini yapmanın en az üç "uygun" yolu vardır (yalnızca monte etmek istemediğinizi varsayar), burada azalan tercih sırasına göre listelenir:

  1. /etc/init/*.conf (Sonradan görme)
  2. /etc/init.d/* (Sysvinit)
  3. /etc/rc.local (çalışma düzeyi değişiklik komut dosyası)

Udev kurallarını kullanma olasılığı da vardır, ancak kıvrık olacaktır. Buna karşı tavsiye ederim. Sisvinit betiği böyle küçük bir şey için aşırıya kaçmış, bu yüzden diğer iki seçeneğe odaklanacağım. Runlevel değişiklik komut dosyası en basit (en az tercih edilen olsa da), bu yüzden orada başlayacağım.

/etc/rc.localDosya yalnızca tarafından yürütülür /etc/init.d/rc.local(varsayılan olarak) olduğu sysvinit komut, çalışma seviyesi "açık" herhangi bir normal geçiş üzerine son infaz (normalde önyükleme örneğin zaman, ancak kapatmaya veya kurtarma moduna değilken). Önyükleme aygıtının kurulumunu uygulamak için, /etc/rc.localdosyanızın arandığını /srv/diskimageve /dev/loop0döngü aygıtı olarak kullanmak istediğinizi varsayarak bunu sonuna ekleyin :

losetup /dev/loop0 /srv/diskimage

Gerçekten hepsi bu kadar. Tabii ki, dosya adlarını kurulumunuzda en iyi olanla değiştirin.

Bu konuda biraz daha spesifik olmak istiyorsanız, bunun için onu tutan dosya sistemi kurulduktan sonra ayarlanan bir Upstart işi oluşturabilirsiniz. Dosyanızı /srviçeren bağlama noktası olduğunu varsayarak, aşağıdaki örnek verilebilir diskimage:

description     "Setup loop devices after filesystems are mounted"

start on mounted MOUNTPOINT=/srv
task
exec losetup /dev/loop0 /srv/diskimage

Bu, kavramsal olarak takip edilecek kadar basit olmalıdır: İlk satır sadece insan okuyucular için bir yorumdur ve /srvdosya sistemi yüklenene kadar beklemek , losetup işlemini yürütmek ve işlem başarıyla tamamlandığında kendinizi tamamladığınızı düşünmek için Upstart'a talimatlar (a " görev ", kalıcı bir hizmetin aksine). Bu içerikleri bir dosya eşleştirmesine koymanız yeterlidir /etc/init/*.conf. /etc/init/losetup.confKendimi seçerdim .

Bu kadar /etc/rc.localbasit bir şey için Upstart işlerinin avantajları küçük ama önemlidir. Birincisi, /etc/rc.localkullanımdan kaldırıldı ve bu günlerde "işleri halletmek için sadece dağınık bir kum havuzu" olarak kullanımı hemen hemen herkes tarafından kaşlarını çattı. Kullanıldıktan sonra kaşlarını çatmanın diğer nedenleri arasında, bu dosyayı kullanan bazı programlar sadece içeriğin üzerine yazacak ve aynı dosyaya gitmesi gereken farklı komut dosyalarını uzlaştırmak zor olacaktır. İkincisi, Sonradan görme aslında dosya sistemi montaj bir sorun varsa yani, (emin dosya sistemi ilk olarak monte edilir yapma) sizin için kontrol bağımlılığını kolları olmazdöngü aygıtını kurmaya çalışın .... ama çözdükten ve monte ettikten sonra olacak. Üçüncüsü, Upstart çok daha esnektir: Örneğin, kullanılmayan bir döngü cihazı bulmak için yeterince akıllı olabilir ve "MOUNTPOINT" değişkenini nasıl kullandığımıza benzer şekilde, diğer uptart işlerinde kullanmak için bu döngü cihazını "yayabilir" yukarıdaki bu örnekte.


/Etc/init/losetup.conf nasıl çağrıldı ??? Benim için çalışmıyor ...
İmran

1

@Psusi'nin belirttiği gibi, en kolay yol aşağıdaki satırı /etc/fstabdosyanıza eklemektir

/path/to/loop/device       /path/to/mount/point       auto       loop       0 0

Şimdi yeniden başlatın veya mount -aroot olarak çalıştırın . Daha sonra cihaz monte edilmelidir. Bunu ile kontrol edebilirsiniz lsblk.

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.