Bekijk de volledige versie : Externe HDD mounten
Hallo an alle,
NUn hab ich eine externe Festplatte bekommen. Die möchte ich nun in Kombination mit meinem WL500gp nutzen.
Auf der Festplatte hab ich folgende Partitionen:
disc part1 part5 part6 part7 part8 part9
part7 --> Swap
part8 --> 1GB für /opt
part9 --> 8.5GB für Daten
Hier mein Startscript:
#!/bin/sh
dropbear
# test if USB disc has been attached
# if not - then insert needed modules
#
# die folgenden 4 Rauten entfernen, wenn eine USB-Platte angeschlossen ist. Beim WL-HDD nicht notwendig, da IDE.
if [ ! -d /dev/discs ]
then
insmod scsi_mod && insmod sd_mod && insmod usb-storage && sleep 5s
fi
#Wait for /opt to mount
mount /dev/discs/disc0/part8 /opt
i=0
while [ $i -le 30 ]
do
if [ -d /opt/etc ]
then
break
fi
sleep 1
i=`expr $i + 1`
done
# Activate swap
swapon /dev/discs/disc0/part7
# Mount the rest
mount /dev/discs/disc0/part9 /tmp/hdd
# Run all active services - active means starts with S
/opt/etc/init.d/rc.unslung
Das komische ist, wenn ich den Router reboote, wird swap erstmal nicht eingebunden. Erst ca 1min nach dem login ist auch swap dabei. Ist das normal?
Aber was noch konfuser ist. Wenn ich mit df nachschaue welche Partitionen eingebunden sind. Sagt mir die Konsole folgendes:
[robert@router root]$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/root 2880 2880 0 100% /
/dev/discs/disc0/part5 209712476 165047172 44665304 79% /tmp/harddisk
/dev/discs/disc0/part8 1015680 32860 930212 3% /opt
Warum bitte wird part5 eingebunden?
Ich hoffe mir kann das wer sagen.
Danke im Voraus
Gruß Robert
newbiefan
08-09-2007, 12:17
@razer
Der wl500gp haengt tatsaechlich die partitionen welche er findet an /tmp/harddisk ein - Du findest ploetzlich /tmp/harddisk/part1 - partx
Der untere USB port wird zuerst abgefragt, da habe ich deshalb meine SystemHDD angehaengt. Dadurch ist es mir egal, wie und wo er die devs am oberen USB (mit HUB) einhaengt.
newbiefan
08-09-2007, 12:19
Auch ich habe mich tagelang damit herum geschlagen, dass mein Router
alle moeglichen Partitionen scheinbar willkuerlich mounted.
Wie ich durch try and error festgestellt habe, mounted der Router wie folgt:
Meine Hardware config:
WL500gp
am unteren USB eine HDD (120GB) mit 3 Parts: 1,2,3
wobei part1 auf /opt gemounted wird
part2 swap
part3 /tmp/harddisk
am oberen USB Anschluss ein USB Hub mit:
128MB Stick, part1
cardreader mit 2 GB Card, part1
HDD 200GB, part1
128MB Stick, part1
mount zeigt mir:
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/discs/disc0/part1 on /opt type ext3 (rw)
/dev/discs/disc0/part3 on /tmp/harddisk type ext3 (rw)
/dev/discs/disc1/part1 on /tmp/harddisk/part1 type vfat (rw,noatime)
/dev/discs/disc4/part1 on /tmp/harddisk/part2 type vfat (rw,noatime)
/dev/discs/disc6/part1 on /tmp/harddisk/part3 type vfat (rw,noatime)
/dev/discs/disc7/part1 on /tmp/harddisk/part4 type vfat (rw,noatime)
/dev/discs/disc6/part1 on /tmp/harddisk/share/dev1 type vfat (rw,noatime)
aber ein cat post-boot zeigt:
#!/bin/sh
dropbear
# test if USB disc has been attached
# if not - then insert needed modules
#
# Die folgenden 4 Rauten entfernen, wenn eine USB-Platte angeschlossen ist. Beim WL-HDD nicht notwendig, da IDE.
if [ ! -d /dev/discs ]
then
insmod scsi_mod && insmod sd_mod && insmod usb-storage && sleep 5s
fi
#Wait for /opt to mount
mount /dev/discs/disc0/part1 /opt
i=0
while [ $i -le 10 ]
do
if [ -d /opt/etc ]
then
break
fi
sleep 1
i=`expr $i + 1`
done
#activate swap and wait
swapon /dev/discs/disc0/part2
sleep 1
mount /dev/discs/disc0/part3 /tmp/harddisk
i=0
while [ $i -le 10 ]
do
if [ -d /tmp/harddisk/share ]
then
break
fi
sleep 1
i=`expr $i + 1`
done
#Version 0.91, network heli.lan
#start new http server at port 8080 for my private website
#considering perl start script at /opt/wwwp/cgi-bin
busybox_httpd -p 8080 -h /opt/wwwp
sleep 2
# Run all active services - active means starts with S
/opt/etc/init.d/rc.unslung
#######end post-boot################
Die anderen werden von mir nicht gemounted!! (disc1-7)
Auch ist disc6 aus scheinbar unerklaerlichen Grund 2x gemounted!!!
Was ich aus einem anderen Grund gemacht habe:
flashfs save && flashfs commit && flashfs enable && reboot
Seit dieser Zeit bleibt diese Config erhalten, die sys_hdd haengt am unteren USB, da diese zuerst eingebunden wird!!!!!
IST fuer alle wichtig!
Wenn man also einen anderen Mountpoint haben will, muss zuerst umount durchgefuehrt werden und danach erst nach eigenen Vorstellungen gemountet werden. Werde mir einen Script schreiben.
Das tmp Verzeichnis hat halt nun mal kein hdd Directory ^^
Das ist nach nem reboot so wie es immer ist also ziemlich leer! Dh, vorher ein mkdir machen und dann gehts auch!
Desweiteren sieht man eine swap Partition auch nicht im mount (no na net, ist ja net gemounted).
Bei mir sieht das mounting so aus (vorher sind noch ein paar andere Dinge, aber egal)
# Wait for /opt to mount
mount /dev/discs/disc0/part5 /opt
i=0
while [ $i -le 30 ]
do
if [ -d /opt/etc ]
then
break
fi
sleep 1
i=`expr $i + 1`
done
# Activate swap
swapon /dev/discs/disc0/part1
# Create folders for mounting
mkdir /tmp/disk1
mkdir /tmp/disk2
# Mount the rest
mount /dev/discs/disc0/part6 /tmp/disk1
mount /dev/discs/disc0/part7 /tmp/disk2
Und schon hat man die HDDs dort wo man will ;)
Und part1 taucht halt beim mount Befehl auch nirgends auf!
PS.: Es muss kein unmount Befehl gemacht werden! Was noch wichtig ist, dass die flashfs befehl (glaube der enable) automatisch die Verzeichnisse dann nachmounted! War bei mir als ich im post-boot das drinnen hatte! Aufeinmal hatte ich alles doppelt gemounted!
newbiefan
08-09-2007, 18:57
Hi The29
Also, ich habe keine Probleme damit....:)
Es geht in meinem Fall nur darum, dass an meinem USB Hub fallweise Sticks usw. angeschlossen werden, welche sofort im z.Bspl. Samba auftauchen muessen (sollen). Das funzt ohnehin hervorragend.
Swap ist schon klar, darueber gibt es meinerseits keine Beschwerde, dass ein mount mir keinen Speicher(Ram) zeigt.
Und wenn Du nach dem Booten einen Stick usw. einsteckst, hilft Dir die Post-Boot gar nicht mehr, da taucht der Stick eben in /tmp/harddisk/partx auf. Leider weiss ich nicht, wo das automount erfolgt, ansonsten wuerde ich das an meine Wuensche anpassen. Und um trotzdem die Moeglichkeit zu haben nach dem normalen booten einen (nach dem Booten einen eingesteckten)Stick auf ein beliebiges Verzeichnis zu mounten, bleibt nur ein unmounten uebrig (wenns sauber sein soll). Deshalb brauche ich einen Script, den habe ich zwar noch nicht fertig aber den ganz groben Entwurf trotzdem als Anhang. Vielleicht weiss jemand einen anderen (kuerzeren) Weg.
Cron muss mir einen kurzen Script starten, der mir das alte /tmp/Harddisk Verzeichnis miit dem neuen vergleicht und das Automountscript bei Ungleichheit startet.
newbiefan
08-09-2007, 19:11
Naja, es geht auch mit Sym.Links, aber das wird sehr schnell unuebersichtlich.
Ausserdem weiss ich noch nicht wie man das ordentlich bei einem halt/reboot hinbekommt, deshalb der doch etwas groessere Aufwand.
Leider bin ich kein Linux Guru, ich wuerde mich eher als Noob einstufen.
newbiefan
11-09-2007, 22:47
Nun, wie angekuendigt habe ich mir einen Script geschrieben, welcher mir die angeschlossenen Geraete automatisch (nach Aufruf) in einen vorgegeben Folder mountet.
In den naechsten Tage werde ich noch einen Vergleichscript und den dazu Cron-Aufruf schreiben.
Dazu habe ich noch eine Frage, vielleicht kann sie mir irgend jemand beantworten:
wie werden die angeschlossenen hosts unter /dev/scsi/host0 - hostx eingetragen, bzw. von welchem Script od. Prgm.$
Hier der Script atmnt (im Anhang), am besten in /opt/sbin plazieren und ausfuehrbar machen, have fun - Verbesserungsvorschlaege gerne willkommen.
Hi newbiefan,
nur eine kleine Anregung:
Ich versuche immer alles zentral zu loggen. Daher würde ich empfehlen nicht mit echo in ein eigenes logfile, sondern mit "logger" in das syslog zu loggen.
Ist natürlich Geschmackssache.
wengi
newbiefan
12-09-2007, 17:36
Hi Wengi,
hast Du eine gute Beschreibung vom logger?
man kann ja leicht andere Logger implementieren.
Ach ja: weisst Du wie die Hosts in /dev/scsi oder besser von welchem Prgm od. script diese angelegt werden?
LG
NBF
Von hier (http://linux.die.net/man/1/busybox)
logger
logger [ OPTION ]... [ MESSAGE ]
Write MESSAGE to the system log. If MESSAGE is omitted, log stdin.
Options:
-s Log to stderr as well as the system log
-t TAG Log using the specified tag (defaults to user name)
-p PRIORITY Enter the message with the specified priority
This may be numerical or a ''facility.level'' pair
Example:
$ logger "hello"Und hier mal meine wirkliche post-boot:
#!/bin/sh
logger -t post-boot "START OF POST-BOOT"
logger -t post-boot "starting dropbear:"
dropbear
# test if USB disc has been attached
# if not - then insert needed modules
#
# Remove the following # if NOT using WL-HDD
#if [ ! -d /dev/discs ]
#then
#insmod scsi_mod && insmod sd_mod && insmod usb-storage && sleep 5s
#fi
#Wait for /opt to mount
logger -t post-boot "mounting /opt:"
mount /dev/discs/disc0/part2 /opt
i=0
while [ $i -le 30 ]
do
if [ -d /opt/etc ]
then
break
fi
sleep 1
i=`expr $i + 1`
done
logger -t post-boot "Set time from RTC:"
# activate RTC. Remove this if not using WL-HDD!
# remove /dev/rtc with old parameters
rm /dev/rtc
# mknod with new parameters
mknod /dev/rtc c 10 135
# insert module
insmod /opt/lib/modules/2.4.20/rtc.o
# set time from RTC
if [ `date +%s` -lt 10000 ]; then
#we are before Jan 1 1970, 3am, the clock has not been set up
# /bin/cat /dev/rtc|(IFS=:;read Y M D d h m s;/bin/date -s $M$D$h$m$Y.$s)
cat /dev/rtc|(IFS=:;read Y M D dow h m s
# dow is day of week, 0=sunday
date $M$D$h$m$Y.$s)
fi
# Activate swap
logger -t post-boot "activating swap:"
swapon /dev/discs/disc0/part1
# Mount /tmp/harddisk
logger -t post-boot "mounting /tmp/harddisk:"
mount /dev/discs/disc0/part3 /tmp/harddisk
# remove unused modules
logger -t post-boot "removing unused modules:"
# Printer on USB
rmmod printer
# USB Mass Storage Devices. Can be disabled for WL-HDD because of ide.
rmmod usb-storage
# No USB Devices, no ohci
rmmod usb-ohci
# What does sd_mod do? WL-HDD does not need it...
rmmod sd_mod
# WLAN not needed
rmmod wl
# Only client in network:
rmmod ipt_NETMAP
rmmod ip_nat_starcraft
# Sleep 5 secs for all modules to unload
sleep 5s
# Run all active services - active means starts with S
logger -t post-boot "running rc.unslung:"
/opt/etc/init.d/rc.unslung
# Write DNS Server because of bug in firmware when not using DHCP
logger -t post-boot "inserting nameserver to resolv.conf:"
echo "nameserver 192.168.201.1" > /etc/resolv.conf
logger -t post-boot "END OF POST-BOOT"
Wegen /dev/scsi: Keine Ahnung. Mein Tip: Kernel oder Treiber....
wengi