Raspberry Pi (jedną sztukę) wykorzystuje również jako serwer DLNA. Wprawdzie mój TV ma taką funkcję, mój domowy router ma taką funkcję, a nawet konsola – to jednak MiniDLNA (obecnie jako ReadyMedia) na Raspberry Pi jakoś najbardziej mi przypadło do gustu (dodatkowo nie ma problemów z różnymi formatami mediów, ani z napisami).
Oczywiście multimediów nie trzymam na karcie pamięci, a na dysku USB – ale sam dysk nie jest wpięty bezpośrednio do Pi (nawet nie przez aktywnego HUBa) ze względu na relatywnie mały transfer jaki wyciąga tak podłączony dysk (USB 2.0 + LAN 100 Mbps, i to jako jeden układ), co przy oglądaniu/słuchaniu nie ma znaczenia, to przy kopiowaniu materiałów już jak najbardziej.
To wszystko (montowanie zasobów sieciowych – Samba) oczywiście odbywa się przy starcie systemu, tak by było gotowe przed uruchomieniem się procesu MiniDLNA.
I wszystko pięknie działało za czasów Debiana 7 (Wheezy), a przestało wraz z nadejściem Debiana 8 (Jessie), zarówno jako aktualizacja systemu, jak i nowa instalacja, więc postanowiłem sięgnąć po alternatywne rozwiązanie…
Spis treści w artykule
Automatyczne montowanie zasobów sieciowych w Raspbian/Debian 8 Jessie
Z samym MiniDLNA nie było większych problemów (poza zmianą nazwy procesu), to dyski sieciowe za nic nie chciały się podłączyć prawidłowo podczas startu systemu – nie pomogły zaklęcia w pliku „fstab” ani „rc.local” (ręczne wywołanie już po starcie normalnie montowało zasoby, więc tu raczej wszystko OK).
Przeszukałem internet – nie tylko ja miałem taki problem… Stron z poradami pełno, tyle, że w większości ciągle pojawiały się te same – a dodatkowo, u mnie żadna albo nie chciała działać, lub działanie pozostawiało wiele do życzenia.
LSBInitScripts przychodzi z pomocą
Tak więc trzeba było podejść do sprawy trochę mniej konwencjonalnie, i napisać skrypt, który będzie się uruchamiał automatycznie podczas startu – jako usługa (LSBInitScripts).
Nie będę tutaj opisywał podstaw – jeśli ktoś zainteresowany to zapraszam do wcześniejszych wpisów, w tym np. tego dotyczącego automatycznego uruchamiania skryptów/poleceń podczas startu systemu Linux.
Przykładowy skrypt – przerobiony tak, by można go było upublicznić – wygląda tak:
#!/bin/bash
### BEGIN INIT INFO
# Provides: mount-smb
# Required-Start: $all
# Required-Stop: $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Mount SMB @ system start + miniDLNA start
# Description: Mount SMB @ system start + miniDLNA start
### END INIT INFO
## -----
## Script URL:
## https://webinsider.pl/add/download/?link=mount-smb
## Info URL (@PL):
## http://Webinsider.pl/debian-8-jessie-automatyczne-montowanie-zasobow-sieciowych
## -----
NAME=mount-smb
SCRIPTNAME=/etc/init.d/$NAME
COMMANDS="{start|stop|restart|install|uninstall}"
$USER_NAME= webinsider.pl # Samba user name
$USER_PASSWORD= 123456 ;-) # Samba user password
REMOTE_FS= //10.0.0.1/hdd01 # Remote dir
LOCAL_FS= /media/smb01 # Local mount dir
f_install()
{
sudo cp -r $0 /etc/init.d
# Debian 7 Wheezy:
#sudo update-rc.d $NAME defaults
# Debian 8 Jessie:
sudo insserv $NAME
sudo /etc/init.d/$NAME start
sudo ln -s /etc/init.d/$NAME /bin/$NAME
exit 0
}
f_uninstall()
{
sudo /etc/init.d/$NAME stop
sudo update-rc.d $NAME remove
sudo rm /etc/init.d/$NAME
sudo rm /bin/$NAME
exit 0
}
f_start()
{
sudo mount -t cifs -o username=$USER_NAME,password=$USER_PASSWORD $REMOTE_FS $LOCAL_FS
#sudo service minidlna start
exit 0
}
f_stop()
{
sudo umount -l $LOCAL_FS
exit 0
}
# f_restart() only restart) ...
case "$1" in
start)
f_start
;;
stop)
f_stop
;;
restart)
f_stop
f_start
;;
install)
f_install
;;
uninstall)
f_uninstall
;;
*)
echo "Use: "$SCRIPTNAME $COMMANDS
exit
;;
esac
exit 0
MiniDLNA
A jeśli tak jak ja chcecie dodatkowo – po zamontowaniu zasobów sieciowych – uruchamiać serwer miniDLNA, to wystarczy lekko zmodyfikować sekcję „f_start”, dodając:
sudo service minidlna start
Czyli całość (sama sekcja „f_start”) będzie wyglądała tak:
f_start()
{
sudo mount -t cifs -o username=$USER_NAME,password=$USER_PASSWORD $REMOTE_FS $LOCAL_FS
sudo service minidlna start
exit 0
}
Pamiętajcie tylko by w takiej sytuacji wyłączyć automatyczny start usługi miniDLNA:
sudo update-rc.d -f minidlna remove
Konfiguracja
Pamiętajcie tylko, by wpisać swoje ustawienia/dane między te 2 linijki:
# START CONFIG HERE:
# END CONFIG
Po instalacji konfiguracja możliwa jest za pomocą polecenia:
sudo nano /etc/init.d/mount-smb
I ew restart:
sudo /etc/init.d/mount-smb restart
Instalacja
Skrypt możecie utworzyć np. za pomocą polecenia:
sudo nano mount-smb
Otworzy Wam się edytor, do którego należy wkleić kod skryptu (zmieniając odpowiednio ustawienia).
Możecie też pobrać skrypt za pomocą polecenia:
sudo wget https://webinsider.pl/add/download/?link=mount-smb -O mount-smb
I pamiętajcie o edycji ustawień/parametrów:
sudo nano mount-smb
Następnie wystarczy zapisać i zainstalować:
sudo chmod +x mount-smb
sudo mount-smb install
I to właściwie tyle – sprawdziłem u siebie, wreszcie rozwiązanie które w 100% działa :-)
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
Dzięki WIELKIE! Od tygodnia walczę z tym problemem. Zastanawia mnie tylko jedno. Dlaczego rzeczy proste, stają się od jakiegoś czasu bardziej skomplikowane? Czy o to w tym wszystkim chodzi?
Przy okazji swojej walki z montowaniem zasobów sieciowych po instalacji nowej wersji Raspbiana (opartego na Debian 8 Jessie) – ale już po zastosowania skryptu na swojej Malinie – zauważyłem, że w aplikacji „raspi-config” pojawiła się opcja „wait for network at Boot”.
Bardzo możliwe, że w ten sposób również można uporać się z tym problemem, ale z braku czasu nie sprawdzałem tego jeszcze, choć w „zadaniach do zrobienia” cały czas wisi mi ten temat. Jak masz ew. wolną chwilę i chęć, to mógłbyś przetestować, a ja wtedy – już bez oczekiwania na swoje testy – dodam taką informację do wpisu.
Sprawdziłem sprawę z ustawieniem „wait for network at Bot” i jest tak. Działa! Dla potomnych: Wejście do konsoli jako root oczywista, wpisujemy raspi-config i z menu wybieramy „Wait for Network at Boot”.
Zaznaczamy Slow Wait for network…” potem OK i wtedy można dopisać stosowną ścieżkę do „rc.config” przed „exit 0”. Np.
„mount -t cifs -o guest //Adres_zasobu/katalog_udostępniony /gdzie_montujemy”.
Reboot i to wszystko.
Swoją drogą, czułem że to coś jest z interfejsem sieciowym, bo tak mi to wychodziło z logów, ale widać miałem jakąś pomroczność jasną i tej drogi się nie trzymałem. To tylko dowodzi, że co ja nie widzę, nie znaczy że inni nie widzą.
Dziękuję za pomoc. Na pewno dobrze zapamiętam tę lekcję.
No to ja mogę już zaznaczyć test jako zrobiony (jedno zadanie mniej na długiej liście), jutro też zaktualizuje wszystkie związane z tematem wpisy.
Sam też na ten element trafiłem po napisaniu skryptu i wpisu – po prostu do raspi-config właściwie nie zaglądam (przyzwyczajenie z VPSów, gdzie nie ma takiego narzędzia).
Dla pewności, przed chwilą, dokonałem dwóch czystych instalacji Raspbian-a i dodatkowo dodałem zasób na windows XP, innego nie posiadam. Zrobiłem wszystko tak jak opisałem i raz za razem wszystko pięknie się łączy. Teraz idę walczyć z bluetooth-em. Widzi np. telefon czy inne ustrojstwo po wydaniu komendy „hcitool scan”, ale urządzenia twierdzą że nie ma niczego w eterze. Prawdopodobnie mam uszkodzoną Malinkę :(
Będę walczył aż się dowiem prawdy.
Kiedyś bawiłem się z BT na Malinie, m.in. do wykrywania domowników (a konkretnie telefonów), ale było to z 2 czy 3 lata temu, i musiałyby zetknąć do notatek.
Ale tak na szybko, z pamięci – ustawiłeś widoczność Pi dla nieznanych urządzeń? Bo może tu masz źródło problemu…
I wszystko jasne. Mam uszkodzoną malinę. Inny egzemplarz działa bez problemu.
Dziękuję za pomoc.
Szkoda, ale być może to dobry pretekst do kupienia Raspberry Pi 3, akurat pod darmowego Windows 10 IoT :-)
Sęk w tym, że to właśnie jest Pi3. Zamówiłem ją w piątek, jak tylko o niej przeczytałem na dobrychprogramach. Coś mnie w niej urzekło. :) Na szczęście znalazłem paragon i już ją wysłałem. Nie robili problemów z wymianą.
A to faktycznie szkoda, ale dobrze, że nie było problemów z wymianą :-)