Re: UBNT Nanostation 2 - vypnutí konsole na ttyS0

Petr Zapadlo zapik na email.cz
Pondělí Duben 1 20:08:44 CEST 2019


Zdravím,

bohužel, /etc/ttys není.

V adresáři /tmp jsou soubory:

boot.log     running.cfg  system.cfg
Ze souboru system.cfg se generuje pomocí linuxrc výsledná konfigurace.

Níže uvádím obsahy zajímavých souborů, kdyby někdo náhodou věděl jak se 
getty zbavit.

Díky

Petr

Mount:

/dev/mtdblock2 on / type squashfs (ro)
none on /proc type proc (rw)
tmpfs on /dev type tmpfs (rw)
pts on /dev/pts type devpts (rw)
tmpfs on /var type tmpfs (rw)

/etc/inittab:

# Executed on startup
::sysinit:/etc/rc.d/rc.sysinit
# Start an "askfirst" shell on the console (whatever that may be)
ttyS0::askfirst:/sbin/getty -L ttyS0 9600 vt100
# Stuff to do when restarting the init process
::restart:/sbin/init
# Run daemons
::wait:/usr/etc/rc.d/rc start
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/etc/rc.d/rc stop
::shutdown:/etc/rc.d/rc.stop
::shutdown:/bin/umount -a -r
null::respawn:/bin/infctld -m -c
null::respawn:/bin/syslogd -n
null::respawn:/bin/pwdog -d 300 -p 300 -c 3 -m 300 172.28.116.1
null::respawn:/bin/lighttpd -D -f /etc/lighttpd.conf
null::respawn:/bin/telnetd -F -p 23
null::respawn:/bin/dropbear -F -p 22
null::respawn:/bin/wpa_supplicant -D wext -i ath0 -c 
/etc/wpasupplicant_WPA-PSK.conf
null::respawn:/sbin/ntpclient -s -c 0 -l -h 0.ubnt.pool.ntp.org
null::respawn:/bin/mcad


Soubor /linuxrc ze kterého se generuje konfigurace:

#!/bin/sh
#

#
# Global environment
#

CONSOLE=/dev/ttyS0
export CONSOLE

TERM=linux
export TERM

PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH

# prepare filesystems
/bin/mount -n none /proc -t proc
echo 1 > /proc/sys/kernel/printk
echo 3 > /proc/sys/kernel/panic
/bin/mount -t tmpfs tmpfs /dev -o size=102400
/bin/mkdir /dev/pts
/bin/mknod /dev/console c 5 1
/bin/mknod /dev/full c 1 7
/bin/mknod /dev/kmem c 1 2
/bin/mknod /dev/loop0 b 7 0
/bin/mknod /dev/mem c 1 1
/bin/mknod -m 664 /dev/mtd0 c 90 0
/bin/mknod -m 664 /dev/mtd1 c 90 2
/bin/mknod -m 664 /dev/mtd2 c 90 4
/bin/mknod -m 664 /dev/mtd3 c 90 6
/bin/mknod -m 664 /dev/mtd4 c 90 8
/bin/mknod -m 664 /dev/mtd5 c 90 10
/bin/mknod -m 664 /dev/mtd6 c 90 12
/bin/mknod -m 664 /dev/mtd7 c 90 14
/bin/mknod -m 664 /dev/mtd8 c 90 16
/bin/mknod -m 664 /dev/mtd9 c 90 18
/bin/mknod -m 664 /dev/mtdblock0 b 31 0
/bin/mknod -m 664 /dev/mtdblock1 b 31 1
/bin/mknod -m 664 /dev/mtdblock2 b 31 2
/bin/mknod -m 664 /dev/mtdblock3 b 31 3
/bin/mknod -m 664 /dev/mtdblock4 b 31 4
/bin/mknod -m 664 /dev/mtdblock5 b 31 5
/bin/mknod -m 664 /dev/mtdblock6 b 31 6
/bin/mknod -m 664 /dev/mtdblock7 b 31 7
/bin/mknod -m 664 /dev/mtdblock8 b 31 8
/bin/mknod -m 664 /dev/mtdblock9 b 31 9
/bin/mknod -m 666 /dev/null c 1 3
/bin/mknod /dev/port c 1 4
/bin/mknod /dev/random c 1 8
/bin/mknod /dev/rtc c 10 135
/bin/mknod /dev/tty c 5 0
/bin/mknod /dev/tty0 c 4 0
/bin/mknod /dev/tty1 c 4 1
/bin/mknod /dev/tty2 c 4 2
/bin/mknod /dev/tty3 c 4 3
/bin/mknod /dev/ttyS0 c 4 64
/bin/mknod /dev/urandom c 1 9
/bin/mknod /dev/zero c 1 5
/bin/mknod /dev/ptmx c 5 2
/bin/mknod /dev/watchdog c 10 130
/bin/mknod /dev/gpio c 127 0
/bin/mknod /dev/ppp c 108 0
/bin/mknod /dev/int c 69 0
/bin/mount -n pts /dev/pts -t devpts
/bin/mount -n tmpfs /var -t tmpfs -o size=5242880
/bin/mkdir -p /var/run /var/tmp /var/log /var/etc /var/etc/persistent
/bin/chmod 775 /var/run /var/tmp /var/log /var/etc /var/etc/persistent

