ViaSat rm4100 Memory Dump

16 minute read

Published:

This is part of a series on reversing the ViaSat rm4100 satellite modem.

Hardware

Dumping Contents

Flash

Flash in programmer

vm dumping memory

We will dump this a few times to make sure we aren’t getting a different image

rjmendez@MrPink:~/viasat_rm4100$ sha256sum rm4100_mx29gl256flt2i-90q_*.bin
307930781d32c3c5575bcc477c416f7d2d83d073d29172dd050aec1ff519fca7  rm4100_mx29gl256flt2i-90q_0.bin
307930781d32c3c5575bcc477c416f7d2d83d073d29172dd050aec1ff519fca7  rm4100_mx29gl256flt2i-90q_1.bin
307930781d32c3c5575bcc477c416f7d2d83d073d29172dd050aec1ff519fca7  rm4100_mx29gl256flt2i-90q_2.bin
307930781d32c3c5575bcc477c416f7d2d83d073d29172dd050aec1ff519fca7  rm4100_mx29gl256flt2i-90q_3.bin

Lets see what we have with strings:

rjmendez@MrPink:~/viasat_rm4100$ strings -n 40 rm4100_mx29gl256flt2i-90q_0.bin | head
## #REOR R## #lPaeesR SETEt ehb aodr# ##
PI Dabkcrpseuserw roakornu devirifde ,otko%  dolpo
PI Dabkcrpseuserw roakornu dAFLIDEv reifacitno .dAujtso tcoe_npi_dpbe_anlb(e )of rhtsic ih!p
PI Dabkcrpseuserw roakornu dAFLIDE .dAujtso tcoe_npi_dpbe_anlb(e )of rhtsic ih!p
CPeI :lAgiingnT PLc uotnre sO(TUP_C_UOTN%=)d
AFAT:LE rrroi initlazini grfeem mero yilts
REOR:RU anlb eota llcota eemomyrf roh ae.p.. .1(
REOR:RU anlb eota llcota eobtooldarer sereev demomyr( dard :x0x% ,isez :x0x%.)
AWNRNI:GN  oeresvrdem mero yof rmiga eoldani.g
REOR:RU anlb eota llcota eilun xeresvrdem mero ya(dd:r0 %x,xs zi:e0 %x)x

That isn’t quite right, it looks like our data is out of order. We can use dd (The DISK DESTROYER) to swap these around.

rjmendez@MrPink:~/viasat_rm4100$ dd conv=swab if=rm4100_mx29gl256flt2i-90q_0.bin of=rm4100_mx29gl256flt2i-90q_0.bin.swapbytes
65536+0 records in
65536+0 records out
33554432 bytes (34 MB, 32 MiB) copied, 0.185042 s, 181 MB/s
rjmendez@MrPink:~/viasat_rm4100$ strings -n 40 rm4100_mx29gl256flt2i-90q_0.bin.swapbytes | head
### ERROR ### Please RESET the board ###
IPD backpressure workaround verified, took %d loops
IPD backpressure workaround FAILED verfication. Adjust octeon_ipd_bp_enable() for this chip!
IPD backpressure workaround FAILED. Adjust octeon_ipd_bp_enable() for this chip!
PCIe: Aligning TLP counters (OUT_P_COUNT=%d)
FATAL: Error initializing free memory list
ERROR: Unable to allocate memory for heap.... (1)
ERROR: Unable to allocate bootloader reserved memory (addr: 0x%x, size: 0x%x).
WARNING: No reserved memory for image loading.
ERROR: Unable to allocate linux reserved memory (addr: 0x%x, size: 0x%x).

Much better! Now we can start looking at what we have besides strings from what looks like uboot.

Extracting Data

Binwalk does a pretty great job, it does have some “trouble” sometimes, its always a good idea to verify what its telling you with a hex editor.

rjmendez@MrPink:~/viasat_rm4100$ binwalk -E rm4100_mx29gl256flt2i-90q_0.bin.swapbytes

DECIMAL       HEXADECIMAL     ENTROPY
--------------------------------------------------------------------------------
0             0x0             Falling entropy edge (0.668093)
524288        0x80000         Rising entropy edge (0.994561)
14368768      0xDB4000        Falling entropy edge (0.810862)
14417920      0xDC0000        Rising entropy edge (0.997903)
14811136      0xE20000        Falling entropy edge (0.606425)
15073280      0xE60000        Rising entropy edge (0.997149)
15089664      0xE64000        Falling entropy edge (0.103024)
15204352      0xE80000        Rising entropy edge (0.994314)
29081600      0x1BBC000       Falling entropy edge (0.795012)
29097984      0x1BC0000       Rising entropy edge (0.997356)
29786112      0x1C68000       Falling entropy edge (0.634911)
30031872      0x1CA4000       Falling entropy edge (0.752746)
30146560      0x1CC0000       Rising entropy edge (0.980162)
30162944      0x1CC4000       Falling entropy edge (0.815836)
30310400      0x1CE8000       Rising entropy edge (0.984965)
30326784      0x1CEC000       Falling entropy edge (0.801491)
30408704      0x1D00000       Rising entropy edge (0.993756)
30539776      0x1D20000       Falling entropy edge (0.001377)
30670848      0x1D40000       Rising entropy edge (0.994107)
30801920      0x1D60000       Falling entropy edge (0.001377)
30932992      0x1D80000       Rising entropy edge (0.994297)
31195136      0x1DC0000       Falling entropy edge (0.001377)
31326208      0x1DE0000       Rising entropy edge (0.993585)
31883264      0x1E68000       Rising entropy edge (0.993771)
31981568      0x1E80000       Falling entropy edge (0.001377)
32112640      0x1EA0000       Rising entropy edge (0.979396)
32145408      0x1EA8000       Rising entropy edge (0.977967)
32227328      0x1EBC000       Falling entropy edge (0.790373)
32571392      0x1F10000       Falling entropy edge (0.819581)
33030144      0x1F80000       Rising entropy edge (0.995752)
33046528      0x1F84000       Falling entropy edge (0.825947)
33161216      0x1FA0000       Falling entropy edge (0.001377)
33292288      0x1FC0000       Rising entropy edge (0.970452)
33308672      0x1FC4000       Falling entropy edge (0.802592)
33374208      0x1FD4000       Rising entropy edge (0.983023)
33390592      0x1FD8000       Falling entropy edge (0.845397)
33406976      0x1FDC000       Rising entropy edge (0.971143)
33423360      0x1FE0000       Falling entropy edge (0.000000)

Binwalk entropy graph

rjmendez@MrPink:~/viasat_rm4100$ binwalk rm4100_mx29gl256flt2i-90q_0.bin.swapbytes

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
207598        0x32AEE         U-Boot version string, "U-Boot 1.1.1)"
236424        0x39B88         CRC32 polynomial table, big endian
524308        0x80014         gzip compressed data, from Unix, last modified: 1970-01-01 00:00:00 (null date)
2923835       0x2C9D3B        HPACK archive data
15073280      0xE60000        gzip compressed data, from Unix, last modified: 2016-04-22 21:22:24
15204372      0xE80014        gzip compressed data, from Unix, last modified: 1970-01-01 00:00:00 (null date)
29884416      0x1C80000       POSIX tar archive (GNU)

That kind of makes sense, the entropy still looks a little weird for a tar file though.

01c6a100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
01c80000  63 65 72 74 73 2f 00 00  00 00 00 00 00 00 00 00  |certs/..........|
01c80010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
01c80060  00 00 00 00 30 30 30 30  37 35 35 00 30 30 30 30  |....0000755.0000|
01c80070  30 30 30 00 30 30 30 30  30 30 30 00 30 30 30 30  |000.0000000.0000|
01c80080  30 30 30 30 30 30 30 00  31 31 33 31 37 32 33 35  |0000000.11317235|
01c80090  34 33 32 00 30 31 30 36  37 35 00 20 35 00 00 00  |432.010675. 5...|
01c800a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
01c80100  00 75 73 74 61 72 20 20  00 72 6f 6f 74 00 00 00  |.ustar  .root...|
01c80110  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
01c80120  00 00 00 00 00 00 00 00  00 72 6f 6f 74 00 00 00  |.........root...|
01c80130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

Seems okay.

01c823e0  52 54 49 46 49 43 41 54  45 2d 2d 2d 2d 2d 0d 0a  |RTIFICATE-----..|
01c823f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
01c82800  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
01ca0000  19 85 20 03 00 00 00 0c  f0 60 dc 98 19 85 e0 01  |.. ......`......|
01ca0010  00 00 00 2b 3e 42 24 27  00 00 00 01 00 00 00 00  |...+>B$'........|
01ca0020  00 00 00 02 4b 3d 3b 27  03 04 00 00 1b b9 c8 52  |....K=;'.......R|
01ca0030  72 73 02 ec 63 61 6c ff  19 85 e0 02 00 00 00 44  |rs..cal........D|

This looks like JFFS2 magic bytes.

rjmendez@MrPink:~/viasat_rm4100$ dd skip=30015488 count=3538944 bs=1 if=rm4100_mx29gl256flt2i-90q_0.bin.swapbytes of=rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000
3538944+0 records in
3538944+0 records out
3538944 bytes (3.5 MB, 3.4 MiB) copied, 6.12366 s, 578 kB/s
rjmendez@MrPink:~/viasat_rm4100$ hd rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000 | head
00000000  19 85 20 03 00 00 00 0c  f0 60 dc 98 19 85 e0 01  |.. ......`......|
00000010  00 00 00 2b 3e 42 24 27  00 00 00 01 00 00 00 00  |...+>B$'........|
00000020  00 00 00 02 4b 3d 3b 27  03 04 00 00 1b b9 c8 52  |....K=;'.......R|
00000030  72 73 02 ec 63 61 6c ff  19 85 e0 02 00 00 00 44  |rs..cal........D|
00000040  a4 ef 22 3e 00 00 00 02  00 00 00 01 00 00 41 ed  |..">..........A.|
00000050  00 00 00 00 00 00 00 00  4b 3d 3b 27 4b 3d 3b 27  |........K=;'K=;'|
00000060  4b 3d 3b 27 00 00 00 00  00 00 00 00 00 00 00 00  |K=;'............|
00000070  00 00 00 00 00 00 00 00  2e 11 1b 8a 19 85 e0 01  |................|
00000080  00 00 00 2e 4e 28 d0 a8  00 00 00 01 00 00 00 01  |....N(..........|
00000090  00 00 00 03 4b 3d 3b 27  06 04 00 00 73 11 ea c1  |....K=;'....s...|
rjmendez@MrPink:~/viasat_rm4100$ hd rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000 | tail
0035ebe0  69 6d 61 67 65 3d 31 00  73 77 31 5f 73 69 7a 65  |image=1.sw1_size|
0035ebf0  3d 64 33 65 63 36 31 00  00 6d 61 67 65 3d 30 00  |=d3ec61..mage=0.|
0035ec00  73 77 30 5f 73 69 7a 65  3d 64 32 36 37 33 36 00  |sw0_size=d26736.|
0035ec10  00 30 00 73 77 30 5f 73  69 7a 65 3d 64 32 36 37  |.0.sw0_size=d267|
0035ec20  33 36 00 00 61 67 65 3d  30 00 73 77 30 5f 73 69  |36..age=0.sw0_si|
0035ec30  7a 65 3d 64 32 36 37 33  36 00 00 73 77 30 5f 73  |ze=d26736..sw0_s|
0035ec40  69 7a 65 3d 64 32 36 37  33 36 00 00 00 00 00 00  |ize=d26736......|
0035ec50  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00360000

Seems we got some bonus uboot env settings at the tail as well. :D Time to see what binwalk can extract! We will start with the following.

rjmendez@MrPink:~/viasat_rm4100$ binwalk -Me rm4100_mx29gl256flt2i-90q_0.bin.swapbytes

And

rjmendez@MrPink:~/viasat_rm4100$ binwalk -Me rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000

Here’s what we got out.

rjmendez@MrPink:~/viasat_rm4100$ ls _rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000.extracted/jffs2-root -Rlat
_rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000.extracted/jffs2-root:
total 76
drwxr-xr-x 19 rjmendez rjmendez 69632 Sep  4 01:24 ..
drwxr-xr-x  3 rjmendez rjmendez  4096 Sep  4 01:24 .
drwxr-xr-x  5 rjmendez rjmendez  4096 Sep  4 01:24 fs_1

_rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000.extracted/jffs2-root/fs_1:
total 44
drwxr-xr-x 5 rjmendez rjmendez 4096 Sep  4 01:24 .
drwxr-xr-x 3 rjmendez rjmendez 4096 Sep  4 01:24 ..
-rw-r--r-- 1 rjmendez rjmendez    3 Sep  4 01:24 .boot-count
drwxr-xr-x 2 rjmendez rjmendez 4096 Sep  4 01:24 cal
drwxr-xr-x 2 rjmendez rjmendez 4096 Sep  4 01:24 config
-rw-rw-rw- 1 rjmendez rjmendez   86 Sep  4 01:24 .fileParserHash
-rw-r--r-- 1 rjmendez rjmendez   14 Sep  4 01:24 .flash_stats
-rw-rw-rw- 1 rjmendez rjmendez   11 Sep  4 01:24 .installed_date
drwxr-xr-x 2 rjmendez rjmendez 4096 Sep  4 01:24 logs
-rw-r--r-- 1 rjmendez rjmendez   46 Sep  4 01:24 .odometer
-rw-r--r-- 1 rjmendez rjmendez  108 Sep  4 01:24 vwa_memdb_perf.txt

_rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000.extracted/jffs2-root/fs_1/cal:
total 16
drwxr-xr-x 2 rjmendez rjmendez 4096 Sep  4 01:24 .
drwxr-xr-x 5 rjmendez rjmendez 4096 Sep  4 01:24 ..
-rw-r--r-- 1 rjmendez rjmendez 1000 Sep  4 01:24 ad9743_aux
-rw-r--r-- 1 rjmendez rjmendez  382 Sep  4 01:24 TXPower.txt

_rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000.extracted/jffs2-root/fs_1/config:
total 156
drwxr-xr-x 2 rjmendez rjmendez  4096 Sep  4 01:24 .
drwxr-xr-x 5 rjmendez rjmendez  4096 Sep  4 01:24 ..
-rw-r--r-- 1 rjmendez rjmendez  8192 Sep  4 01:24 .boot.env
-rw-r--r-- 1 rjmendez rjmendez  1401 Sep  4 01:24 dailystats
-rw-r--r-- 1 rjmendez rjmendez     2 Sep  4 01:24 .HW_ID
-rw-rw-rw- 1 rjmendez rjmendez  1086 Sep  4 01:24 lkg-fwd.conf
-rw-rw-rw- 1 rjmendez rjmendez  5579 Sep  4 01:24 lkg-ret.conf
-rw-r--r-- 1 rjmendez rjmendez    18 Sep  4 01:24 .MAC_addr
-rw-rw-rw- 1 rjmendez rjmendez 48415 Sep  4 01:24 outage_hist
-rw-r--r-- 1 rjmendez rjmendez    11 Sep  4 01:24 .part_number
-rwxr-xr-x 1 rjmendez rjmendez 57875 Sep  4 01:24 sat-info
-rw-r--r-- 1 rjmendez rjmendez    13 Sep  4 01:24 .serial_number

_rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000.extracted/jffs2-root/fs_1/logs:
total 1124
drwxr-xr-x 2 rjmendez rjmendez    4096 Sep  4 01:24 .
drwxr-xr-x 5 rjmendez rjmendez    4096 Sep  4 01:24 ..
-rw-r--r-- 1 rjmendez rjmendez 1139188 Sep  4 01:24 ut_X_2016-07-22T134139_<SNIP>.tar.gz

And

rjmendez@MrPink:~/viasat_rm4100$ ls -laht _rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.extracted/
total 55M
drwxr-xr-x 3 rjmendez rjmendez 4.0K Sep  4 01:34 _E80014.extracted
drwxr-xr-x 3 rjmendez rjmendez 4.0K Sep  4 01:33 _80014.extracted
drwxr-xr-x 5 rjmendez rjmendez 4.0K Sep  4 01:33 .
-rw-r--r-- 1 rjmendez rjmendez 3.5M Sep  4 01:33 1C80000.tar
-rw-r--r-- 1 rjmendez rjmendez  17M Sep  4 01:33 E80014
-rw-r--r-- 1 rjmendez rjmendez  18M Sep  4 01:33 E60000.gz
-rw-r--r-- 1 rjmendez rjmendez  17M Sep  4 01:33 80014
drwxr-xr-x 6 rjmendez rjmendez 4.0K Sep  4 01:33 ..
drwxr-xr-x 2 rjmendez rjmendez 4.0K Dec 31  2009 certs
rjmendez@MrPink:~/viasat_rm4100$ ls -laht _rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.extracted/certs/
total 24K
drwxr-xr-x 5 rjmendez rjmendez 4.0K Sep  4 01:33 ..
-rwxr-xr-x 1 rjmendez rjmendez  902 Nov 29  2014 Client_privKey.pem
-rwxr-xr-x 1 rjmendez rjmendez 2.5K Oct  7  2014 Client_Cert.pem
-rwxr-xr-x 1 rjmendez rjmendez 1.4K Oct  7  2014 TrustList.pem
-rwxr-xr-x 1 rjmendez rjmendez 1.4K Jun 18  2010 NAP_Cert.pem
drwxr-xr-x 2 rjmendez rjmendez 4.0K Dec 31  2009 .
rjmendez@MrPink:~/viasat_rm4100$ ls -laht _rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.extracted/_E80014.extracted/
total 28M
drwxr-xr-x 3 rjmendez rjmendez 4.0K Sep  4 01:34 _65E318.extracted
drwxr-xr-x 3 rjmendez rjmendez 4.0K Sep  4 01:34 .
-rw-r--r-- 1 rjmendez rjmendez  28M Sep  4 01:33 65E318
-rw-r--r-- 1 rjmendez rjmendez  55K Sep  4 01:33 4485B8
drwxr-xr-x 5 rjmendez rjmendez 4.0K Sep  4 01:33 ..
rjmendez@MrPink:~/viasat_rm4100$ ls -laht _rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.extracted/_E80014.extracted/_65E318.extracted/
total 28M
drwxr-xr-x 17 rjmendez rjmendez 4.0K Sep  4 01:34 cpio-root
drwxr-xr-x  3 rjmendez rjmendez 4.0K Sep  4 01:34 .
-rw-r--r--  1 rjmendez rjmendez  28M Sep  4 01:34 0.cpio
drwxr-xr-x  3 rjmendez rjmendez 4.0K Sep  4 01:34 ..
rjmendez@MrPink:~/viasat_rm4100$ ls -laht _rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.extracted/_E80014.extracted/_65E318.extracted/cpio-root/
total 2.1M
drwxr-xr-x  9 rjmendez rjmendez 4.0K Sep  4 01:34 etc
drwxr-xr-x  3 rjmendez rjmendez 4.0K Sep  4 01:34 lib32
drwxr-xr-x  2 rjmendez rjmendez 4.0K Sep  4 01:34 sbin
drwxr-xr-x  6 rjmendez rjmendez 4.0K Sep  4 01:34 opt
drwx------  5 rjmendez rjmendez 4.0K Sep  4 01:34 root
drwxr-xr-x  7 rjmendez rjmendez 4.0K Sep  4 01:34 var
drwxr-xr-x 17 rjmendez rjmendez 4.0K Sep  4 01:34 .
-rwx---r--  1 rjmendez rjmendez 7.2K Sep  4 01:34 WMM2010.COF
drwxr-xr-x  2 rjmendez rjmendez 4.0K Sep  4 01:34 bin
-rwxr-xr-x  1 rjmendez rjmendez 664K Sep  4 01:34 fpga_p3.rbf
-rwxr-xr-x  1 rjmendez rjmendez 105K Sep  4 01:34 ODU_app_etria.bin
-rwxr-xr-x  1 rjmendez rjmendez  56K Sep  4 01:34 ODU_app_kacst.bin
-rwxr-xr-x  1 rjmendez rjmendez  59K Sep  4 01:34 ODU_app_tria.bin
-rwxr-xr-x  1 rjmendez rjmendez  91K Sep  4 01:34 sat-info
-rwxr-xr-x  1 rjmendez rjmendez 2.4K Sep  4 01:34 cert_load.sh
-rwxr-xr-x  1 rjmendez rjmendez   35 Sep  4 01:34 get
lrwxrwxrwx  1 rjmendez rjmendez   12 Sep  4 01:34 hw -> /root/ut_mac
-rwxr-xr-x  1 rjmendez rjmendez 876K Sep  4 01:34 il_ram.bin
drwxr-xr-x  4 rjmendez rjmendez 4.0K Sep  4 01:34 lib
-rwxr-xr-x  1 rjmendez rjmendez   64 Sep  4 01:34 load
lrwxrwxrwx  1 rjmendez rjmendez   12 Sep  4 01:34 oct-linux-csr -> /root/ut_mac
-rwxr-xr-x  1 rjmendez rjmendez   35 Sep  4 01:34 put
lrwxrwxrwx  1 rjmendez rjmendez   12 Sep  4 01:34 TxBurst -> /root/ut_mac
-rwxr-xr-x  1 rjmendez rjmendez 1.1K Sep  4 01:34 bram_1.bin
-rwxr-xr-x  1 rjmendez rjmendez  768 Sep  4 01:34 bram_2.bin
-rwxr-xr-x  1 rjmendez rjmendez  128 Sep  4 01:34 Demod_Cfg_Reg.bin
-rwxr-xr-x  1 rjmendez rjmendez 1.0K Sep  4 01:34 Demod_Control_LUT.bin
drwxr-xr-x  2 rjmendez rjmendez 4.0K Sep  4 01:34 dev
lrwxrwxrwx  1 rjmendez rjmendez   10 Sep  4 01:34 init -> /sbin/init
-rwxr-xr-x  1 rjmendez rjmendez  34K Sep  4 01:34 LDPC_Address_LUT.bin
lrwxrwxrwx  1 rjmendez rjmendez   12 Sep  4 01:34 linuxrc -> /bin/busybox
-rwxr-xr-x  1 rjmendez rjmendez  16K Sep  4 01:34 LLR_LUT_16PSK.bin
-rwxr-xr-x  1 rjmendez rjmendez  16K Sep  4 01:34 LLR_LUT_8PSK.bin
lrwxrwxrwx  1 rjmendez rjmendez   12 Sep  4 01:34 rl_fpga -> /sbin/rlfpga
-rwxr-xr-x  1 rjmendez rjmendez 102K Sep  4 01:34 skyphy
drwxr-xr-x  2 rjmendez rjmendez 4.0K Sep  4 01:34 lib64
drwxr-xr-x  7 rjmendez rjmendez 4.0K Sep  4 01:34 mnt
drwxr-xr-x  2 rjmendez rjmendez 4.0K Sep  4 01:34 proc
drwxr-xr-x  2 rjmendez rjmendez 4.0K Sep  4 01:34 sys
drwxrwxrwt  2 rjmendez rjmendez 4.0K Sep  4 01:34 tmp
drwxr-xr-x  8 rjmendez rjmendez 4.0K Sep  4 01:34 usr
drwxr-xr-x  3 rjmendez rjmendez 4.0K Sep  4 01:34 ..

It looks like there is an alternate boot filesystem in case of a failed over the air upgrade, pretty good idea if you ask anyone deploying stuff like these, double the space used but probably not looking at bricking with a bad firmware update.

rjmendez@MrPink:~/viasat_rm4100/_rm4100_mx29gl256flt2i-90q_0.bin.swapbytes.0x000001ca0000-0x000002000000.extracted/jffs2-root/fs_1/config$ strings .boot.env 
^baudrate=115200
download_baudrate=115200
bootloader_flash_update=protect off ${uboot_flash_addr} +${uboot_flash_size};erase ${uboot_flash_addr} +${uboot_flash_size};cp.b ${fileaddr} ${uboot_flash_addr} ${uboot_flash_size}
burn_app=erase ${flash_unused_addr} +${filesize};cp.b ${fileaddr} ${flash_unused_addr} ${filesize}
bf=bootoct ${flash_unused_addr} forceboot numcores=${numcores}
nuke_env=protect off ${env_sector_addr} +${env_sector_size}; erase ${env_sector_addr} +${env_sector_size}
autoload=n
netretry=no
coremask=3
max_sw_size=1C00000
sw_hdr_len=14
sw0_flash_offset=80000
sw1_flash_offset=e80000
sw0_indicator=0
sw1_indicator=1
calc_sw_size_long=setexpr sw_copy_len_long ${sw_copy_len} / 4; setexpr len_mod ${sw_copy_len} % 4; if test ${len_mod} != 0; then setexpr sw_copy_len_long ${sw_copy_len_long} + 1; fi
calc_sw_vars=setenv sw_start_addr ${sw_addr}; setenv sw_copy_len ${sw_size}; run calc_sw_size_long
clear_sw_vars=setenv sw_addr; setenv sw_start_addr; setenv sw_copy_len; setenv sw_copy_len_long
wr_image_setup=setexpr sw_addr ${flash_base_addr} + ${sw0_flash_offset}; sw_size=${filesize}
wr_image_finish=erase ${sw_addr} +${sw0_size}; cp.l ${fileaddr} ${sw_start_addr} ${sw_copy_len_long}; setenv current_sw_image ${sw0_indicator}; setenv sw0_size ${sw_size}; run clear_sw_vars; saveenv
wr_image=run wr_image_setup; run calc_sw_vars; run wr_image_finish
get_boot_args=if test ${cli_enable} = 0; then cli_arg=console=NULL; if test ${bootdelay} > 0; then setenv bootdelay 0; saveenv; fi; fi; setenv boot_args coremask=${coremask} ${cli_arg} mem=${sdram_size_dec}
boot_ram=run get_boot_args; bootoctlinux ${loadaddr} ${boot_args}
load_sw_from_flash=run calc_sw_vars; cp.l ${sw_start_addr} ${loadaddr} ${sw_copy_len_long}; run clear_sw_vars
boot_flash=run load_sw_from_flash; run boot_ram
boot_sw0=echo Booting Software Image 0; setenv booting_sw_image 0; setexpr sw_addr ${flash_base_addr} + ${sw0_flash_offset}; sw_size=${sw0_size}; run boot_flash; echo Failed to boot SW Image 0; setenv current_sw_image 1; saveenv
boot_sw1=echo Booting Software Image 1; setenv booting_sw_image 1; setexpr sw_addr ${flash_base_addr} + ${sw1_flash_offset}; sw_size=${sw1_size}; run boot_flash; echo Failed to boot SW Image 1; setenv current_sw_image 0; saveenv
boot_sw=vsat_mtest; if test ${current_sw_image} = ${sw0_indicator}; then run boot_sw0; run boot_sw1; else run boot_sw1; run boot_sw0; fi
bootcmd=run boot_sw