> if we built debian packages that don't have dependencies outside of > debian, it would be even easier to make a wrapper script and custom > configuration file that would also work more easily on debian machines. > maybe i will work on that more, too. i couldn't resist re-building the ltsp packages for debian, with a few changes: ltsp (0.43-0+vagrant.1) experimental; urgency=low * add /etc/default/ltsp-client-setup - use_bind_mounts=true * ltsp-build-client: bugfix configuring mkinitrd.conf -- Vagrant Cascadian <vagrant@freegeek.org> Fri, 5 Aug 2005 11:33:40 -0600 ltsp (0.43-0+vagrant.0) experimental; urgency=low * ltsp-build-client: - bugfixes in sources.list generation - drop laptop-detect from packages to be installed by default -- Vagrant Cascadian <vagrant@freegeek.org> Fri, 5 Aug 2005 10:59:21 -0600 ltsp (0.43-0+vagrant) experimental; urgency=low * rebuild for debian sarge * allow initrd-netboot-tools as alternative to initramfs-tools * allow ssh as alternative to openssh-client and openssh-server * warn about modifying /etc/exports instead of modifying directly * provide tmpfs+bindmount alternative to unionfs * ltsp-build-client: - commandline options to set variables - variable defaults for debian sarge - file urls for MIRROR * add patch to provide long descriptions (Petter Reinholdtsen) * suggest sdm/sdm-terminal as a lightweight alternative to ldm -- Vagrant Cascadian <vagrant@freegeek.org> Fri, 5 Aug 2005 09:48:08 -0600 as you can see, i've already made a couple bugfix "releases", and i wouldn't be surprised if i make more as i continue to test it. packages and source available at: deb http://llama.freegeek.org/~vagrant/debian experimental/ i made considerable changes to ltsp-build-client, making many of the options configurable with commandline options. also added an --extra-archive commandline option. so, you could install on debian sarge with: ltsp-build-client --dist sarge --extra-archive "http://llama.freegeek.org/~vagrant/debian experimental/" or if you've got a CDROM with all the appropriate packages: ltsp-build-client --dist sarge --mirror "file:///media/cdrom" --extra-archive "http://llama.freegeek.org/~vagrant/debian experimental/" or to specify additional components beyond main: ltsp-build-client --dist sarge --mirror "file:///media/cdrom sarge main local" --extra-archive "http://llama.freegeek.org/~vagrant/debian experimental/" i would have to make tweaks to get the ltsp-install wrapper script (to use lessdisks-install) working, but it wouldn't take much. instead i figured i'd just improve the ltsp-build-client script. since the postinstall script doesn't modify /etc/exports anymore(due to debian policy), you have to do that manually. could instead make it an option to ltsp-build-client. attached is a patch (really) containing the differences between ubuntu's ltsp 0.43 and the version i built. live well, vagrant
* looking for matt.zimmerman@canonical.com/ltsp--main--0--patch-131 to compare with * comparing to matt.zimmerman@canonical.com/ltsp--main--0--patch-131 ................ * modified files --- orig/debian/changelog +++ mod/debian/changelog @@ -1,3 +1,35 @@ +ltsp (0.43-0+vagrant.1) experimental; urgency=low + + * add /etc/default/ltsp-client-setup + - use_bind_mounts=true + * ltsp-build-client: bugfix configuring mkinitrd.conf + + -- Vagrant Cascadian <vagrant@freegeek.org> Fri, 5 Aug 2005 11:33:40 -0600 + +ltsp (0.43-0+vagrant.0) experimental; urgency=low + + * ltsp-build-client: + - bugfixes in sources.list generation + - drop laptop-detect from packages to be installed by default + + -- Vagrant Cascadian <vagrant@freegeek.org> Fri, 5 Aug 2005 10:59:21 -0600 + +ltsp (0.43-0+vagrant) experimental; urgency=low + + * rebuild for debian sarge + * allow initrd-netboot-tools as alternative to initramfs-tools + * allow ssh as alternative to openssh-client and openssh-server + * warn about modifying /etc/exports instead of modifying directly + * provide tmpfs+bindmount alternative to unionfs + * ltsp-build-client: + - commandline options to set variables + - variable defaults for debian sarge + - file urls for MIRROR + * add patch to provide long descriptions (Petter Reinholdtsen) + * suggest sdm/sdm-terminal as a lightweight alternative to ldm + + -- Vagrant Cascadian <vagrant@freegeek.org> Fri, 5 Aug 2005 09:48:08 -0600 + ltsp (0.43) breezy; urgency=low * Start the X server with the -br option --- orig/debian/control +++ mod/debian/control @@ -7,20 +7,27 @@ Package: ltsp-server Depends: debootstrap, nfs-kernel-server, tftpd-hpa, syslinux -Recommends: openssh-server -Suggests: dhcp3-server +Recommends: openssh-server | ssh +Suggests: dhcp3-server, sdm Architecture: all Description: Basic LTSP server environment + The scripts needed to generate the client environment on a server. + This is the basic environment depending on external a DHCP server to + point the clients to the LTSP server. Package: ltsp-server-standalone Depends: ltsp-server, ltsp-utils, dhcp3-server Architecture: all Description: Complete LTSP server environment + The scripts needed to generate the client environment on a server. + This is the complete environment including a DHCP server to bootstrap + the clients. Package: ltsp-client -Depends: lsb-base, nbd-client, openssh-client, python-gtk2, python-glade2, initramfs-tools (>= 0.11) -Recommends: ubuntu-thin-client +Depends: lsb-base, nbd-client, openssh-client | ssh, python-gtk2, python-glade2, python, initramfs-tools (>= 0.11) | initrd-netboot-tools +Suggests: kernel-image-netbootable, sdm-terminal Conflicts: ltsp-utils Replaces: ltsp-utils Architecture: any Description: LTSP client environment + The scripts needed to configure and boot an LTSP client. --- orig/debian/copyright +++ mod/debian/copyright @@ -1,6 +1,9 @@ This package was created by Matt Zimmerman <mdz@ubuntu.com> in May of 2005. +modifications for use with debian by Vagrant Cascadian <vagrant@freegeek.org> +in August of 2005. + Several components have been copied from the LTSP project's build environment (LBE) tree, and are copyrighted by Jim McQuillan <jam@ltsp.org>, and licensed under the GPL version 2. @@ -24,5 +27,5 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -On Ubuntu systems, a copy of the GNU General Public License version 2 -may be found in the file /usr/share/common-licenses/GPL-2. +On Ubuntu and Debian systems, a copy of the GNU General Public License version +2 may be found in the file /usr/share/common-licenses/GPL-2. --- orig/debian/ltsp-client.install +++ mod/debian/ltsp-client.install @@ -12,3 +12,4 @@ client/initramfs/init-bottom/unionfs_cow usr/share/initramfs-tools/scripts/init-bottom client/initramfs/modules.d/unionfs_cow usr/share/initramfs-tools/modules.d client/lp_server/src/lp_server usr/lib/ltsp +client/ltsp-client-setup etc/default --- orig/debian/ltsp-client.ltsp-client-setup.init +++ mod/debian/ltsp-client.ltsp-client-setup.init @@ -18,6 +18,7 @@ . /lib/lsb/init-functions . /usr/lib/ltsp/ltsp_functions . /usr/lib/ltsp/ltsp_config +test -f /etc/default/ltsp-client-setup && . /etc/default/ltsp-client-setup load_modules() { for module in $(env | awk -F= '$1 ~ /^MODULE_/ { print $2 }'); do @@ -113,10 +114,51 @@ fi } +bind_mounts () { + # set defaults + test -z "$tmpfs_dir" && tmpfs_dir=/var/state/ltsp + test -z "$rw_dirs" && rw_dirs="/var/cache/man /var/lib/xkb /var/lock /var/run /var/log /var/spool /var/tmp /tmp /var/lib/discover" + test -z "$copy_dirs" && copy_dirs="" + test -z "$bindfiles" && bindfiles="/etc/X11/xorg.conf /etc/X11/XF86Config-4" + mount -t tmpfs -o mode=0755 tmpfs $tmpfs_dir + # preserve directory structure + for d in $rw_dirs ; do + if [ -d "$d" ]; then + cd $tmpfs_dir + tar --no-recursion -cpf - $(find $d -type d 2> /dev/null) 2> /dev/null | tar xpf - + mount --bind $tmpfs_dir/$d $d + else + echo "WARNING: $d does not exist" + fi + done + # copy contents into tmpfs + for d in $copy_dirs ; do + if [ -d "$d" ]; then + cd $tmpfs_dir + tar -cpf - $d 2> /dev/null | tar xpf - + mount --bind $tmpfs_dir/$d $d + else + echo "WARNING: $d does not exist" + fi + done + # mount one file on top of another + for f in $bindfiles ; do + if [ -e "$f" ]; then + mkdir -p "$(dirname $tmpfs_dir/$f)" + cp $f $tmpfs_dir/$f + mount --bind $tmpfs_dir/$f $f + else + echo "WARNING: $f does not exist" + fi + done +} + case "$1" in start) log_begin_msg "Setting up LTSP client..." - + if [ "true" = "$use_bind_mounts" ]; then + bind_mounts + fi load_modules configure_console configure_swap --- orig/debian/ltsp-server.postinst +++ mod/debian/ltsp-server.postinst @@ -14,11 +14,10 @@ case "$1" in configure) if ! grep -q '^/opt/ltsp' /etc/exports; then - cat <<EOF >> /etc/exports -# Automatically added by ltsp-server -/opt/ltsp *(ro,no_root_squash,async) -EOF - invoke-rc.d nfs-kernel-server reload +echo 'NOTE: you will probably want to add to /etc/exports:' +echo '/opt/ltsp *(ro,no_root_squash,async)' +echo 'and then run:' +echo 'invoke-rc.d nfs-kernel-server reload' fi ;; --- orig/debian/ltsp-server.postrm +++ mod/debian/ltsp-server.postrm @@ -18,9 +18,9 @@ case "$1" in remove) - if grep -q '^# Automatically added by ltsp-server' /etc/exports; then - sed -i -e '/^# Automatically added by ltsp-server/,+1d' /etc/exports - fi + #if grep -q '^# Automatically added by ltsp-server' /etc/exports; then + # sed -i -e '/^# Automatically added by ltsp-server/,+1d' /etc/exports + #fi ;; upgrade|failed-upgrade|abort-install|abort-upgrade|disappear|purge) ;; --- orig/server/ltsp-build-client +++ mod/server/ltsp-build-client @@ -5,12 +5,60 @@ LC_ALL=C export LC_ALL -ROOT=/opt/ltsp/$(dpkg --print-architecture) -DIST=breezy -MIRROR=http://us.archive.ubuntu.com/ubuntu +# TODO: source configuration file + +# process commandline arguments +while [ -n "$1" ]; do + case $1 in + --root) ROOT="$2" + test -n "$1" && shift + ;; + --dist) DIST="$2" + test -n "$1" && shift + ;; + --components) COMPONENTS="$2" + test -n "$1" && shift + ;; + --mirror) MIRROR="$2" + test -n "$1" && shift + ;; + --extra-mirror) EXTRA_MIRROR="$2" + test -n "$1" && shift + ;; + --early-packages) EARLY_PACKAGES="$2" + test -n "$1" && shift + ;; + --late-packages) LATE_PACKAGES="$2" + test -n "$1" && shift + ;; + esac + test -n "$1" && shift +done + +# set defaults +test -z "$ROOT" && ROOT=/opt/ltsp/$(dpkg --print-architecture) +test -z "$DIST" && DIST=sarge +case $DIST in + breezy) + test -z "$COMPONENTS" && COMPONENTS="main restricted" + test -z "$MIRROR" && MIRROR="http://us.archive.ubuntu.com/ubuntu $DIST $COMPONENTS" + test -z "$EARLY_PACKAGES" && EARLY_PACKAGES="x-window-system-core ltsp-client discover1 laptop-detect mdetect xresprobe" + test -z "$LATE_PACKAGES" && LATE_PACKAGES="linux" + ;; +esac +test -z "$COMPONENTS" && COMPONENTS="main" +test -z "$MIRROR" && MIRROR="http://http.us.debian.org/debian $DIST $COMPONENTS" +test -z "$EARLY_PACKAGES" && EARLY_PACKAGES="x-window-system-core ltsp-client discover1 mdetect xresprobe" +test -z "$LATE_PACKAGES" && LATE_PACKAGES="kernel-image-netbootable" + +if [ -z "$(echo $MIRROR | awk '{print $2}')" ]; then + echo "NOTE: adding default dist and components to mirror:" + MIRROR="$MIRROR $DIST $COMPONENTS" + echo "$MIRROR" +fi # Install base packages -debootstrap $DIST $ROOT $MIRROR +debootstrap $DIST $ROOT $(echo $MIRROR | awk '{print $1}') # Root password is empty by default, lock it chroot $ROOT passwd -l root @@ -18,9 +66,15 @@ # Always load mousedev echo mousedev >> $ROOT/etc/modules -cat <<EOF > $ROOT/etc/apt/sources.list -deb $MIRROR $DIST main restricted -EOF +test -f $ROOT/etc/apt/sources.list && mv -vf $ROOT/etc/apt/sources.list $ROOT/etc/apt/sources.list.old +for mirror in "$MIRROR" "$EXTRA_MIRROR" ; do + echo "deb $mirror" >> $ROOT/etc/apt/sources.list + case $mirror in + file:///*) dir="$(echo $mirror | awk '{print $1}' | sed -e 's,^file://,,g')" mkdir -p $ROOT/$dir + mount --bind $dir $ROOT/$dir + umounts="$umounts $ROOT/$dir" + esac +done chroot $ROOT apt-get update @@ -28,7 +82,7 @@ export DEBIAN_FRONTEND # Install remaining packages -chroot $ROOT apt-get -y install x-window-system-core ltsp-client discover1 laptop-detect mdetect xresprobe +chroot $ROOT apt-get -y install $EARLY_PACKAGES # Setup for kernel install cat <<EOF > $ROOT/etc/kernel-img.conf @@ -37,13 +91,19 @@ relative_links = yes link_in_boot = yes do_bootloader = no -ramdisk=/usr/sbin/mkinitramfs EOF -sed -i -e 's/^BOOT=.*$/BOOT=nfs/' $ROOT/etc/mkinitramfs/initramfs.conf +if [ -f $ROOT/etc/mkinitramfs/initramfs.conf ]; then + # configuring for initramfs-tools + echo "ramdisk=/usr/sbin/mkinitramfs" >> $ROOT/etc/kernel-img.conf + sed -i -e 's/^BOOT=.*$/BOOT=nfs/' $ROOT/etc/mkinitramfs/initramfs.conf +elif [ -f $ROOT/etc/mkinitrd/mkinitrd.conf ]; then + # configuring for initrd-netboot-tools + sed -i -e 's/^ROOT=.*$/ROOT=""/' -e 's/^MODULES=.*$/MODULES=none/' $ROOT/etc/mkinitrd/mkinitrd.conf +fi -# Install the kernel -chroot $ROOT apt-get -y install linux +# Install additional packages, such as the the kernel +chroot $ROOT apt-get -y install $LATE_PACKAGES ltsp-update-kernels ltsp-update-sshkeys @@ -51,3 +111,8 @@ rm -f $ROOT/etc/hostname chroot $ROOT apt-get clean + +# umount bind mounts +for dir in $umounts ; do + umount $dir +done * added files --- /dev/null +++ mod/client/.arch-ids/ltsp-client-setup.id @@ -0,0 +1 @@ +Vagrant Cascadian <vagrant@freegeek.org> Fri Aug 5 11:41:16 2005 734.0 --- /dev/null +++ mod/client/ltsp-client-setup @@ -0,0 +1,4 @@ +# /etc/default/ltsp-client-setup + +# use tmpfs + bind mounts for writeable filesystems +use_bind_mounts="true" --- /dev/null +++ mod/client/screen.d/.arch-ids/sdm.id @@ -0,0 +1 @@ +Vagrant Cascadian <vagrant@freegeek.org> Fri Aug 5 10:22:31 2005 24344.2 --- /dev/null +++ mod/client/screen.d/sdm @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /usr/sbin/sdm --- /dev/null +++ mod/debian/.arch-ids/TODO.Debian.id @@ -0,0 +1 @@ +Vagrant Cascadian <vagrant@freegeek.org> Fri Aug 5 10:22:31 2005 24344.1 --- /dev/null +++ mod/debian/.arch-ids/ltsp-client.dirs.id @@ -0,0 +1 @@ +Vagrant Cascadian <vagrant@freegeek.org> Fri Aug 5 10:22:31 2005 24344.0 --- /dev/null +++ mod/debian/TODO.Debian @@ -0,0 +1,3 @@ +support for sdm as a lightweight alternative to "ldm" + +separate packages for lp_server and ldm (others?) --- /dev/null +++ mod/debian/ltsp-client.dirs @@ -0,0 +1 @@ +/var/state/ltsp
Attachment:
signature.asc
Description: Digital signature