Istnieją co najmniej trzy „odpowiednie” sposoby uruchamiania rzeczy w Ubuntu (zakładając, że nie chcesz po prostu montować), wymienione tutaj w malejącej kolejności preferencji:
/etc/init/*.conf (Dorobkiewicz)
/etc/init.d/* (sysvinit)
/etc/rc.local (skrypt zmiany poziomu pracy)
Istnieje również możliwość użycia reguł udev, ale będzie zawiłe. Odradzam to. Skrypt sysvinit to przesada w przypadku tak małej rzeczy, więc skupię się na pozostałych dwóch opcjach. Skrypt zmiany poziomu pracy jest najprostszy (choć najmniej preferowany), więc zacznę od tego.
/etc/rc.localPlik jest po prostu wykonywane przez /etc/init.d/rc.localskrypt sysvinit, który jest (domyślnie) wykonany ostatni po przełączeniu na każdy normalny „na” poziomie działania (np podczas rozruchu normalnie, ale nie podczas zamykania lub przejść do trybu odzyskiwania). Aby wdrożyć konfigurację urządzenia rozruchowego, po prostu dodaj to na końcu /etc/rc.local, zakładając, że plik jest wywoływany /srv/diskimagei chcesz użyć go /dev/loop0jako urządzenia pętlowego:
losetup /dev/loop0 /srv/diskimage
To naprawdę wszystko. Oczywiście zastąp nazwy plików tym, co działa najlepiej w twojej konfiguracji.
Jeśli chcesz być bardziej szczegółowy, możesz utworzyć dla niego zadanie Upstart, które konfiguruje je po zamontowaniu systemu plików, który go trzyma. Przykład może wyglądać następująco, zakładając, że /srvbył to punkt montowania zawierający Twój diskimageplik:
description "Setup loop devices after filesystems are mounted"
start on mounted MOUNTPOINT=/srv
task
exec losetup /dev/loop0 /srv/diskimage
Powinno to być na tyle proste, aby można je było zastosować koncepcyjnie: pierwszy wiersz jest tylko komentarzem dla ludzkich czytelników, a instrukcje Upstart czekają, aż /srvsystem plików zostanie zamontowany, wykonają proces losetup i uważają, że jesteś skończony, gdy proces zakończy się pomyślnie („ zadanie ”, w przeciwieństwie do usługi, która jest trwała). Wystarczy umieścić tę zawartość w dopasowanym pliku /etc/init/*.conf. Sam bym wybrał /etc/init/losetup.conf.
Zalety zadań Upstart w stosunku /etc/rc.localdo tak prostych rzeczy są niewielkie, ale ważne. Po pierwsze, /etc/rc.localjest przestarzałe, a jego użycie jako „bałaganu w piaskownicy, aby załatwić sprawę”, jest obecnie lekceważone przez prawie wszystkich. Wśród innych powodów marszczenia brwi po jego użyciu, niektóre programy, które używają tego pliku, po prostu nadpisują zawartość i trudno jest pogodzić różne skrypty, które muszą przejść do tego samego pliku. Po drugie, Upstart faktycznie obsługuje sprawdzanie zależności (upewniając się, że system plików jest zamontowany jako pierwszy), więc jeśli wystąpi problem z montażem systemu plików, nie będziespróbuj skonfigurować urządzenie pętli .... ale kiedy to rozwiążesz i zamontujesz. Po trzecie, Upstart jest znacznie bardziej elastyczny: możesz na przykład sprawić, by był wystarczająco inteligentny, aby znaleźć nieużywane urządzenie pętli i „emitować” to urządzenie pętli do użycia w innych zadaniach upstart, podobnie jak w przypadku użycia zmiennej „MOUNTPOINT” w tym przykładzie powyżej.
/etc/init.d/something, lub/etc/rc.local, ale sugeruję pozostać przy jakiejkolwiek metodzie, która działa.