?

Log in

entries friends calendar profile My LJ Previous Previous Next Next
ADSL модем D-Link DSL-2640U. Часть III. Boot Loader, OS Linux 2.6.8.1 и оболочка BusyBox 1.0. - Michael V. Pudeev
pudeev
pudeev
ADSL модем D-Link DSL-2640U. Часть III. Boot Loader, OS Linux 2.6.8.1 и оболочка BusyBox 1.0.
Подключаем консольный кабель, запускаем терминал, включаем модем, не ждем загрузки ОС, а сразу жмем в терминале на клавишу Enter и получаем доступ в Boot Loader. В Broadcom'e он называется - CFE (Common Firmware Environment):
** Press Enter to stop auto run (3 seconds) ***
Auto run second count down: 3
web info: Waiting for connection on socket 0.
CFE>
CFE> help
Available commands:

w                   Write the whole image start from beginning of the flash
e                   Erase [n]vram or [a]ll flash except bootrom
r                   Run program from flash image or from host depend on [f/h] flag
p                   Print boot line and board parameter info
c                   Change booline parameters
f                   Write image to the flash
i                   Erase persistent storage data
b                   Change board parameters
reset               Reset the board
flashimage          Flashes a compressed image after the bootloader.
help                Obtain help for CFE commands

For more information about a command, enter 'help command-name'
*** command status = 0


Вывести на экран параметры загрузки и информацию о устройстве:
CFE> p
Board IP address                  : 192.168.1.1
Host IP address                   : 192.168.1.100
Gateway IP address                :
Run from flash/host (f/h)         : f
Default host run file name        : vmlinux
Default host flash file name      : bcm963xx_fs_kernel
Boot delay (0-9 seconds)          : 3
Board Id Name                     : D-4P-W
Psi size in KB                    : 24
Number of MAC Addresses (1-32)    : 24
Base MAC Address                  : 00:19:5b:c7:58:01
Ethernet PHY Type                 : External Switch Using Reverse MII
Memory size in MB                 : 16
CMT Thread Number                 : 0
Dying Gasp Enable (0:Disable 1:Enable)  : 1

*** command status = 0
CFE>
CFE>
CFE>

Делаем reset и перегружаем наше устройство:
CFE> reset

Если нет консольного кабеля, на устройство можно зайти по http, telnet и SSH. Например, вот так выглядит приглашение в telnet:
C:\>telnet 192.168.1.1
BCM96348 ADSL Router
Login: admin
Password:
>

Основные команды:
> ?

?
help
logout
reboot
adsl
atm
brctl
cat
ddns
df
dumpcfg
echo
ifconfig
kill
arp
defaultgateway
dhcpserver
dns
lan
passwd
ppp
remoteaccess
restoredefault
route
save
swversion
wan
tr69c
ping
ps
pwd
siproxd
sntp
sysinfo
tftp
wlctl

Версия прошивки:
> swversion show
RU_DSL-2640U_3-06-04-3C00.A2pB023g2.d19b

Версия утилиты ATM control:
> atm --version
atm version 1.3

Информация по ATM интерфейсу:
> atm operate intf --show
> atm operate tdte --show
> atm operate vcc --show

Версия утилиты ADSL control, а также информация о ADSL PHY & Line драйвере:
> adsl --version
adsl version 1.0
ADSL PHY: AnnexA version - A2pB023g2.d19b

Информация и статистика по ADSL интерфейсу:
> adsl info --show
adsl: ADSL driver and PHY status

Информация по WAN, LAN интерфейсам:
> wan show
> lan show

Cписок всех сетевых интерфейсов и их параметры:
# ifconfig -a
atm0            Link encap:UNSPEC  HWaddr 61-60-00-00-00-60-00-42-00-00-00-00-00-00-00-00
                [NO FLAGS]  MTU:0  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0
                RX bytes:1044165840 (995.7 MiB)  TX bytes:627461040 (598.3 MiB)

br0             Link encap:Ethernet  HWaddr 00:19:5B:C7:58:01
                inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
                UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1492  Metric:1
                RX packets:1156991 errors:0 dropped:0 overruns:0 frame:0
                TX packets:1118878 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0
                RX bytes:558559404 (532.6 MiB)  TX bytes:993372631 (947.3 MiB)

