Linux-on-thin-client links
- Open Evo T20: http://open-evot20.sourceforge.net
- Open Evo T20 mailing list: http://sourceforge.net/mail/?group_id=189531
- http://www.kazak.ws/evo/
- Wyse WinTerm hacking: http://winterm.gaast.net (mentions Wyse WT3200LE, Wyse 3320SE, Wyse 3360SE, Wyse WT3360SE, Compaq T1000, Compaq T1010, Compaq T20)
- lots of T20 notes (in German): http://www.pug.org/mediawiki/index.php/Thin_Client_evo_T20
- http://www.petervdbosch.nl/doku.php?id=evot20 (previously at http://www.petervdbosch.nl/EvoT20)
- http://www.bastianello.it/en_evo_t30.php
- something Czech: http://www.penguin.cz/novinky-view.php?id=1137&showc=1
- Inside the Winterm: http://www.ccs.neu.edu/home/bchafy/t1010.html
- Wyse Winterm 3315se Teardown and Repurpose - old and rather weird link: http://www-staff.lboro.ac.uk/~elvpc/bikes.html?http://www-staff.lboro.ac.uk/~elvpc/electronics/Wyse3315se.html
- WYSE Winterm Hacking: Hacking the 3200LE: http://www.aspiredillusion.com/winterm/3200
- WYSE Winterm Hacking: Hacking the 3360SE: http://www.aspiredillusion.com/winterm/3360
- Linux on Wyse 3125SE (WT3125SE): http://www.treeofice.net/~pez/3125se.php
- Linux on a winterm: http://winterm-linux.blogspot.com
- useful T20 hacking info: http://muzso.hu/evo_t20
- http://usefulthings.org.uk/index.php/archives/linux-on-compaq-evo-t20
- http://www.wlug.org.nz/CompaqEvoT20Notes
- Compaq t1500 remote booting: bad link: http://neykov.name/t1500 maybe moved to http://www.zen49396.zen.co.uk/T1500/2.4-kernel/Compaq t1500 remote booting.htm
- COMPAQ Winterm: http://wiki.ltsp.org/twiki/bin/view/Ltsp/CompaqWintermLTSP
- Evo T20 Thinclient To ThinServer: http://www.haxordbox.com/index.php?option=content&task=view&id=40&catid=31&Itemid=52
- Booting linux without reflashing, on a T30: http://www.dlitz.net/software/evo-netboot/
- Hacking an Evo T30: http://www.amphibike.org/index.cgi?page=pages/6_misc/hacking_evo
- http://parkytowers.me.uk/thin/
- http://baszerr.org/doku.php?id=prjs:t-20_evo:t-20_evo
Thin client related links
- LTSP and t20: http://marc.theaimsgroup.com/?l=ltsp-discuss&w=2&r=1&s=t20&q=b
- Flashing T20 from a linux server: http://www.convolutedtheory.com/pages/netxfer_on_linux_howto
- Putting DSL into initrd: http://damnsmalllinux.org/cgi-bin/forums/ikonboard.cgi?act=ST;f=26;t=15960;st=0
- Something about DSL initrd boot: http://cdprojekte.mattiasschlenker.de/Public/DSL-frominitrd/
- Reset to Factory Defaults or Unlock a Wyse Terminal: http://www.freewysemonkeys.com/modules.php?name=News&file=article&sid=55
Manufacturer and hardware links
- Manufacturer info - try searching for "evo t20" at http://www.hp.com/
- http://h18000.www1.hp.com/products/quickspecs/10865_div/10865_div.HTML
- apparently, the clients are rebadged <http://www.wyse.com[Wyse] 8235LE's.
- software & drivers: http://h20000.www2.hp.com/bizsupport/TechSupport/DriverDownload.jsp?&lang=en&cc=us&pnameOID=100771&taskId=135&prodTypeId=12454&prodSeriesId=96470&lang=en&cc=us
- hp t20 support centre: http://h20000.www2.hp.com/bizsupport/TechSupport/Home.jsp?&lang=en&cc=us&prodTypeId=12454&prodSeriesId=96470&lang=en&cc=us
Miscellaneous links
WinNT/WinXP boot record info:
- http://mirror.href.com/thestarman/asm/mbr/MBR_in_detail.htm
- http://mirror.href.com/thestarman/asm/mbr/STDMBR.htm
Evo T30
The Evo T30 looks like it might be a T20 with more I/O, but I've not yet laid my hands on one to check. I expect that the T30's should work with the process documented here, assuming you have a WinNT-based model.
hp T30 page: http://h20000.www2.hp.com/bizsupport/TechSupport/Home.jsp?lang=en&cc=us&prodSeriesId=96324&prodTypeId=12454
Debian boot from external USB HDD
The short version is this:
I modified my ordinary Debian initrd to include the usb modules and to specify the new root device (my boot files are on sda5, but sda1 is probably a more common option). (note: I have done this with both 2.4 and 2.6 kernels - slightly different methods needed for working with the initrd in each)
Patched grub according to the instructions by Dag Sverre.
Compiled grub with a fixed config file saying:
default 0
timeout 0
title Debian_sda5
root (hd0,0)
kernel /vmlinuz-2.4.27-2-386 root=/dev/sda5
initrd /initrd.img-2.4.27-2-386.usbboot
I believe that the standard firmware I used came from SP22462 and was named U96CPQ163.BIN - I chose that one because it is 95791kb (about as big as is possible, I think) which gave me plenty of room to work in (I don't know how to resize the image, so I'm stuck with whatever I start with)
Mounted a copy of the standard firmware as a loop device, modified the partition info to make the first partition be fat instead of ntfs, unmounted that loop.
Mounted the first partition as a loop device. Used dd to copy grub stage 1 & 2 files to the right sectors. Formatted it as a fat drive with extra large number of reserved sectors (to allow space for grub files before the filesystem). Used plain cp to copy my kernel and new initrd into place in the root of the drive. Unmounted the loop and flashed the T20 with the new bootp.bin
The usb hdd has Debian installed on it, in an ext3 partition (can't remember for certain how I got it there, but I think I just did an ordinary Debian install to the usb hdd using another computer).
I learned a lot from this:
http://www.ukhoneynet.org/research/honeystick-howto/
Testing speed of USB1.1 ports
booting 2.6 kernel off USB HDD with various init.d things disabled = from 13:20..15:30 = 2:10 boot (min:sec)
copying from UF to UH via usb1.1 = from 58:10..59:40 = 90s for 49M => 500M/49M*90/60 = 15min for 500Meg
kernel 2.4 vs 2.6
I just used stock Debian kernels, with initrd patched for usb boot, as mentioned above. For the T20 (and my particular interests), the 2.4 kernel is clearly better - the difference in speed is obvious without any fancy timing tests. In order to quantify things better, I used lmbench to run some tests (I don't know if there is a better tool, but it did what I needed).
kernel 2.4.27-2-386 (first column) vs kernel 2.6.18-3-486
Simple syscall: 0.80 0.88 microseconds
Simple read: 1.91 4.03 microseconds
Simple write: 1.46 2.77 microseconds
Simple stat: 19.10 25.21 microseconds
Simple fstat: 2.75 5.05 microseconds
Simple open/close: 32.40 53.69 microseconds
Select on 10 fd's: 8.48 9.18 microseconds
Select on 100 fd's: 61.24 56.88 microseconds
Select on 250 fd's: 153.99 136.52 microseconds
Select on 500 fd's: 297.15 276.52 microseconds
Select on 10 tcp fd's: 11.14 12.38 microseconds
Select on 100 tcp fd's: 142.28 117.54 microseconds
Select on 250 tcp fd's: 328.67 294.07 microseconds
Select on 500 tcp fd's: 663.27 600.42 microseconds
Signal handler installation: 4.23 5.98 microseconds
Signal handler overhead: 9.29 17.93 microseconds
Protection fault: 3.02 2.00 microseconds
Pipe latency: 24.59 90.61 microseconds
AF_UNIX sock stream latency: 94.51 210.00 microseconds
Process fork+exit: 1806.6 2522.65 microseconds
Process fork+execve: 6574.2 8860.50 microseconds
Process fork+/bin/sh -c: 26363 31827 microseconds
Yes, I know that I mistakenly tested a 386 kernel vs a 486 kernel, but my understanding is that it won't have made much difference, and I don't care enough to re-test. A regular part of my daily usage is running unison (it's like rsync) on local files - that accesses a lot of files and was deathly slow with the 2.6 kernel.
Speed
Whilst it certainly isn't a speed demon, the T20 running DSL is good enough to be useful. Firefox is slow to load, but once loaded it's fine for basic browsing (I have no idea about flash or streaming media). Dillo is faster (but I haven't played with it much yet, so can't comment more). Running as a client for viewing remote desktop of a windows machine also runs well.
Physical memory found in the model I have:
This T20 is listed at http://www.hp-store.com/PD_00320.aspx as being: "Base Unit, T20 NTe 96F/128R 238365-001 242305-001"
Inside the box I found:
- 64M Flash (2 x Toshiba TC58256AFT) + 32MB SmartMedia = 96M
- 128M SDRAM (4 x Hynix HY57V561620BT-H)
==> 96/128
The SmartMedia card is mapped at the end of memory (ie. the end of the disk image), so if you're not using all of memory then the T20 will run fine without it installed. This is the case where only kernel and initrd are installed (with the rest of the system on USB flash) - the kernel/initrd typically only amount to a few meg.
I haven't tried, but I suspect that download will fail if you are using a model that is meant to have a SmartMedia card but doesn't have it installed.
to reduce kernel messages on console
to get rid of eth0 wakeup messages either edit /etc/default/klogd and add "-c 5" (for example) - deprecated!
or use sysctl:
# sysctl -w kernel.printk=5
or fix it properly by patching broken natsemi module, as described on OpenEvoT20 mailling list?
I don't know if it changes elsewhere in DSL, but in linuxrc (in the initrd), the message level is set to 6.
"pci=" boot options
Trying to find an option which might enable access to internal flash drive via IDE ports:
pci=bios
- can't find usb at all and fails to bootpci=conf2
- can't find usb at all and fails to bootpci=nobios
- no changepci=biosirq
- no changepci=conf1
- no change
(None of these options produced anything useful)
General Notes
- seem to need USB keyboard for netxfer - holding down 'p' on PS2 kybd connected to PS2/USB adapter is just ignored (might work by tapping 'p' repeatedly - UPDATE: yes, tapping the key repeatedly does seem to work with a PS2/USB adapter)
- PS2/USB adapter seems to be OK for everything (although mouse plugged into same adapter as kybd seems to stop working sometimes and needs replugging)
- something seems to put the mouse into an unfortunate mode - I'm using it with another computer and a KVM - if I power up the T20 first then the other computer ignores the wheel/middlebutton of the mouse. If I power up the other computer first then both fully recognise the wheelmouse. I haven't tried to solve this yet - it may be trivial.
- NFS on Debian: need to edit
/etc/default/portmap
to remove restriction of NFS to localhost (comment out the line that says:OPTIONS="-i 127.0.0.1"
) - in
/opt/ltsp/i386/etc/lts.conf
change server to "nsc" - need to make sure NFS shares have readable permissions?
- to see what is being exported by NFS:
showmount -e
WinNT diagnostic tools
- Windows NT 4.0 Diagnostics - On the Task bar, click Start, then Run. Enter WINMSD.EXE, then click OK
- Windows Sector Inspector, "SecInspect.exe - View the contents of
master boot records, boot sectors, and IA64 GUID partition tables."
- download SecInspect from http://www.microsoft.com/windowsserver2003/techinfo/reskit/tools/default.mspx
- install SecInspect on another computer running Windows, then copy secinspect.exe to T20
- might work by installing msi file directly on T20 - I didn't try it
Administrator mode of standard firmware
- if your T20 never lets you get to a desktop (just gives a login screen) then you may need to re-flash it with standard firmware to allow login-free booting
- Once you have the standard NTe firmware running, at the desktop press these 5 keys in order: tab home end left right
- Then you'll get an auto-login dialog
- Set both username and password to "administrator" (all lowercase??)
- It will then want to reboot - do so.
- You will now be in administrator mode and will have access to the control panel etc.
- In order to get the admin mode to keep working indefinitely, you may need to repeat the process, then don't reboot, then flush WriteFilter Cache???
NetXfer of new firmware
(See articles for linux netxfer method)
For flashing the T20, I used netxfer18.exe
from sp22454, running under WinXP
and the Microsoft Java VM.
Either download msjavx86.exe
JVM from somewhere (I found it on the
laplink website) and use HP/Compaq netxfer software, or setup a bootp
server under linux.
To start download (assuming T20 is powered up, with power button showing green):
- run netxfer or bootp server.
- press & hold T20 power button until it turns amber.
- press and hold 'p' (lowercase) until T20 reboots and displays netxfer message.
- T20 will contact server and then display something relevant.
Notes:
- netxfer doesn't work with ordinary Sun JVM, you need the Microsoft
JVM (
msjavx86.exe
). - takes about 13s total from starting pressing power button until netxfer message is displayed.
- no need to physically disconnect/reconnect power.
- if you're using a PS/2 keyboard through a PS/2-to-USB adapter then you probably need to tap the 'p' key repeatedly until the netxfer message comes up (rather than just holding down p, as you can do on a USB keyboard).
- you don't need to be terribly quick pressing 'p' after power button goes amber - you can do it all with one hand without hurrying.
- netxfer works with ports 10067 + 10068 (dhcp), and port 10069 (tftp). If you press 'q' instead of 'p' then it uses ports 67/68/69 (which are 'normal' ports for dhcp/tftp)
Test copying speed to and from T20 over SSH
L400b $ scp -P 22 bootp.bin.std dsl@192.168.1.10:/dev/null
bootp.bin.std 100% 94MB 1.1MB/s 01:28
scp: /dev/null: truncate: Invalid argument
copying in opposite direction managed about half the bitrate. note: L400b is only a PII-400, but it's faster than the T20, so the T20 should be the only limiting factor. Copying from 667MHz machine to 400MHz machine, for comparison:
L667 $ scp bootp.bin 192.168.1.40:/dev/null
bootp.bin 100% 94MB 1.9MB/s 00:50
Using cfdisk on loop-mounted disk image
cfdisk 2.12r
Disk Drive: /dev/loop1
Size: 97255424 bytes, 97 MB
Heads: 212 Sectors per Track: 56 Cylinders: 16
Name Flags Part Type FS Type [Label] Sectors
----------------------------------------------------------------------------------
loop1p1 Boot, NC Primary NTFS 189952
from NetXfer of standard firmware SP22454
Note: I was unable to accurately apply Dag Sverre's method for finding files inside image, but these are the notes I made anyway:
filename: size: sizehex: sizehexbytes: supposedstartaddressinfile:
ulc_code.bin 262144 = 0x40000 04 00 00 00 04 01 8C = 262540
poweron.bmp 14120 = 0x3728 00 00 37 28 00 08 01 94 = 524692 dd bs=1 count=14120 if=bootp.bin of=poweron.bmp skip=820116 0xc8394
filesys0.img 31719424 = 0x1e40000 --> 0x01 e4 00 00 start=00 08 38 BC = 538812 actual start address is 0xcbabc ('partition' starts at 0xcbcbc)
filesys1.img 32768000 = 0x1f40000 --> 0x01 f4 00 00 start=01 EC 38 BC = 32258236
filesys2.img 32768000 = 0x1f40000 start=03 E0 38 BC = 65026236
- files appear to be stored consecutively with no gaps between them
patched legacy grub
$ bash ./configure \
--enable-preset-menu=presetmenu \
--enable-natsemi \
--enable-pci-direct \
--disable-ext2fs \
--disable-fat \
--disable-ffs \
--disable-ufs2 \
--disable-minix \
--disable-reiserfs \
--disable-vstatfs \
--disable-jfs \
--disable-xfs \
--disable-iso9660 \
--disable-md5-password \
--disable-serial
- needed to patch out test for running compiled c code in configure script, otherwise configure fails (this might be related to my umask or drive mounting options - it's not related to grub)
- still didn't compile; something wrong with natsemi code?
grub NatSemi problem
$ ./configure --enable-preset-menu=presetmenu --enable-natsemi --enable-pci-direct --disable-ext2fs --disable-fat --disable-ffs --disable-ufs2 --disable-minix --disable-reiserfs --disable-vstatfs --disable-jfs --disable-xfs --disable-iso9660--disable-md5-password --disable-serial
$ make clean
$ make all
make all-recursive
make[1]: Entering directory `/home/karlmw/prj/c-x86/grub-0.97'
Making all in netboot
make[2]: Entering directory `/home/karlmw/prj/c-x86/grub-0.97/netboot'
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../stage2 -I../stage1 -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -Os -fno-stack-protector -fno-builtin -nostdinc -DFSYS_TFTP=1 -DINCLUDE_NATSEMI=1 -DCONGESTED=1 -DCONFIG_PCI_DIRECT=1 -DNE_SCAN=0x280,0x300,0x320,0x340 -DWD_DEFAULT_MEM=0xCC000 -g -MT libdrivers_a-config.o -MD -MP -MF ".deps/libdrivers_a-config.Tpo" -c -o libdrivers_a-config.o `test -f 'config.c' || echo './'`config.c; \ then mv -f ".deps/libdrivers_a-config.Tpo" ".deps/libdrivers_a-config.Po"; else rm -f ".deps/libdrivers_a-config.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../stage2 -I../stage1 -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -Os -fno-stack-protector -fno-builtin -nostdinc -DFSYS_TFTP=1 -DINCLUDE_NATSEMI=1 -DCONGESTED=1 -DCONFIG_PCI_DIRECT=1 -DNE_SCAN=0x280,0x300,0x320,0x340 -DWD_DEFAULT_MEM=0xCC000 -g -MT libdrivers_a-fsys_tftp.o -MD -MP -MF ".deps/libdrivers_a-fsys_tftp.Tpo" -c -o libdrivers_a-fsys_tftp.o `test -f 'fsys_tftp.c' || echo './'`fsys_tftp.c; \ then mv -f ".deps/libdrivers_a-fsys_tftp.Tpo" ".deps/libdrivers_a-fsys_tftp.Po"; else rm -f ".deps/libdrivers_a-fsys_tftp.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../stage2 -I../stage1 -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -Os -fno-stack-protector -fno-builtin -nostdinc -DFSYS_TFTP=1 -DINCLUDE_NATSEMI=1 -DCONGESTED=1 -DCONFIG_PCI_DIRECT=1 -DNE_SCAN=0x280,0x300,0x320,0x340 -DWD_DEFAULT_MEM=0xCC000 -g -MT libdrivers_a-main.o -MD -MP -MF ".deps/libdrivers_a-main.Tpo" -c -o libdrivers_a-main.o `test -f 'main.c' || echo './'`main.c; \ then mv -f ".deps/libdrivers_a-main.Tpo" ".deps/libdrivers_a-main.Po"; else rm -f ".deps/libdrivers_a-main.Tpo"; exit 1; fi
main.c:57: error: static declaration of 'bootp_data' follows non-static declaration
./etherboot.h:534: error: previous declaration of 'bootp_data' was here
main.c:59: error: static declaration of 'end_of_rfc1533' follows non-static declaration
./etherboot.h:536: error: previous declaration of 'end_of_rfc1533' was here
main.c: In function 'udp_transmit':
main.c:231: warning: pointer targets in passing argument 1 of 'eth_transmit' differ in signedness
main.c:276: warning: pointer targets in passing argument 1 of 'eth_transmit' differ in signedness
main.c:290: warning: pointer targets in passing argument 1 of 'eth_transmit' differ in signedness
main.c: In function 'tftp':
main.c:462: warning: pointer targets in passing argument 1 of 'fnc' differ in signedness
main.c: In function 'rarp':
main.c:509: warning: pointer targets in passing argument 1 of 'eth_transmit' differ in signedness
main.c: In function 'udpchksum':
main.c:729: warning: dereferencing type-punned pointer will break strict-aliasing rules
main.c: In function 'await_reply':
main.c:893: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:895: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:925: warning: pointer targets in passing argument 1 of 'decode_rfc1533' differ in signedness
main.c: In function 'decode_rfc1533':
main.c:973: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:973: warning: pointer targets in passing argument 2 of 'grub_memcmp' differ in signedness
main.c:984: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:984: warning: pointer targets in passing argument 2 of 'grub_memcmp' differ in signedness
main.c:1057: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:1057: warning: pointer targets in passing argument 2 of 'grub_memcmp' differ in signedness
make[2]: *** [libdrivers_a-main.o] Error 1
make[2]: Leaving directory `/home/karlmw/prj/c-x86/grub-0.97/netboot'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/karlmw/prj/c-x86/grub-0.97'
make: *** [all] Error 2
Sector 0 of standard Evo T20 WinNT firmware
/
| /
| | /
| | | /
| | | | /
| | | | | /
| | | | | | /
| | | | | | | /
| | | | | | | | /
| | | | | | | | | /
| | | | | | | | | | /
| | | | | | | | | | | /
| | | | | | | | | | | | /
| | | | | | | | | | | | | /
| | | | | | | | | | | | | | /
| | | | | | | | | | | | | | | /
00000000 fa 33 c0 8e d0 bc 00 7c 8b f4 50 07 50 1f fb fc |.3.....|..P.P...|
00000010 bf 00 06 b9 00 01 f2 a5 ea 1d 06 00 00 be be 07 |................|
00000020 b3 04 80 3c 80 74 0e 80 3c 00 75 1c 83 c6 10 fe |...<.t..<.u.....|
00000030 cb 75 ef cd 18 8b 14 8b 4c 02 8b ee 83 c6 10 fe |.u......L.......|
00000040 cb 74 1a 80 3c 00 74 f4 be 8b 06 ac 3c 00 74 0b |.t..<.t.....<.t.|
00000050 56 bb 07 00 b4 0e cd 10 5e eb f0 eb fe bf 05 00 |V.......^.......|
00000060 bb 00 7c b8 01 02 57 cd 13 5f 73 0c 33 c0 cd 13 |..|...W.._s.3...|
00000070 4f 75 ed be a3 06 eb d3 be c2 06 bf fe 7d 81 3d |Ou...........}.=|
00000080 55 aa 75 c7 8b f5 ea 00 7c 00 00 49 6e 76 61 6c |U.u.....|..Inval|
00000090 69 64 20 70 61 72 74 69 74 69 6f 6e 20 74 61 62 |id partition tab|
000000a0 6c 65 00 45 72 72 6f 72 20 6c 6f 61 64 69 6e 67 |le.Error loading|
000000b0 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 | operating syste|
000000c0 6d 00 4d 69 73 73 69 6e 67 20 6f 70 65 72 61 74 |m.Missing operat|
000000d0 69 6e 67 20 73 79 73 74 65 6d 00 00 00 00 00 00 |ing system......|
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
CE 94 C0 96 = NT Drive Serial Number
/ / / / 80=bootable
| | | | / 00=head of starting sector
| | | | | /
000001b0 00 00 00 00 00 00 00 00 ce 94 c0 96 00 00 80 00 |................|
02 = cyl of starting sector
/ 00 = sector of starting sector
| / 07 = partition type=NTFS
| | / d3 38 0f = last sector (packed CHS) d3=Head 38=S f=Cyl
| | | / / / 01 00 00 00 = relative sectors = 0x00000001 = starting position within drive?
| | | | | | / / / / ff e5 02 00 = total sectors = 0x0002e5ff = 189951 ==> 189951*512 = 92.75MB
| | | | | | | | | | / / / /
| | | | | | | | | | | | | | _____0x1CE..0x1DD = second partition entry = all zeroes
| | | | | | | | | | | | | | /
000001c0 02 00 07 d3 38 0f 01 00 00 00 ff e5 02 00 00 00 |....8...........|
_____0x1DE..0x1ED = third partition entry = all zeroes
/
000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
_____0x1EE..0x1FD = third partition entry = all zeroes
/
000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
55 aa = 0xAA55 = signature of valid partition table
/ /
| |
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
Sector 1
/
| /
| | /
| | | /
| | | | /
| | | | | /
| | | | | | /
| | | | | | | /
| | | | | | | | /
| | | | | | | | | /
| | | | | | | | | | / 00 02 = 0x0200 = 512 bytes per sector
| | | | | | | | | | | | / 01 = 1 sector per cluster
| | | | | | | | | | | | | / 00 00 = reserved (always 0)
| | | | | | | | | | | | | | / /
| | | | | | | | | | | | | | | |
00000200 eb 5b 90 4e 54 46 53 20 20 20 20 00 02 01 00 00 |.[.NTFS .....|
00 00 00 00 00 = always zeroes for NTFS
/ / / / / f8 = fixed disk media ID
| | | | | / 00 00 = always zeroes for NTFS
| | | | | | / / 38 00 = 0x0038 = sectors per track = 56 sectors
| | | | | | | | / / d4 00 = 0x00d4 = number of heads = 212 heads
| | | | | | | | | | / / 01 00 00 00 = 0x00000001 = number of hidden sectors
| | | | | | | | | | | | / / / /
00000210 00 00 00 00 00 f8 00 00 38 00 d4 00 01 00 00 00 |........8.......|
00 00 00 00 = not used by NTFS
/ / / / 80 = drive number
| | | | / 00 80 00 = not important
| | | | | / / / ff e5 02 00 00 00 00 00 = 0x000000000002e5ff = total number of sectors in volume = 189951
| | | | | | | | / / / / / / / /
00000220 00 00 00 00 80 00 80 00 ff e5 02 00 00 00 00 00 |................|
00000230 20 00 00 00 00 00 00 00 ff 72 01 00 00 00 00 00 | ........r......|
00000240 02 00 00 00 08 00 00 00 9a fd 6d 80 11 6e 80 10 |..........m..n..|
00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 fa 33 c0 |..............3.|
00000260 8e d0 bc 00 7c fb b8 c0 07 8e d8 c7 06 54 00 00 |....|........T..|
00000270 00 c7 06 56 00 00 00 c7 06 5b 00 10 00 b8 00 0d |...V.....[......|
00000280 8e c0 2b db e8 07 00 68 00 0d 68 66 02 cb 50 53 |..+....h..hf..PS|
00000290 51 52 06 66 a1 54 00 66 03 06 1c 00 66 33 d2 66 |QR.f.T.f....f3.f|
000002a0 0f b7 0e 18 00 66 f7 f1 fe c2 88 16 5a 00 66 8b |.....f......Z.f.|
000002b0 d0 66 c1 ea 10 f7 36 1a 00 88 16 25 00 a3 58 00 |.f....6....%..X.|
000002c0 a1 18 00 2a 06 5a 00 40 3b 06 5b 00 76 03 a1 5b |...*.Z.@;.[.v..[|
000002d0 00 50 b4 02 8b 16 58 00 b1 06 d2 e6 0a 36 5a 00 |.P....X......6Z.|
000002e0 8b ca 86 e9 8a 36 25 00 b2 80 cd 13 58 72 2a 01 |.....6%.....Xr*.|
000002f0 06 54 00 83 16 56 00 00 29 06 5b 00 76 0b c1 e0 |.T...V..).[.v...|
00000300 05 8c c2 03 d0 8e c2 eb 8a 07 5a 59 5b 58 c3 be |..........ZY[X..|
00000310 59 01 eb 08 be e3 01 eb 03 be 39 01 e8 09 00 be |Y.........9.....|
00000320 ad 01 e8 03 00 fb eb fe ac 3c 00 74 09 b4 0e bb |.........<.t....|
00000330 07 00 cd 10 eb f2 c3 1d 00 41 20 64 69 73 6b 20 |.........A disk |
00000340 72 65 61 64 20 65 72 72 6f 72 20 6f 63 63 75 72 |read error occur|
00000350 72 65 64 2e 0d 0a 00 29 00 41 20 6b 65 72 6e 65 |red....).A kerne|
00000360 6c 20 66 69 6c 65 20 69 73 20 6d 69 73 73 69 6e |l file is missin|
00000370 67 20 66 72 6f 6d 20 74 68 65 20 64 69 73 6b 2e |g from the disk.|
00000380 0d 0a 00 25 00 41 20 6b 65 72 6e 65 6c 20 66 69 |...%.A kernel fi|
00000390 6c 65 20 69 73 20 74 6f 6f 20 64 69 73 63 6f 6e |le is too discon|
000003a0 74 69 67 75 6f 75 73 2e 0d 0a 00 33 00 49 6e 73 |tiguous....3.Ins|
000003b0 65 72 74 20 61 20 73 79 73 74 65 6d 20 64 69 73 |ert a system dis|
000003c0 6b 65 74 74 65 20 61 6e 64 20 72 65 73 74 61 72 |kette and restar|
000003d0 74 0d 0a 74 68 65 20 73 79 73 74 65 6d 2e 0d 0a |t..the system...|
000003e0 00 17 00 5c 4e 54 4c 44 52 20 69 73 20 63 6f 6d |...\NTLDR is com|
000003f0 70 72 65 73 73 65 64 2e 0d 0a 00 00 00 00 55 aa |pressed.......U.|
- note that WinXP uses a slightly different bootsector.
- WinCE is different again - I can't even figure out if there is a bootsector at all!
6/9/06
- used wireshark to get MAC address
- setup
/etc/dhcp3/dhcpd.conf
- added eth1 to
/etc/network/interfaces
- change/disable firewall for eth1
- run
ltspadmin
, 1st option, accept defaults and install all options
Setting up ltsp-server (0.93debian1) ...
NOTE: you will probably want to add to /etc/exports:
/opt/ltsp *(ro,no_root_squash,async)
and then run:
# invoke-rc.d nfs-kernel-server reload
Setting up ltsp-server-standalone (0.93debian1) ...
Stopping DHCP server: dhcpd3.
Starting DHCP server: dhcpd3 failed to start - check syslog for diagnostics.
invoke-rc.d: initscript dhcp3-server, action "force-reload" failed.
Notes to self, about patch creation
Dir structure, and method:
$ tree -d -L 1
.
|-- grub-0.97
`-- grub-0.97-DEvoSL
$ diff grub-0.97 grub-0.97-DEvoSL -ruN >devosl-grub.patch
grub-0.97
contains unpatched original sourcecodegrub-0.97-DEvoSL
contains sourcecode which I have patched
T20 pcb pics
Note: the board is rectangular - these pictures are non-rectangular because I took them at an angle to avoid flash reflections.
Front
- the big silver socket at bottom left normally has a 32MB SmartMedia card in it.
- the square socketed Winbond chip at bottom left is labelled: "(C) Wyse Tech" "02'V9.0" "251805-10"
Back
- the four Hynix ram chips at the top middle are HY57V561620BT-H (32MB each)
- the big NatSemi Geode chip on a diagonal near the middle is a CS5530A-UCE
- the two Toshiba flash chips in the bottom right are TC58256AFT (32MB each)
- the square chip just above the flash is labelled: "Wyse Tech" "251815-01"