Diskové pole NSS4000
Diskové pole NSS4000
Dostalo se mi ruky diskové pole NSS4000 od firmy Linksys. Po pokusu o provedeni upgradu firmwaru, který měl vyřešit problém s připojením k AD ve Windows serveru 2008, blikaly pouze led diody.
Protože jsem sám měl před několika
lety problém s diskovým polem NSS6000 této firmy, chtěl jsem se
na to podívat podrobněji. Toto není návod, uvádím tady takové
stručné poznámky.
HW – deska má označení BTI ML-1 a
moc toho o ní na webu nenajdete.Procesor PMC-Sierra RM7035C, PM8172
system controller, NEC UPD720101 USB 2.0 controller,
SafeXcel 1741 security co-processor,
IT8907E USB flash controller. Více na www.glaver.org.
HW nss4000 |
Důležité jsou konektory J29 pro
připojení RS-TTL a J34 pro jumper, který umožní nabootování
jako root.
Metoda, kterou uvádějí tvůrci pro
obnovu firmwaru diskového pole v dokumentu USB Stick Recovery
Instructions.pdf se mi zdála divná. Ten, kdo prováděl upgrade
firmware na tomto diskovém poli, se prý o to také pokoušel.
Zasouváním a vysouváním a obětovným zasouváním různých
flash disků chtěl obnovit firmware, ale bez výsledku.
Takový postup obnovy firmware, kdy čekám na blikání ledky a pak
mám 10s na vytažení flash disku jsem ještě neviděl.
Po připojení přes J29, pin 2 - RXD,
pin 3 – TXD, 4 – GND je terminál putty nastaven na 115200,8,no
parity,1,no control.
Po zpuštění pole se dostávám do stavu blikajících diod a restartů.
konektor pro RS232-TTL |
Po zpuštění pole se dostávám do stavu blikajících diod a restartů.
Konzola - připojeni |
Sám jsem vyzkoušel popisovanou metodu
bootování z flash disku a zjistil jsem, že firmware, který v
zařízení byl, nějaké bootování z jiného disku neřešil.
scsi4 : SCSI emulation for USB Mass
Storage devices
Vendor: Generic Model: STORAGE
DEVICE Rev: 9407
Type: Direct-Access
ANSI SCSI revision: 00
scsiglue: Trying to match USB boot
device params:
Parent device number: [1]
Parent device port: [2]
Device bus number: [1]
Device state: [7]
Device speed: [3]
scsiglue: This USB device is not boot
device.
BOOT firmware pole je PMON2000. V
souboru Recovery bootloader pmon-PM74101-B024-recovery.zip je
pmon-PM74101-B024-recovery.elf což je PMON2000 3.1.22-B024
(PM74101-usbfix).
Zkoušel jsem tento PMON zavést a
bootovat z něho, ale také bez výsledku. Žádná obnova firmware
nenastala.
Tak jsem pokračoval.
Configuration [PM74101,EL,NET,SCSI]
Version: PMON2000 3.1.22-B024 (PM74101)
#0: Wed Sep 26 11:13:30 PDT 2007.
Supported loaders [srec, elf, bin]
Supported filesystems [net, fat, disk,
tty, ram]
This software may be redistributed
under the BSD copyright.
Copyright 2005, PMC-Sierra, Inc.
CPU RM7000 @ 601.28 MHz / Bus @ 100.21
MHz
Memory size 128 MB.
Primary Instruction cache size 16KB (32
line, 4 way)
Primary Data cache size 16KB (32 line,
4 way)
Secondary cache size 256KB
Autoboot command: "boot -n -x -w30
/dev/sd0@0x7cf00 root=/dev/scsibd4"
Press <Enter> to execute now or
any other key to abort.
Stisknu nějakou klávesu a protože
mám jumper na J34, mohu zadat
PMON> boot -n -x /dev/sd0@0x100
root=/dev/scsibd2 hwrev=3 single
a tím se dostávám do
jednouživatelského režimu jako root.
Pár poznámek:
-w30 – je to jen čekání,
@0x100 je offset flash disku sd0, je
buď tento nebo @0x7cf00. Je to USERFLASH_BASE v PMON. Přesný popis
proč to tak je jsem nenašel.
Dostanu se na konzolu
-sh-3.00#
Teď musím zjistit, v jakém stavu se
diskové pole nachází. Adresář /factorydefaults má obsahovat
defaultní nastavení. Abych ho mohl použít, musím mít přístupný
adresář /linuxrwfs pro zápis a mohu spustit tar.
To se mi nepovedlo. Zkusil jsem spustit
skript rcS, ten sice generoval hlášky No such file or
directory, ale pak se mi podařilo připojit adresář linuxrwfs pro
zápis.
Skript rcS obsahuje např. inicializaci ovladače mtdblock, který
emuluje hard disk na flash paměti
# I need mtdblock devices anyhow
echo "Creating dev entries for mtdblock devices..."
major=31
minor="0 1 2 3 4 5 6 7 8 9"
for i in $minor ; do
/bin/mknod /dev/mtdblock${i} b $major $i
done
echo "Creating dev entries for mtd devices..."
major=90
minor="0 2 4 6 8 10 12 14 16 18"
cnt=0
echo "Creating dev entries for mtdblock devices..."
major=31
minor="0 1 2 3 4 5 6 7 8 9"
for i in $minor ; do
/bin/mknod /dev/mtdblock${i} b $major $i
done
echo "Creating dev entries for mtd devices..."
major=90
minor="0 2 4 6 8 10 12 14 16 18"
cnt=0
for i in $minor ; do
/bin/mknod /dev/mtd${cnt} c $major $i
/bin/chmod 660 /dev/mtd${cnt}
cnt=`expr $cnt + 1`
done
# clean it up
unset major minor cnt
if [ "x`cat /proc/cmdline | grep "root=/dev/mtdblock"`" != "x" ] ; then
# mount linuxrtconfig partitionion /etc
echo "Mounting linuxrtconfig on /linuxrwfs"
mount -n -t jffs2 /dev/mtdblock2 /linuxrwfs -o rw
elif [ "x`cat /proc/cmdline | grep "root=/dev/scsibd"`" != "x" ] ;
/bin/mknod /dev/mtd${cnt} c $major $i
/bin/chmod 660 /dev/mtd${cnt}
cnt=`expr $cnt + 1`
done
# clean it up
unset major minor cnt
if [ "x`cat /proc/cmdline | grep "root=/dev/mtdblock"`" != "x" ] ; then
# mount linuxrtconfig partitionion /etc
echo "Mounting linuxrtconfig on /linuxrwfs"
mount -n -t jffs2 /dev/mtdblock2 /linuxrwfs -o rw
elif [ "x`cat /proc/cmdline | grep "root=/dev/scsibd"`" != "x" ] ;
--------------------------------------------------------------------------------------------------
JFFS2
je Journaling Flash File System
pro flash paměti
Ve skriptu je řešena i obnova
firmware a nastavení, jenže neprobíhá tak, jaká asi byla
představa
--------------------------------------------------------------------------------------------------
# If I started firmware upgrade, I
must finish it first.
# That is why I have to run it as a first option.
# We must perform the rest of the firmware upgrade stuff
# before we use this partition.
if [ -e /linuxrwfs/update.d/confupdate/confupdate.sh ] ; then
echo "Updating system configuration settings... "
/bin/sh /linuxrwfs/update.d/confupdate/confupdate.sh target
if [ $? -ne 0 ] ; then
echo "Couldn't finish firmware upgrade but will try to boot up! "
else
. /usr/local/sbin/bailout-functions
echo "Removing stale data after the firmware update... "
rm -rRf /linuxrwfs/update.d/confupdate
rm -f $bailout_nas_session
rm -f $bailout_shutdown_wasdirty
/bin/touch /linuxrwfs/etc/.fwupgraded
/bin/sync
fi
fi
# Do I have to perform restore factory settings (all option)?
rfd_ind_root=/linuxrwfs
rfd_ind_local=update.d/restore/rfd.all
rfd_ind_gui=etc/.fdrestored_notify_gui
if [ -f ${rfd_ind_root}/${rfd_ind_local} ] ; then
echo "Restoring all to factory defaults... "
echo "Umount /linuxrwfs first... "
umount -n /linuxrwfs
echo "Erasing [$rwfs_dname]... "
[ -c /dev/zero ] || /bin/mknod /dev/zero c 1 5
[ -c /dev/null ] || /bin/mknod /dev/null c 1 3
# I'll take a chance here -- dd will return error code
# once the the device is fully erased ("no space on the device"
# thingy).
platform=`getptype_name`
if [ "$platform" = "$PMC_SYSTYPE_NSS2000ST1" -o \
"$platform" = "$PMC_SYSTYPE_NSS3000ST1" ] ; then
/usr/sbin/flash_eraseall /dev/$mtdchardev
else
dd if=/dev/zero of=$rwfs_dname bs=131072 >/dev/null 2>&1
fi
echo "Copying factory defaults to $rwfs_dname..."
if [ "x$rwfs" = "xjffs2" ] ; then
jffs2_file=linuxrtconfig.jffs2
if [ "$platform" = "$PMC_SYSTYPE_NSS2000ST1" -o \
"$platform" = "$PMC_SYSTYPE_NSS3000ST1" ] ; then
jffs2_file=linuxrtconfig-nor.jffs2
fi
/bin/cp -f /factorydefaults/$jffs2_file $rwfs_dname
elif [ "x$rwfs" = "xxfs" ] ; then
/sbin/mkfs.xfs -f -b size=512 $rwfs_dname
else
echo "Unknown $rwfs file system specified -- going to halt the system!"
/sbin/halt
fi
if [ $? -ne 0 ] ; then
echo "Couldn't finish factory defaults restore -- halting system... "
/sbin/halt
else
if [ "x$rwfs" = "xjffs2" ] ; then
echo "Mounting fresh ${mtddev} on /linuxrwfs... "
mount -n -t $rwfs /dev/${mtddev} /linuxrwfs -o rw,noatime,sync,dirsync,nodiratime
elif [ "x$rwfs" = "xxfs" ] ; then
echo "Mounting fresh copy of ${rwfs} file system on /linuxrwfs... "
mount -n -t $rwfs $rwfs_dname /linuxrwfs -o rw,noatime,sync,dirsync,nodiratime
/bin/tar -C /linuxrwfs -xzf /factorydefaults/factorydefaults.tar.gz
else
echo "Unknown $rwfs file system specified -- going to halt the system!"
/sbin/halt
fi
# indicate to the NAS application that
# factory defaults were restored
echo "Factory defaults restore done, sending indication to GUI... "
touch ${rfd_ind_root}/${rfd_ind_gui}
fi
/bin/sync
fi
# That is why I have to run it as a first option.
# We must perform the rest of the firmware upgrade stuff
# before we use this partition.
if [ -e /linuxrwfs/update.d/confupdate/confupdate.sh ] ; then
echo "Updating system configuration settings... "
/bin/sh /linuxrwfs/update.d/confupdate/confupdate.sh target
if [ $? -ne 0 ] ; then
echo "Couldn't finish firmware upgrade but will try to boot up! "
else
. /usr/local/sbin/bailout-functions
echo "Removing stale data after the firmware update... "
rm -rRf /linuxrwfs/update.d/confupdate
rm -f $bailout_nas_session
rm -f $bailout_shutdown_wasdirty
/bin/touch /linuxrwfs/etc/.fwupgraded
/bin/sync
fi
fi
# Do I have to perform restore factory settings (all option)?
rfd_ind_root=/linuxrwfs
rfd_ind_local=update.d/restore/rfd.all
rfd_ind_gui=etc/.fdrestored_notify_gui
if [ -f ${rfd_ind_root}/${rfd_ind_local} ] ; then
echo "Restoring all to factory defaults... "
echo "Umount /linuxrwfs first... "
umount -n /linuxrwfs
echo "Erasing [$rwfs_dname]... "
[ -c /dev/zero ] || /bin/mknod /dev/zero c 1 5
[ -c /dev/null ] || /bin/mknod /dev/null c 1 3
# I'll take a chance here -- dd will return error code
# once the the device is fully erased ("no space on the device"
# thingy).
platform=`getptype_name`
if [ "$platform" = "$PMC_SYSTYPE_NSS2000ST1" -o \
"$platform" = "$PMC_SYSTYPE_NSS3000ST1" ] ; then
/usr/sbin/flash_eraseall /dev/$mtdchardev
else
dd if=/dev/zero of=$rwfs_dname bs=131072 >/dev/null 2>&1
fi
echo "Copying factory defaults to $rwfs_dname..."
if [ "x$rwfs" = "xjffs2" ] ; then
jffs2_file=linuxrtconfig.jffs2
if [ "$platform" = "$PMC_SYSTYPE_NSS2000ST1" -o \
"$platform" = "$PMC_SYSTYPE_NSS3000ST1" ] ; then
jffs2_file=linuxrtconfig-nor.jffs2
fi
/bin/cp -f /factorydefaults/$jffs2_file $rwfs_dname
elif [ "x$rwfs" = "xxfs" ] ; then
/sbin/mkfs.xfs -f -b size=512 $rwfs_dname
else
echo "Unknown $rwfs file system specified -- going to halt the system!"
/sbin/halt
fi
if [ $? -ne 0 ] ; then
echo "Couldn't finish factory defaults restore -- halting system... "
/sbin/halt
else
if [ "x$rwfs" = "xjffs2" ] ; then
echo "Mounting fresh ${mtddev} on /linuxrwfs... "
mount -n -t $rwfs /dev/${mtddev} /linuxrwfs -o rw,noatime,sync,dirsync,nodiratime
elif [ "x$rwfs" = "xxfs" ] ; then
echo "Mounting fresh copy of ${rwfs} file system on /linuxrwfs... "
mount -n -t $rwfs $rwfs_dname /linuxrwfs -o rw,noatime,sync,dirsync,nodiratime
/bin/tar -C /linuxrwfs -xzf /factorydefaults/factorydefaults.tar.gz
else
echo "Unknown $rwfs file system specified -- going to halt the system!"
/sbin/halt
fi
# indicate to the NAS application that
# factory defaults were restored
echo "Factory defaults restore done, sending indication to GUI... "
touch ${rfd_ind_root}/${rfd_ind_gui}
fi
/bin/sync
fi
Automatická obnova nenastala.
Musím ji provést sám.
-sh-3.00# /bin/tar -C / linuxrwfs -xzf
/ factorydefaults/ factorydefaults.tat.gz
Došlo k obnově do původního
nastavení. Zjistil jsem, že je vhodné diskové
pole ukončit skriptem rcK a pak restarovat. Po restartu se diskové pole rozběhlo.
Web rozhraní |
Potvrzuje se mi, že samotný linux
vždy nějak zprovozníte, problémem je velmi často webové
rozhraní. To je tady postavené na přeložených souborech Perlu a
www serveru Apache.
Zkusil jsem provést upgrade na poslední
verzi. Na pc, ze kterého jsem upgrade prováděl jsou XP s NFS
rozšířením. Přes webové rozhraní jsem zkusil provést upgrade. Ten je
řízen skriptem download_firmware.pl.
download_firmware.pl |
Konzola putty během aktualizace nic
nevypíše.
Upgrade proběhl.
Web rozhrani po upgradu |
A tak, jak to už bývá, poslední
firmware stejně moc dobře s Active directory WS2008 nespolupracuje.
Když jsem před lety uváděl do
provozu pole NSS6000, myslel jsem si, že když je Linksys ve
společnosti CISCO, tak to nebude problém. Pak jsem ovšem řešil
spolupráci Active directory ve Windows 2003 a tímto polem a
optimismus mě přešel. Samba a její implementace v tomto zařízení
asi není zrovna to pravé. Musel jsem to tehdy vyřešit samostatnou
skupinou a nastavit nějaké šílenosti abych to rozchodil. A přesto
se někdy stávalo, že když uživatel uložil soubor, tak
spolupracovník s ním nemohl pracovat. Musel diskovou jednotku
odhlásit a znovu přihlásit.
Toto diskové pole mi připadá, že bylo
vymarketingované do posledního centu.
Tolik mých pár postřehů.
zdravim,
OdpovědětVymazatmohl by jsi me na tebe zaslat nejaky kontakt? diky
Tento komentář byl odstraněn autorem.
Vymazat