cpcs0           Link encap:UNSPEC  HWaddr C5-60-FF-FF-FF-00-00-00-00-00-00-00-00-00-00-00
                [NO FLAGS]  MTU:65535  Metric:1
                RX packets:0 errors:3 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0
                RX bytes:1044165840 (995.7 MiB)  TX bytes:627461040 (598.3 MiB)

dsl0            Link encap:UNSPEC  HWaddr C5-60-00-00-00-00-00-00-00-00-00-00-00-00-00-00
                [NO FLAGS]  MTU:0  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0
                RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0            Link encap:Ethernet  HWaddr 00:19:5B:C7:58:01
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:267500 errors:0 dropped:0 overruns:0 frame:0
                TX packets:392494 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000
                RX bytes:30811590 (29.3 MiB)  TX bytes:455749422 (434.6 MiB)
                Interrupt:30 Base address:0x6800

lo              Link encap:Local Loopback
                inet addr:127.0.0.1  Mask:255.0.0.0
                UP LOOPBACK RUNNING  MTU:16436  Metric:1
                RX packets:81 errors:0 dropped:0 overruns:0 frame:0
                TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0
                RX bytes:3741 (3.6 KiB)  TX bytes:3741 (3.6 KiB)

nas_0_35        Link encap:Ethernet  HWaddr 0A:19:5B:C7:58:01
                UP BROADCAST RUNNING MULTICAST  MTU:1492  Metric:1
                RX packets:1164960 errors:0 dropped:0 overruns:0 frame:0
                TX packets:1203201 errors:0 dropped:6 overruns:0 carrier:0
                collisions:0 txqueuelen:1000
                RX bytes:992729199 (946.7 MiB)  TX bytes:600312299 (572.5 MiB)

ppp_0_35_1      Link encap:Point-Point Protocol
                inet addr:92.101.30.33  P-t-P:92.101.0.1  Mask:255.255.255.255
                UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
                RX packets:21720 errors:0 dropped:0 overruns:0 frame:0
                TX packets:18949 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:3
                RX bytes:14301359 (13.6 MiB)  TX bytes:2978650 (2.8 MiB)

wl0             Link encap:Ethernet  HWaddr 02:19:5B:C7:58:01
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:889473 errors:0 dropped:0 overruns:0 frame:4494067
                TX packets:730201 errors:2 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000
                RX bytes:545015328 (519.7 MiB)  TX bytes:543202127 (518.0 MiB)
                Interrupt:32

wl0.1           Link encap:Ethernet  HWaddr 02:19:5B:C7:58:01
                BROADCAST MULTICAST  MTU:1500  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000
                RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

IP утилиты и сервисы:
> ping
> route show
> dns show
> arp show
> dhcpserver show
> ddns show
> sntp date
> remoteaccess show
> siproxd show

Отключить siproxd - SIP Proxy Daemon, еще называется SIP ALG (Session Initiation Protocol Application Level Gateway). Это программная реализация шлюза прикладного уровня для SIP протокола, используется для преодоления NAT, при передачи VoIP трафика. Но встроенная в модем версия работает некорректно, к тому же дополнительно нагружает CPU и использует RAM, поэтому отключаем:
> siproxd
siproxd [enable|disable|show]
siproxd --help
> siproxd disable

Еще один ненужный демон - tr69c. Выгрузить его из памяти с помощью ключа нельзя (чуть ниже написано как от него избавиться):
> tr69c show
Inform Enable : 0
Inform Interval : 300
ACS URL :
ACS User Name : admin
ACS Password : admin
Connection Request User Name : admin
Connection Request Password : admin

Доступ в оболочку BusyBox и список ее команд:
> sh


