[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Quick and dirty "debian live" on USB stick.



> I'm playing with the idea of copying my laptop's debian lenny partition
> to a USB stick that I can take with me when traveling.

I have a "Live USB Debian" system that follows this idea (i.e. it's
just a plain normal Debian install, except it works off of a USB stick).

> . clone the lenny partition to /dev/sda1
> . install grub to /dev/sda
> . make adjustments to the contents of /dev/sda1

> The trouble is that I don't have a machine that can boot off of a USB
> stick to test ahead of time.

You can do some of the tests by putting the vmlinuz and initrd.img on
your harddrive and telling them to mount / from the USB stick.

That will already help you figure out some of the tricky things
(e.g. how to specify the right device to use to mount the USB stick:
either use partition labels, UUIDs, or use LVM volumes).

> Since I'm running the stock lenny kernel, I shouldn't have problems with
> differences in hardware, but I'm a little concerned that udev might not
> cooperate.

The only typical problems are things like the
/etc/udev/rules.d/70-persistent-* files, so every time you use your
system on a new machine, the "new" ethernet device will appear under
a new name (eth0, eth1, eth2, ...).  You can solve it by adding a script
which removes those files at boot.

> I'm sure there are other issues, but unfortunately, I can't take the
> trial and error approach.

In my case the main issue was space, so I ended up using a jffs2 install
(the only compressing file-system back then), which is inefficient and
inconvenient.

But even with today's large sticks, space will probably still be an
issue.  So you may want to keep /var/cache/apt on tmpfs (and add
"mkdir -p /var/cache/apt/lists" to /etc/rc.local), for example (I even
keep /var/lib/apt on tmpfs as well, but that's mostly because these
files can't be on jffs2 because jffs2 doesn't support mmapping files).

Also you may want to avoid log files.  For that I use busybox's syslogd
with the following script:

   # cat /etc/init.d/syslog-busybox 
   #!/bin/sh
   
   ### BEGIN INIT INFO
   # Provides:             sysklogd
   # Required-Start:       $remote_fs $time
   # Required-Stop:        $remote_fs $time
   # Should-Start:         $network
   # Should-Stop:          $network
   # Default-Start:        2 3 4 5
   # Default-Stop:         0 1 6
   # Short-Description:    System logger
   ### END INIT INFO
   
   case "$1" in
       start )
           echo -n "Starting Busybox syslog:"
           if busybox syslogd -C16; then
               echo -n " syslogd"; else echo -n " !syslogd!"; fi
           if busybox klogd; then
               echo -n " klogd"; else echo -n " !kogd!"; fi
           echo "."
           ;;
   esac
   # 

you can then read your logs (which are kept in a cyclic buffer in
memory) with "busybox logread", or just "logread" if you first create
a symlink "ln -s busybox /bin/logread".


        Stefan


Reply to: