Retrieved from Google Cache for http://externe.net/zaurus/forum/viewtopic.php?p=1102 (25 Narch 2005, 06:42:32 GMT).

  ----------------- NOTE --------------------
  I've tested all the below stuff on my z, and all it's working ok,
  never reflashed, never a problem or instability.
  But be aware, if something goes wrong, it's possible that your z. wont boot anymore,
  and that you need to re-flash them.
  See also my previous posts if you want more detailed info on z. boot/init process.
  ----------------- NOTE --------------------
  
  
  
  
  Ok, here is the whole.
  
  
  1] Download, from www.w-m-p.com/software/pocketworkstation/
  fbvnc-arm-1.3.3beta.gz
  zaurus-debian-big-v0.15.tgz
  
  
  
  1a] If you have a linux box, it's higly recommended that you install the usbdnet standalone module.
  i.ex. prdownloads.sourceforge.net/zaurus or www.opie.us/opie/devZone.php/usbdnet-standalone.tgz
  The kernel module, on the other hand, is very unstable & kernelpanic prone.
  [Of course it's possible also to do all the job via the Z keyboard]
  Anyway, if you want to use the usb cradle connectivity, do something similar:
  
  create & chmod this on your pc:
  -------------------------------
  
  #! /bin/bash
  typeset -i num
  num=`ifconfig || grep usb0 || wc -l`
  if [ $num -eq 0 ] ; then
  ifconfig usb0 192.168.129.1 netmask 255.255.255.255 up
  route add -host 192.168.129.201 usb0
  fi
  
  
  add this to your pc '/etc/hosts':
  ---------------------------------
  
  192.168.129.201 zaurus
  
  this way, you can quickly execute 'zaurus' then 'telnet zaurus'.
  
  [I assume that you've already modprobed usb-uhci & usbdnet]
  
  
  2] Format with mke2fs your SD card.
  mke2fs /dev/mmcda1
  
  
  3] Cd in the SD card, and upload here the 2 tarball of 1]
  [a little note: when I've dloaded the zaurus-debian-big-v0.15.tgz it was not gzipped, it was just a tar.
  dunno if it's the broken brain of IE ;)]
  
  - if you've the usb cradle inserted you can via telnet, you can do something like:
  nc -l -p 1234 > tarball.tar [zaurus side]
  cat tarball.tar || nc zaurus 1234 [pc side]
  
  - extract the tarball.
  
  
  - edit /etc/sdcontrol:
  
  --------BEGIN SNIP--------
  FSTYPE="-t ext2"
  FATOPTS="-o noatimei,quiet,umask=000,iocharset=utf8"
  ["EXT2OPTS"]="-o noatime"
  --------ENDOF SNIP--------
  
  --------BEGIN SNIP--------
  case "$ACTION" in
  'insert')
  # mount $FSTYPE $FATOPTS $DEVICE $MOUNT_POINT
  mount $FSTYPE $["EXT2OPTS"] $DEVICE $MOUNT_POINT
  MOUNT_RES = `mount || grep $DEVICE`
  if [ "$MOUNT_RES" = "" ]; then
  mount $FSTYPE $DEVICE $MOUNT_POINT
  fi
  --------ENDOF SNIP--------
  
  
  
  
  - edit /etc/fstab, and in '/dev/mmcda1' line, add 'noatime'
  
  --------BEGIN LINE--------
  /dev/mmcda1 /usr/mnt.rom/card ext2 rw,noatime 0 0
  --------ENDOF LINE--------
  
  
  
  - execute ./debroot/INSTALL.d/postinst.sh
  
  [during the execution of postinst.sh, answer YES at all, but NO at these 2:
  Permit unsafe VNC connections without passwords?
  Run 'Fbvnc' now?
  
  
  - gunzip the fbvnc-arm-1.3.3beta.gz and copy to /mnt/card/debroot/usr/bin/fbvnc
  
  - add "-w c700" in the last lines of /usr/local/bin/Fbvnc this way:
  
  --------BEGIN SNIP--------
  if [ -z "$1" ]; then
  fbvnc -hw c700 127.0.0.1:1
  else
  fbvnc -hw c700 "$@"
  fi
  --------ENDOF SNIP--------
  
  
  - edit /etc/debroot.conf
  
  --------BEGIN FILE--------
  ### /etc/debroot.conf
  #
  # Configuration for the Debian chroot environment startup process
  #
  
  # IMPORTANT: boolean settings (DEB_FOO=1) are true if not empty, so
  # comment out the entry (put a '#' at the start of the line) if you
  # want to deactivate it.
  
  DEBROOT=/usr/mnt.rom/card
  
  DEB_PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/games
  
  # Disable this if you have a fixed QPE that permits VT switching
  #DEB_QPE_WARNING=1
  
  DEB_DO_MOUNTS=1
  
  DEB_COPY_INTO_CHROOT="etc/resolv.conf"
  
  DEB_COPY_INTO_NATIVE="etc/hosts"
  
  
  #DEB_RUN_SERVICES=""
  #DEB_RUN_SERVICES="inetd ssh lpd"
  #DEB_RUN_SERVICES="ssh"
  
  DEB_RUN_VNCSERVER=1
  
  DEB_RUN_FBVNC=1
  
  DEB_ZAPM_PROXY=1
  
  DEB_RUN_ZAPMD=1
  
  DEB_ROOTCMD=1
  --------ENDOF FILE--------
  
  [comments stripped out ;)]
  
  
  - find in the /etc/rc.d tree the symlink to zdebian and delete it.
  
  
  - edit /etc/rc.d/init.d/zdebian
  
  --------BEGIN SNIP--------
  #!/bin/bash
  
  ## sh [linked to ash] doesnt exec cleanlyi, so we set bash instead
  SHELLCMD=/bin/bash
  
  DEBCONF=/etc/debroot.conf
  [ ! -f $DEBCONF ] && {
  echo "Can't find $DEBCONF, aborting..."
  exit 1
  }
  
  . $DEBCONF
  
  [ "$DEBROOT" ] |||| exit 1
  if [ ! -d "$DEBROOT" ]; then
  echo "Waiting for $DEBROOT to be fscked..."
  while ps ax || grep -v grep || grep e2fsck >/dev/null
  do
  sleep 1
  done
  sleep 1
  if [ ! -d "$DEBROOT" ]; then
  echo "Waiting for $DEBROOT to be mounted..."
  sleep 10
  fi
  fi
  cd $DEBROOT |||| exit 1
  
  ROOTCMD_FIFO=$DEBROOT/dev/rootcmd
  ZAPMD=/dev/zapmd
  
  rootcmd_server_start () {
  rm -f $ROOTCMD_FIFO
  mkfifo -m 600 $ROOTCMD_FIFO
  
  (
  while true
  do
  exec <$ROOTCMD_FIFO
  read TTY CMD
  $SHELLCMD -c "$CMD" <''dev>$DEBROOT''$TTY 2>&1
  sleep 1
  done
  ) &
  echo $! >/var/run/rootcmd.pid
  }
  --------ENDOF SNIP--------
  
  [the real 2 changes are the 2 /bin/bash invocations at the beginning & at line 41.
  the original '/bin/sh' fails to execute cleanly the exec fifo commands. it's an 'ash' issue
  (/bin/sh is linked to 'ash', NOT to 'bash').
  Many thanks to my brother, Davide, for helping in pointing out this.]
  
  
  
  - cd in /home/zaurus, create & chmod 755 these 2 files:
  
  d.sh
  
  --------BEGIN FILE--------
  #! /bin/bash
  
  clear
  echo "zdebian stop.."
  /etc/rc.d/init.d/zdebian stop
  echo "kill Xvnc.."
  killall Xvnc
  echo "change launch.default to 'q'"
  echo q > /home/sharp/etc/launch.default
  echo "DONE."
  exit 0
  --------ENDOF FILE--------
  
  
  q.sh
  
  --------BEGIN FILE--------
  #! /bin/bash
  
  echo a > /home/sharp/etc/launch.default
  killall qpe
  killall qeserver
  killall qtsamba
  clear
  /home/root/usr/bin/chvt 2
  /home/root/usr/bin/chvt 1
  
  exit 0
  --------ENDOF FILE--------
  
  
  still in /home/zaurus, do a:
  echo a > what.txt
  
  note: this file (what.txt) will be your 'boot flag'.
  -> if it's "a" then the next boot will be debian
  -> if it's "q" then the next boot will be qtopia
  
  IMPORTANT !!
  be sure to not edit or remove this file, because it's needed in the init process [see below]
  [I mean, it must be absolutely "a" or "q", or you can byebye the z. and reflash them ;)]
  
  
  still in /home/zaurus, do a:
  ln -s /etc/rc.d/init.d/zdebian
  
  
  
  
  - edit /usr/mnt.rom/card/usr/local/bin/zvncserver
  [security improvement]
  I've changed also the '/bin/sh' first line in '/bin/bash'
  And also in Fbvnc.
  
  --------BEGIN SNIP--------
  AUTH_FILE=/etc/vncpasswd
  [ -f $AUTH_FILE ] && AUTH="-rfbauth $AUTH_FILE"
  
  [ ."$DISPLAY" = .":0" ] && rm -f ''tmp''.X0-lock
  [ ."$DISPLAY" = .":1" ] && rm -f ''tmp''.X1-lock
  [ ."$DISPLAY" = .":2" ] && rm -f ''tmp''.X2-lock
  
  ## with '-localhost' we allow only connection from the same machine on which Xvnc runs
  ## with '-nolisten tcp' [undocumented feature, at least with this goal] we stop Xvnc from listen also on 6000+DISPLAY port
  Xvnc -localhost -nolisten tcp -geometry $GEOM -depth 16 -pixelformat ["RGB565"] $AUTH $DISPLAY &
  #-fp /usr/lib/vnc/fonts/misc \
  #-co /usr/lib/vnc/rgb \
  
  sleep 5
  cd $HOME
  --------ENDOF SNIP--------
  
  
  
  - edit /etc/inetd.conf
  [security improvement]
  
  leave only this line uncommented:
  
  --------BEGIN LINE--------
  telnet stream tcp nowait root /usr/sbin.rom/tcpd /usr/sbin/in.telnetd
  --------ENDOF LINE--------
  
  after that, you must also create /etc/hosts.allow & /etc/hosts.deny, add 1 entry in /etc/hosts,
  and update /usr/mnt.rom/card/etc/hosts
  
  i.ex:
  
  /etc/hosts:
  
  --------BEGIN FILE--------
  ### Do not edit this file - it was copied
  ### from /usr/mnt.rom/card/etc/hosts by ./zdebian
  ### Edit /etc/debroot.conf to deactivate this.
  
  127.0.0.1 localhost loopback
  192.168.129.1 yourpcname
  
  ### Do not edit this file - it was copied
  ### from /usr/mnt.rom/card/etc/hosts by ./zdebian
  ### Edit /etc/debroot.conf to deactivate this.
  --------ENDOF FILE--------
  
  cp /etc/hosts /usr/mnt.rom/card/etc/hosts
  
  /etc/hosts.deny:
  
  --------BEGIN FILE--------
  ALL: ALL
  --------ENDOF FILE--------
  
  
  /etc/hosts.allow:
  
  --------BEGIN FILE--------
  ALL: yourpcname
  --------ENDOF FILE--------
  
  Now, do a '/etc/rc.d/init.d/inet restart'
  
  and try to connect with a new 'telnet zaurus' from your PC,
  and try also a 'telnet localhost' from inside the z.
  you must connect from pc, and denied from the z.
  
  
  
  
  - stop useless services from auto starting:
  [as I said in the intro, I assume you're not so interested in syncing with outlook and other windoze stuff :)]
  in /etc/rc.d/init.d
  do a
  chmod 000 portmap
  chmod 000 samba
  
  
  edit /etc/hotplug/usbdnet.conf
  
  --------BEGIN FILE--------
  DHCPS=no
  DHCPC=no
  --------ENDOF FILE--------
  
  
  - if you want to change the 2nd splashscreen with your own:
  * create an image 480x640, bitmap format.
  [this is the output of 'file':
  PC bitmap data, Windows 3.x format, 480 x 640 x 24
  ]
  * copy in /home/QtPalmtop/pics144/Startup_screen.bmp
  
  
  
  
  
  
  
  4]
  
  ####################################
  ### editing files in /dev/root
  ####################################
  
  before you can edit the files mounted in /dev/root, you must do an
  mount -o rw,remount /dev/root /
  [be aware to not make big mistakes from now.. :)]
  
  this is my /root/etc/sysconfig/init,
  don't remember if it's like the original
  
  --------BEGIN FILE--------
  SILENT=yes
  BOOTUP=color
  RES_COL=23
  MOVE_TO_COL="echo -en \\033[${RES_COL}G"
  SETCOLOR_SUCCESS="echo -en \\033[1;32m"
  SETCOLOR_FAILURE="echo -en \\033[1;31m"
  SETCOLOR_WARNING="echo -en \\033[1;33m"
  SETCOLOR_NORMAL="echo -en \\033[0;39m"
  LOGLEVEL=1
  PROMPT=yes
  --------ENDOF FILE--------
  
  
  - edit /root/etc/rc.d/rc.sysinit
  [with this change, we see at least some log msgs on the screen instead of the red/white sharp splashscreen :)]
  
  --------BEGIN SNIP--------
  # Print a banner. ;)
  clear
  #if [ -z "$SILENT" ] ; then
  echo -en $" Welcome to "
  [ "$BOOTUP" != "serial" ] && echo -en $"\\033[1;31m"
  echo -en $"WHATYOUWANT"
  [ "$BOOTUP" != "serial" ] && echo -en $"\\033[0;39m"
  echo $" Zaurus"
  #fi
  --------ENDOF SNIP--------
  
  
  - edit /root/etc/rc.d/rc.rofilesys
  [this is the trick for 'booting' in debian]
  
  --------BEGIN SNIP--------
  #echo $LAUNCH > /home/sharp/etc/launch.default
  cat /home/zaurus/what.txt > /home/sharp/etc/launch.default
  --------ENDOF SNIP--------
  
  
  - edit /root/etc/inittab
  [not so necessary]
  
  --------BEGIN SNIP--------
  # collie sp.
  #sy::respawn:/sbin/shsync
  --------ENDOF SNIP--------
  
  
  
  
  
  
  
  *****************************
  *** USAGE
  *****************************
  
  Ok now finally for the fun stuff ;)
  
  1] /home/zaurus/what.txt
  ------------------------
  is your 'bootselect' flag.
  
  a -> debian
  q -> qtopia
  
  
  2] Exiting/switching from Qtopia
  ----------------------------------
  - open Konsole
  - su as root
  - in /home/zaurus execute "./q.sh"
  this will give you a console log.
  login, become root.
  
  Then if you want to start Debian, do a
  ./zdebian start
  
  If you want to reboot:
  /sbin/reboot
  
  If you want to halt:
  /sbin/halt
  [when all off, remember to switch for at least 5 secs the battery switch]
  
  
  
  3] Exiting/switching from Debian
  Menu -> Logout
  press Fn+Shift+q
  execute ./d.sh
  
  If you want to start Qtopia, you must simply:
  exit
  exit
  
  If you want to reboot:
  /sbin/reboot
  
  If you want to halt:
  /sbin/halt
  [when all off, remember to switch for at least 5 secs the battery switch]
  
  
  4] Note on screen in console mode:
  ----------------------------------
  just type 'clear' + Enter
  if you want to clean the screen in console mode.
  [to be improved ;)]
  
  
  5] Executing command in debian:
  -------------------------------
  
  using "cru" you can execute like in the 'original' environment.
  Example:
  
  --------BEGIN SNIP--------
  ~# cru ls /root
  bin etc samba
  ~# ls /root
  HELP.txt debian-faq.pdf
  ~#
  --------BEGIN SNIP--------