BusyBox v1.00 (2005.04.12-18:11+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

# busybox
BusyBox v1.00 (2005.04.12-18:11+0000) multi-call binary

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use, and BusyBox
        will act like whatever it was invoked as.

Currently defined functions:
        [, busybox, cat, chmod, date, df, dmesg, echo, egrep, expr, false,
        fgrep, ftpget, ifconfig, init, insmod, kill, klogd, ledctrl, linuxrc,
        ln, logger, logread, mkdir, mount, msh, ping, ps, pwd, reboot, rm,
        rmmod, route, sendarp, sh, sysinfo, syslogd, test, tftp, tftpd, top,
        true, tty, vconfig

Список всех команд шелла (Kernel + Broadcom + BusyBox):
# help

Built-in commands:
-------------------
        . : break cd continue eval exec exit export help login newgrp
        read readonly set shift times trap umask wait [ busybox cat chmod
        date df dmesg echo expr false ftpget ifconfig init insmod kill
        klogd ledctrl linuxrc ln logger logread mkdir mount msh ping
        ps pwd reboot rm rmmod route sendarp sh sysinfo syslogd test
        tftp tftpd top true tty vconfig

С помощью встроенных команд echo и cat можно многое узнать о модеме. Например, тип ОС и версия ядра:
# cat /proc/sys/kernel/ostype
Linux
# cat /proc/sys/kernel/osrelease
2.6.8.1
# cat /proc/sys/kernel/version
#1 Thu Nov 22 01:35:53 MSK 2007
#  cat /proc/version
Linux version  (@) ()

Время непрерывной работы и время простоя модема:
# cat /proc/uptime
56357.43 56122.63
Первое число - время, которое прошло с момента последнего ребута, второе число - общее время простоя. Все указано в секундах.

Информация о средней загруженности процессора:
# cat /proc/loadavg
0.00 0.00 0.00 3/28 6091
Первые три числа показывают среднее количество процессов в очереди за 1, 5 и 15 минут, соответственно. Дальше идет число текущих в настоящий момент процессов, знаменатель дробного числа указывает на количество процессов, которые были запущены со старта системы.

Тоже самое можно посмотереть с помощью встроенной команды sysinfo - краткая информация о системе в целом (кол-во процессов, текущее время, uptime, средняя загрузка CPU, свободная память, буферы итд.):
# sysinfo
Number of processes: 28
  6:04pm  up 4 days, 21:57,
load average: 1 min:0.00, 5 min:0.00, 15 min:0.00
              total         used         free       shared      buffers
  Mem:        14040        13160          880            0         1092
 Swap:            0            0            0
Total:        14040        13160          880

Расширенная информация о свободной и используемой памяти, определенной ядром системы (данные этого файла использует утилита free):
# cat /proc/meminfo
MemTotal:        14040 kB
MemFree:           872 kB
Buffers:          1092 kB
Cached:           6244 kB
SwapCached:          0 kB
Active:           4356 kB
Inactive:         4336 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:        14040 kB
LowFree:           872 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:           0 kB
Mapped:           3244 kB
Slab:             2452 kB
Committed_AS:     5100 kB
PageTables:        328 kB
VmallocTotal:  1048560 kB
VmallocUsed:      1292 kB
VmallocChunk:  1046840 kB
Где:
MemTotal - физическая память минус несколько зарезервированных битов и минус бинарный код ядра;
MemFree - кол-во свободной памяти.

Карта распределения адресов системной памяти:
# cat /proc/iomem
00000000-00f9ffff : System RAM
00010000-00173157 : Kernel code
00173158-001a80bf : Kernel data
10000000-10ffffff : bcm63xx pci memory space
10000000-1000ffff : 0000:00:01.0

Диапазон системных портов ввода/вывода:
# cat /proc/ioports
12000000-1200ffff : bcm63xx pci IO space

Информация о прерываниях IRQ (30 - eth0, 32 - wl0):
# cat /proc/interrupts
           CPU0
  7:   85269176            MIPS  timer
 10:         47            MIPS  brcm_10
 12:    5532381            MIPS  brcm_12
 13:    2345600            MIPS  brcm_13
 30:     393504            MIPS  brcm_30
 32:    5099705            MIPS  brcm_32
 33:          0            MIPS  brcm_33

ERR:          0

Информация о типе системной платы, процессоре и его производительности:
# cat /proc/cpuinfo
system type             : D-4P-W
processor               : 0
cpu model               : BCM6348 V0.7
BogoMIPS                : 255.59
wait instruction        : no
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : no
VCED exceptions         : not available
VCEI exceptions         : not available

Отображение символьных и блочных устройств, распознанных ядром:
# cat /proc/devices
Character devices:
  1 mem
  2 pty
  3 ttyp
  4 ttyS
  5 /dev/tty
  5 /dev/console
 10 misc
108 ppp
205 atmapi
206 bcrmboard
208 adsl
212 bcm

Block devices:
 31 mtdblock

Просмотр информации о блочном устройстве mtd:
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00293000 00001000 "Physically mapped flash"

Все файловые системы, которые поддерживает ядро. Первая колонка информирует нас о том, что на блочное устройство смонтирован раздел, отформатированный в SquashFS:
# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   sockfs
nodev   tmpfs
nodev   pipefs
        squashfs
nodev   ramfs

Просмотр всех разделов в системе, которые распознало ядро:
# cat /proc/partitions
major minor  #blocks  name
31     0       2636 mtdblock0

В файле fstab (file system table) можно посмотреть, какие файловые системы должны стать известными ОС в процессе загрузки:
# cat /etc/fstab
proc    /proc           proc       defaults     0 0
tmpfs   /var            tmpfs      size=320k    0 0
none    /proc/bus/usb   usbdevfs   defaults     0 0
Здесь каждая строка описывает одну файловую систему и содержит следующие поля:
1 - файл устройства;
2 - точка монтирования;
3 - тип файловой системы;
4 - параметры монтирования файловой системы;
5 - флаг для dump;
6 - флаг для fsck.

Из fstab видно, что в автозагрузке должна монтироваться файловая система USBDevFS, но по cat /proc/filesystems ее поддержка в ядро не входит. Да и в логах по dmsg выходит ошибка - mount: Mounting none on /proc/bus/usb failed: No such file or directory.
Хотя с другой стороны, по даташиту процессора MIPS32 BCM6348, в структурной схеме присутствует USB v.1.1.
На плате USB хост контроллер не наблюдается. Т.е. теоретически Host/Device на D-Link DSL-2640U можно установить и запустить, но практически это делать никто не будет :-)

Просмотр всех точек монтирования, используемых в системе:
# cat /proc/mounts
rootfs     /      rootfs    rw            0 0
/dev/root  /      squashfs  ro            0 0
/proc      /proc  proc      rw,nodiratime 0 0
tmpfs      /var   tmpfs     rw            0 0

Или более наглядная команда mount из оболочки BusyBox:
# mount
/dev/mtdblock0  on  /      type squashfs (ro)
/proc           on  /proc  type proc     (rw,nodiratime)
tmpfs           on  /var   type tmpfs    (rw)

Утилита disk free - df показывает сколько свободного места на диске. А у нас его нет, все "под завязку":
> df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/mtdblock0            2640      2640         0 100% /
tmpfs                      320       320         0 100% /var

Здесь видны параметры, которые передаются ядру при загрузке:
# cat /proc/cmdline
root=31:0 ro noinitrd
root=31:0 - в качестве корневой ФС будет использоваться устройство c major 31, minor 0
ro - read only
noinitrd - нет начального RAM диска

Посмотрим список загруженных модулей ядра (в Linux утилита lsmod):
# cat /proc/modules

Module Size Used 
ipt_state 544 0 - Live 0xc00b9000
ipt_mark 416 0 - Live 0xc00b7000
ipt_limit 896 0 - Live 0xc00b5000
ipt_iprange 640 0 - Live 0xc00b3000
ipt_connlimit 1696 0 - Live 0xc00b1000
ipt_TCPMSS 2304 2 - Live 0xc00aa000
ipt_REDIRECT 768 2 - Live 0xc00ac000
ipt_MASQUERADE 1536 1 - Live 0xc00a2000
ipt_MARK 704 0 - Live 0xc00a8000
ipt_LOG 4064 0 - Live 0xc0094000
ipt_FTOS 992 0 - Live 0xc00a0000
ip_nat_tftp 1120 0 - Live 0xc009e000
ip_nat_snmp_basic 8976 0 - Live 0xc00a4000
ip_nat_rtsp 4048 0 - Live 0xc0040000
ip_nat_irc 1536 0 - Live 0xc0092000
ip_nat_ftp 2208 0 - Live 0xc0084000
ip_conntrack_tftp 1008 0 - Live 0xc0082000
ip_conntrack_rtsp 23056 1 ip_nat_rtsp, Live 0xc0097000
ip_conntrack_irc 18928 1 ip_nat_irc, Live 0xc008c000
ip_conntrack_ftp 19792 1 ip_nat_ftp, Live 0xc0086000
ip_nat_h323 2208 0 - Live 0xc005e000
ip_conntrack_h323 18960 1 ip_nat_h323, Live 0xc0058000
ip_nat_pptp 2048 0 - Live 0xc0056000
ip_conntrack_pptp 3312 0 - Live 0xc0054000
ip_nat_gre 1280 0 - Live 0xc0052000
ip_conntrack_gre 2064 2 ip_nat_pptp,ip_conntrack_pptp, Live 0xc0043000
iptable_mangle 960 0 - Live 0xc003e000
iptable_nat 15248 11 ipt_REDIRECT,ipt_MASQUERADE,ip_nat_tftp,ip_nat_snmp_basic,ip_nat_rtsp,ip_nat_irc,
ip_nat_ftp,ip_nat_h323,ip_nat_pptp,ip_nat_gre, Live 0xc004d000
ip_conntrack 28272 18 ipt_state,ipt_connlimit,ipt_REDIRECT,ipt_MASQUERADE,ip_nat_tftp,ip_nat_rtsp,ip_nat_irc,
ip_nat_ftp,ip_conntrack_tftp,ip_conntrack_rtsp,ip_conntrack_irc,ip_conntrack_ftp,ip_nat_h323,
ip_conntrack_h323,ip_nat_pptp,ip_conntrack_pptp,ip_conntrack_gre,iptable_nat, Live 0xc0045000
iptable_filter 928 1 - Live 0xc001d000
ip_tables 14144 14 ipt_state,ipt_mark,ipt_limit,ipt_iprange,ipt_connlimit,ipt_TCPMSS,ipt_REDIRECT,ipt_MASQUERADE,
ipt_MARK,ipt_LOG,ipt_FTOS,iptable_mangle,iptable_nat,iptable_filter, Live 0xc0008000
wl 522256 0 - Live 0xc012d000
bcm_enet 22000 0 - Live 0xc0031000
bcmprocfs 12288 0 - Live 0xc0010000
adsldd 134976 0 - Live 0xc0060000
blaa_dd 6880 0 - Live 0xc000d000
atmapi 57296 2 adsldd,blaa_dd, Live 0xc0022000
Первая колонка - имя модуля, далее размер в байтах, кол-во модулей и кто использует. Возможно, придется какие-то модули выкинуть из будующей прошивки, тк они мной не востребованны и занимают драгоценное место в флэш памяти...

Выгрузить ненужные модули можно с помощью утилиты rmmod из оболочки BusyBox:
# rmmod ip_nat_h323
# rmmod ip_conntrack_h323

Посмотреть и изменить параметры ядра "на лету" можно в ветке /proc/sys
# echo /proc/sys/*
/proc/sys/abi /proc/sys/debug /proc/sys/dev /proc/sys/fs /proc/sys/kernel /proc/sys/net /proc/sys/proc /proc/sys/vm
В Linux'e для этих целей служит утилита sysctl. В нашем же случае, для чтения параметров можно использовать команду cat <имя файла>, а изменять значения параметров (когда это допустимо) можно с помощью команды echo <значение> > <имя файла>
Например, увеличить кол-во записей в NAT-таблице:
# cat /proc/sys/net/ipv4/ip_conntrack_max
1024
# echo 1532 > /proc/sys/net/ipv4/ip_conntrack_max
# cat /proc/sys/net/ipv4/ip_conntrack_max
1532


Далее, посмотрим системный профайл:
# cat /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shells

PATH=/bin:/sbin:/usr/bin
KERNELVER=2.6.8.1
export PATH
echo
firsttime=`echo /var/udhcpd/udhcpd.lease*`
if [ "$firsttime" = "/var/udhcpd/udhcpd.lease*" ]; then
 echo "Loading drivers and kernel modules... "
 echo
# no-op
# create directory in /var mounted for TMPFS
 mkdir -p /var/log /var/run /var/state/dhcp /var/ppp /var/udhcpd /var/zebra /var/siproxd
 echo > /var/udhcpd/udhcpd.leases
 ifconfig lo 127.0.0.1 netmask 255.0.0.0 broadcast 127.255.255.255 up
# /etc/modules_install /lib/modules/$KERNELVER/extra
 test -e /lib/modules/$KERNELVER/extra/profdrvdd.ko && insmod /lib/modules/$KERNELVER/extra/profdrvdd.ko
 test -e /lib/modules/$KERNELVER/extra/atmapi.ko && insmod /lib/modules/$KERNELVER/extra/atmapi.ko
 test -e /lib/modules/$KERNELVER/extra/blaa_dd.ko && insmod /lib/modules/$KERNELVER/extra/blaa_dd.ko
 test -e /lib/modules/$KERNELVER/extra/adsldd.ko && insmod /lib/modules/$KERNELVER/extra/adsldd.ko
 test -e /lib/modules/$KERNELVER/extra/bcmprocfs.ko && insmod /lib/modules/$KERNELVER/extra/bcmprocfs.ko
 test -e /lib/modules/$KERNELVER/extra/bcm_enet.ko && insmod /lib/modules/$KERNELVER/extra/bcm_enet.ko
 test -e /lib/modules/$KERNELVER/extra/bcm_usb.ko && insmod /lib/modules/$KERNELVER/extra/bcm_usb.ko
 test -e /lib/modules/$KERNELVER/extra/wl.ko && rm -f /var/wlver
 test -e /lib/modules/$KERNELVER/extra/wl.ko && insmod /lib/modules/$KERNELVER/extra/wl.ko
&& wlctl ver > /var/wlver
 test -e /lib/modules/$KERNELVER/extra/wl.ko && test ! -e /var/wlver && reboot
 test -e /lib/modules/$KERNELVER/extra/endpointdd.ko && insmod /lib/modules/$KERNELVER/extra/endpointdd.ko
# for usb storage
 test -e /lib/modules/$KERNELVER/kernel/drivers/usb/storage/usb-storage.ko && 
insmod /lib/modules/$KERNELVER/kernel/drivers/usb/storage/usb-storage.ko
 test -e /lib/modules/$KERNELVER/kernel/drivers/scsi/sg.ko &&
 insmod /lib/modules/$KERNELVER/kernel/drivers/scsi/sg.ko
 test -e /lib/modules/$KERNELVER/kernel/drivers/scsi/sd_mod.ko &&
 insmod /lib/modules/$KERNELVER/kernel/drivers/scsi/sd_mod.ko

 cfm
 echo "Done"
fi

Посмотрим список запущенных процессов в модеме с помощью встроенной утилиты - ps (process status):
# ps
  PID  Uid     VmSize Stat Command
    1 admin       276 S   init
    2 admin           SW< [ksoftirqd/0]
    3 admin           SW< [events/0]
    4 admin           SW< [khelper]
    5 admin           SW< [kblockd/0]
   17 admin           SW  [pdflush]
   18 admin           SW  [pdflush]
   19 admin           SW  [kswapd0]
   20 admin           SW< [aio/0]
   25 admin           SW  [mtdblockd]
   34 admin       312 S   -sh
   72 admin      1384 S   cfm
  188 admin       220 S   pvc2684d
  249 admin       256 S   igmp lo
  442 admin       284 S   dhcpd
  508 admin       252 S   ddnsd /var/ddnsd.cfg /var/ddnsd.cache
  510 admin       220 S   sntp -s ntp1.dlink.com -s ntp.dlink.com.tw -t Moscow,
  517 admin      1312 S   telnetd
  518 admin           Z   sshd
  524 admin       240 S   tftpd
  547 admin      1624 S   httpd
  548 admin           Z   [cfm]
  552 admin       424 S   pppd -c 0.35.1 -i nas_0_35 -u ptn -p *** -f 0 -m 0090
  961 admin       220 S   /bin/dnsprobe
  968 admin       268 S   reaim -e 92.101.26.104
 1004 admin      1888 S   tr69c
 3022 admin       284 S   sh -c sh
 3023 admin       308 S   sh
 3025 admin       268 R   ps
Многие из задач в списке, в выведенном ps - это процессы, выполняемые на заднем плане. Процессы, заключенные в квадратные скобки - это процессы на уровне ядра.

В динамическом режиме первые 20 процессов нам покажет встроенная утилита - top:
# top

PID USER     STATUS   RSS  PPID %CPU %MEM COMMAND
 3024 admin    R        268  3023  2.7  1.9 exe
    2 admin    SW<        0     1  0.1  0.0 ksoftirqd/0
 1004 admin    S       1888   547  0.0 13.4 tr69c
  547 admin    S       1624    72  0.0 11.5 httpd
   72 admin    S       1384    34  0.0  9.8 cfm
  518 admin    S       1356    72  0.0  9.6 sshd
  548 admin    S       1356    72  0.0  9.6 cfm
  517 admin    S       1308    72  0.0  9.3 telnetd
  552 admin    S        424     1  0.0  3.0 pppd
   34 admin    S        312     1  0.0  2.2 sh
 3023 admin    S        308  3022  0.0  2.1 exe
  442 admin    S        284     1  0.0  2.0 dhcpd
 3022 admin    S        284    72  0.0  2.0 sh
    1 admin    S        276     0  0.0  1.9 init
  968 admin    S        268     1  0.0  1.9 reaim
  249 admin    S        256     1  0.0  1.8 igmp
  508 admin    S        252     1  0.0  1.7 ddnsd
  524 admin    S        240     1  0.0  1.7 exe
  510 admin    S        220     1  0.0  1.5 sntp
  188 admin    S        220     1  0.0  1.5 pvc2684d
Mem: 13648K used, 392K free, 0K shrd, 1216K buff, 6288K cached
Load average: 0.00, 0.00, 0.00    (State: S=sleeping R=running, W=waiting)

Некоторые ненужные процессы можно убить kill'ом, тк необходимости в них нет. Например, TR-069. Демон протокола удаленного управления абонентскими устройствами:
# tr69c show

Inform Enable : 0
Inform Interval : 300
ACS URL :
ACS User Name : admin
ACS Password : admin
Connection Request User Name : admin
Connection Request Password : admin
"Использование протокола TR-069 позволяет реализовать удобную инфраструктуру для управления абонентскими устройствами и поддержки пользователей при массовом предоставлении услуг DSL-доступа". Для большинства пользователей совершенно бесполезная штука. Только место в ОЗУ и в ядре занимает бестолку.

Убиваем намертво:
# kill -9 1004

Список пользователей в системе:
# cat /etc/passwd
admin:CskIzYagM1ijs:0:0:Administrator:/:/bin/sh
support:l1Vmzbd/Z6ZuM:0:0:Technical Support:/:/bin/sh
user:fZDKwSwF7XLtM:0:0:Normal User:/:/bin/sh
nobody:4spAtxv54N8aE:0:0:nobody for ftp:/:/bin/sh

Список групп пользователей:
# cat /etc/group
root::0:root,admin,support,user

Информация об используемых в системе средствах шифрования:
# cat /proc/crypto
name         : cipher_null
module       : kernel
type         : cipher
blocksize    : 1
min keysize  : 0
max keysize  : 0

name         : digest_null
module       : kernel
type         : digest
blocksize    : 1
digestsize   : 0

name         : compress_null
module       : kernel
type         : compression

name         : md5
module       : kernel
type         : digest
blocksize    : 64
digestsize   : 16

name         : sha1
module       : kernel
type         : digest
blocksize    : 64
digestsize   : 20

name         : des
module       : kernel
type         : cipher
blocksize    : 8
min keysize  : 8
max keysize  : 8

name         : des3_ede
module       : kernel
type         : cipher
blocksize    : 8
min keysize  : 24
max keysize  : 24

name         : aes
module       : kernel
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32

Конфигурационный файл демона динамического DNS:
# cat /var/ddnsd.cfg
[xxx.yyy.net]
username=xxx
password=qwerty
interface=ppp_0_0_35_1
service=dyndns


Оглавление:
Часть I. Описание, тех. характеристики
Часть II. Подключаем консольный кабель
Часть III. Boot Loader, OS Linux 2.6.8.1 и оболочка BusyBox 1.0
Часть IV. Собрал первую тестовую прошивку
Часть V. Процесс сборки/разборки и обновления firmware
Часть VI. Подключение JTAG кабеля

Tags: , , , , , , , , , , , ,

13 comments or Leave a comment
Comments
From: (Anonymous) Date: June 29th, 2008 08:55 am (UTC) (Link)

Помощь...

Вы мне скажите как это все подсоеденили к монитору?

И как компилировать прошивку?

если не трудно ответе на емаил: spm [ at ] bf - team.com (Без пробелов).
pudeev From: pudeev Date: June 29th, 2008 02:22 pm (UTC) (Link)

Re: Помощь...

Этот вопрос уже задавали. Пользуйтесь тэгами в моем журнале. Дополнительно ответ отправил на e-mail.
notffirk From: notffirk Date: October 21st, 2008 08:45 pm (UTC) (Link)
Сильно. Спасибо, очень интересно.
А есть ли какая либо возможность скачать прошивку момеда из самого момеда?
ничего лучшего чем написать сишный тул который откроет сокет и отправить туда всё из
00010000-00173157 : Kernel code
00173158-001a80bf : Kernel data
в голову не приходит.. есть ли какой то менее извращенный путь?
pudeev From: pudeev Date: October 22nd, 2008 06:38 am (UTC) (Link)
http://pudeev.livejournal.com/33915.html
# ./tjtagv2 -backup:wholeflash /noreset /bypass
# ./byteswap WHOLEFLASH.BIN wholeflash.bin

Или отпаять микросхему флэш памяти и на программаторе снять полный дамп.
notffirk From: notffirk Date: October 22nd, 2008 06:43 am (UTC) (Link)
спасибо!
anonymus88 From: anonymus88 Date: April 15th, 2010 11:54 am (UTC) (Link)
неткат бы прикрутить :)
pudeev From: pudeev Date: April 25th, 2010 08:52 am (UTC) (Link)

nc

На одной из тестовых прошивок есть nc.
anonymus88 From: anonymus88 Date: April 28th, 2010 02:57 pm (UTC) (Link)

Re: nc

ff выдал по ссылке следующее:
цит--Имеется информация, что эта веб-страница атакует компьютеры!

Имеется информация о том, что веб-страница pudeev.nightmail.ru используется для атак на компьютеры пользователей. В соответствии с вашими настройками безопасности она была заблокирована.
pudeev From: pudeev Date: April 30th, 2010 11:17 am (UTC) (Link)

Re: nc

Как же хорошо, что я уже второй год "сижу" в Опере и не вижу таких страшилок
anonymus88 From: anonymus88 Date: April 30th, 2010 05:33 pm (UTC) (Link)

Re: nc

просто предупредил :)
dileranorn From: dileranorn Date: May 16th, 2011 10:16 am (UTC) (Link)
Благо дарю искрение автора за статью очень полезная. Но вот не разобралась только во дном, как поменять пароль на wi-fi. И возможно ли это осуществить через telnet.
green_shaman From: green_shaman Date: October 22nd, 2012 12:49 pm (UTC) (Link)
Спасибо автору. А SIP все равно рвется секунд через 20 разговора, даже если вырубить siproxd.
From: livejean9 Date: June 7th, 2013 11:02 pm (UTC) (Link)

lan1 - wan

Здраствуйте Michael V. Pudeev. Подскажите пожалуйста. Lan1 изменяю в WAN через Web интерфейс. A c помощью telnet смена мак адреса, установка IP и установка шлюза. Команды telnet:
telnet 192.168.1.1
sh
ifconfig eth0 down
ifconfig eth0 hw ether 00:0D:87:5D:58:07 #change mac
ifconfig eth0 10.10.124.252 #change ip
ifconfig eth0 up
ip route add default via 10.10.124.254 # add gateway
В стандартной прошивке как сохранить сделанные изменения(mac,ip,gateway)?
(т.е.после загрузки чтоб не надо было вводить перечисленные команды)
Jean Petrov live9@mail.ru

Edited at 2013-06-07 11:06 pm (UTC)
13 comments or Leave a comment