echo -n "Checking /etc..."
# making sure that critical files are in place
mkdir -p /etc/rc.d /etc/init.d
# forced update
for f in inittab rc.d/rc.sysinit rc.d/rc rc.d/rc.stop ppp; do
         cp -f -r /usr/etc/$f /etc/$f
done

mkdir -p /etc/udhcpc
# do not update if exist
for f in passwd group login.defs profile hosts host.conf \
fstab udhcpc/udhcpc startup.list udhcpc_services; do
     if ! [ -e /etc/$f ]; then
         cp -f /usr/etc/$f /etc/$f
     fi
done

mkdir -p /etc/sysinit
# make symlinks if do not exist
for f in services protocols shells mime.types ethertypes; do
     if ! [ -e /etc/$f ]; then
         ln -s /usr/etc/$f /etc/$f
     fi
done

mkdir -p /etc/boa
# check if we have uploaded certificates
for f in server.crt server.key; do
     if [ -e /etc/persistent/https/$f ]; then
         ln -s /etc/persistent/https/$f /etc/boa/$f
     else
         ln -s /usr/etc/$f /etc/boa/$f
     fi
done

echo "."

# required for 2.5 kernel, but won't hurt for 2.2
if [ -e /proc/sys/kernel/real-root-dev ]; then
     echo 256 > /proc/sys/kernel/real-root-dev
fi

# System configuration
mkdir -p /etc/sysinit/
/sbin/cfgmtd -r -p /etc/ -f /tmp/system.bak
if [ $? -ne 0 ]; then
/sbin/cfgmtd -r -p /etc/ -t 2 -f /tmp/system.bak
if [ $? -ne 0 ]; then
cp /usr/etc/system.cfg /tmp/system.bak
fi
fi
sort /tmp/system.bak > /tmp/system.cfg
rm /tmp/system.bak
cp /tmp/system.cfg /tmp/running.cfg

# Set timezone
TIMEZONE=`grep system\.timezone= /tmp/system.cfg | cut -f2 -d'='`
[ ! -z $TIMEZONE ] && echo $TIMEZONE > /etc/TZ

# Set device date to firmware build date or date from config (if set)
BDATE=072413422015
CFG_DATE_STATUS=`grep system\.date\.status= /tmp/system.cfg | cut -f2 -d'='`
CFG_DATE=`grep system\.date\.timestamp= /tmp/system.cfg | cut -f2 -d'='`
if [ ".$CFG_DATE_STATUS" = ".enabled" ] && [ ! -z $CFG_DATE ]; then
         date -s $CFG_DATE >/dev/null 2>&1
elif [ ! -z $BDATE ]; then
         date -s $BDATE >/dev/null 2>&1
fi

# Run configuration parser
[ -e /sbin/ubntconf ] && /sbin/ubntconf

echo "Executing init..."
exec /sbin/init -f

echo "INTERNAL ERROR!!! Cannot run /sbin/init."



Dne 30.3.2019 v 21:21 Jindrich Fucik napsal(a):
> soubor /etc/ttys na tvém operačním systému existuje?
>
>
> Dne 30.3.2019 v 18:51 Petr Zapadlo napsal(a):
>> Zdravím,
>>
>> potřeboval bych k Nanostation 2 připojit přes seriový port zařízení a 
>> mít možnost na nanostation sledovat telemetrii z toho zařízení která 
>> přichází po seriovém portu.
>>
>> Mám to rozložené na stole, Nanostation má seriový port i dokonce 
>> zapájený hřebínek.  takže propojení je dílem okamžiku.  Problém je 
>> však v tom, že na seriovém portu sedí konsole (getty) a nedaří se mi 
>> ho zbavit.  Nepotřebuji to zkonfigurovat natrvalo, stačí mi, když se 
>> přihlásím, "zabiju getty" a  navážu komunikaci se zařízením sedícím 
>> na seriovém portu.
>>
>> Zkoušel jsem:
>>
>> - jen tak zabít getty, hned se restartne znovu (pochopitelně)
>>
>> - otevřít /etc/inittab a zakomentovat řádek: 
>> "ttyS0::askfirst:/sbin/getty -L ttyS0 9600 vt100", následně init q a 
>> kill getty. Opět se potvora zase spustí.
>>
>> - změnit řádek  a getty poslat na jiný port - nijak se to neprojeví.
>>
>> Zřejmě je to ještě nějak jinak. Jestli jsem to správně pochopil, tak 
>> se konfigurační soubory generují za letu pomocí skriptu linuxrc. Ten 
>> je však pouze ro  a nemůžu zakomentovat ten řádek co pak spadne do 
>> inittabu.
>>
>> Nemám velkou zkušenost s embedded  linuxem, takže nevím jak na to.
>>
>> Ví někdo jak na to?
>>
>> Díky /dev/mtdblock2 on / type squashfs (ro)
>> none on /proc type proc (rw)
>> tmpfs on /dev type tmpfs (rw)
>> pts on /dev/pts type devpts (rw)
>> tmpfs on /var type tmpfs (rw)
>>
>>
>> Petr
>>
>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list