PDA

Bekijk de volledige versie : USB-stick koppelt automatisch op /tmp/harddisk



sikkepitje
18-10-2007, 12:50
Hallo allemaal, ik ben nieuw hier. Ik heb een Asus WL-500g Premium gekocht n.a.v. het Elektuurartikel en ik ben gaan hacken en ik vind het leuk!. Ik heb Olegs firmware 1.9.2.7-7g in de router geflasht.

Ik probeer de ipkg tutorial op macsat.com (http://www.macsat.com/macsat/content/view/22/29/) te volgen en alles gaat prima, behalve het koppelen van de USB-stick op de juiste map. De USB-stick wordt automatisch gemount op /tmp/harddisk na boot. Het genoemde /usr/local/sbin/post-boot script gebruik ik :

#!/bin/sh
# wait for /opt to mount
mount /dev/discs/disc0/part1 /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/part2

# Run all active services - active means starts with S
/opt/etc/init.d/rc.unslung

Het probleem lijkt te zijn dat de USB-stick automatisch op /tmp/harddisk wordt gemount, dus zodra dit script aan het werk gaat kan die partitie niet meer gemount worden.

Ik zou het script kunnen maken als volgt.

#!/bin/sh
# wacht tot /tmp/harddisk gemount is
i=0
while [ $i -le 30 ]
do
if [ -d /tmp/harddisk ]
then
break
fi
sleep 1
i=`expr $i + 1`
done

# dan koppel af en koppel opnieuw!
killall stupid-ftpd
umount /tmp/harddisk
mount /dev/discs/disc0/part1 /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/part2

# Run all active services - active means starts with S
/opt/etc/init.d/rc.unslung

Deze code vind ik nogal klunzig.
Hoe koppel ik de USB-stick automatisch op /opt? Hoe voorkom ik dat de USB-stick automatisch wordt gemount op /tmp/harddisk? Is er een betere manier?

Dutchman
18-10-2007, 13:01
Hoi,

Ik had hetzelfde probleem. Bij mij had het te maken omdat hij het USB device nog niet had gevonden tijdens de post-boot, dit probleem heb ik opgelost, door bovenaan "sleep 10s" neer te zetten:
dus:


#!/bin/sh
# wait for /opt to mount
sleep 10s
mount /dev/discs/disc0/part1 /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/part2

# Run all active services - active means starts with S
/opt/etc/init.d/rc.unslung


Je kan de waarde van 10s waarschijnlijk ook wel lager instellen ,dat moet je even uitvinden...
Succes.

sikkepitje
18-10-2007, 13:46
Bedankt voor de tip. Na nog een reboot was het verholpen.

Overigens ik denk dat het netter zou zijn om niet een hardgecodeerde "sleep 10" maar een wachtlus te maken die kijkt wanneer /dev/discs/disc0 aanwezig is. Zoiets als bijvoorbeeld:


#!/bin/sh
# wait for USB-stick to appear

i=0
while [ $i -le 30 ]
do
if [ -d /dev/discs/disc0 ]
then
break
fi
sleep 1
i=`expr $i + 1`
done

# continue to mount USB

mount /dev/discs/disc0/part1 /opt
# ....

vleutmans
29-10-2007, 14:51
Ik gebruik de wl500g in combinatie met een 8GB usb-stick :-)

Mijn asus houdt er nogal van om steeds de /tmp/harddisk te mounten, ondanks de extra 5 of 10 seconden wachttijd zoals beschreven in de thread.

Ik heb het als volgt in de post-boot opgelost:


in post-boot, voeg toe:

# rebuild correct filesystem, undo automount
umount -l /tmp/harddisk
rmdir /tmp/harddisk
mkdir /tmp/hdpart3
mkdir /tmp/swap
mount /dev/discs/disc0/part1 /tmp/swap
mount /dev/discs/disc0/part3 /tmp/hdpart3
# swap on
swapon /dev/discs/disc0/part1
umount -l /tmp/harddisk
rmdir /tmp/harddisk

Bij mij is de de enige manier om de automount ongedaan te maken.
Wie weet is dit ook voor anderen bruikbaar.

Groeten

Michel

DrChair
29-10-2007, 20:47
Bij mij is de de enige manier om de automount ongedaan te maken.
Wie weet is dit ook voor anderen bruikbaar.


Een soortgelijke methode gebruikte ik ook altijd, totdat firmware 1.9.2.7-7g uitkwam. Deze heeft support voor fstab.

Als je eenmalig in /etc/fstab aangeeft, hoe je de discs gemount wilt hebben, gaan ze nooit meer verkeerd.

zie mijn fstab als voorbeeld:


/dev/scsi/host0/bus0/target0/lun0/part1 /tmp/harddisk ext3 rw 0 0
/dev/scsi/host1/bus0/target0/lun0/part1 /opt ext3 rw 0 0


om te zorgen dat fstab wordt opgeslagen in je flash, moet je /etc/fstab toevoegen aan het bestand /tmp/local/.files