diff options
author | Daniel Baumann <daniel@debian.org> | 2007-09-23 14:46:22 +0200 |
---|---|---|
committer | Daniel Baumann <daniel@debian.org> | 2007-09-23 14:46:22 +0200 |
commit | 4a0b1ba4d428c623d14bae7f0db85c80abb0da0a (patch) | |
tree | de03aceffba0ce13f098d970cc89f806db7af5d7 | |
download | live-boot-4a0b1ba4d428c623d14bae7f0db85c80abb0da0a.tar.gz live-boot-4a0b1ba4d428c623d14bae7f0db85c80abb0da0a.zip |
Adding casper 1.59+debian-1.
48 files changed, 3540 insertions, 0 deletions
diff --git a/bin/casper-preseed b/bin/casper-preseed new file mode 100755 index 0000000..6967fe2 --- /dev/null +++ b/bin/casper-preseed @@ -0,0 +1,17 @@ +#! /bin/sh +set -e +PATH=/usr/sbin:/usr/bin:/sbin:/bin + +root="$1" +question="$2" +value="$3" + +if ! (echo "SET $question $value"; echo "FSET $question seen true") | chroot "$1" debconf-communicate -fnoninteractive casper >/dev/null; then + chroot "$1" debconf-communicate -fnoninteractive casper >/dev/null <<EOF +REGISTER debian-installer/dummy $question +SET $question $value +FSET $question seen true +EOF +fi + +exit 0 diff --git a/bin/casper-reconfigure b/bin/casper-reconfigure new file mode 100755 index 0000000..628bff3 --- /dev/null +++ b/bin/casper-reconfigure @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e +export PATH=/usr/bin:/usr/sbin:/sbin:/bin + +frontend=noninteractive + +findcommandinroot() { + ROOT="$1/" + shift + while [ "$#" -ge 1 ]; do + P="$PATH" + while [ "$P" ]; do + D=${P%%:*} + P=${P#*:} + if [ "$D" = "$P" ]; then + P= + fi + if [ -z "$D" ]; then + D=. + fi + if [ -x "$ROOT$D/$1" ]; then + echo "$D/$1" + return 0 + fi + done + shift + done + return 1 +} + +runcommandinroot() { + C=$(findcommandinroot "$1" "$2") + ROOT="$1" + shift + shift + [ -n "$C" ] && chroot "$ROOT" "$C" "$@" +} + +root="$1" +package="$2" + +version=$(runcommandinroot "$root" dpkg-query -W --showformat='${Version}' "$package" 2>/dev/null) || version="" + +if [ -z "$version" ]; then + echo "$0: package '$package' is not installed" + exit 0 +fi + +runcommandinroot "$root" dpkg-reconfigure -fnoninteractive --no-reload -phigh "$package" + +exit 0 diff --git a/casper-md5check/Makefile b/casper-md5check/Makefile new file mode 100644 index 0000000..193ac69 --- /dev/null +++ b/casper-md5check/Makefile @@ -0,0 +1,9 @@ + +CC=gcc +LDFLAGS=-lm +CFLAGS=$(getconf LFS_CFLAGS) -Wall -O2 + +casper-md5check: casper-md5check.c md5.c + +clean: + rm *.o casper-md5check diff --git a/casper-md5check/casper-md5check.c b/casper-md5check/casper-md5check.c new file mode 100644 index 0000000..0571e49 --- /dev/null +++ b/casper-md5check/casper-md5check.c @@ -0,0 +1,246 @@ +/* casper-md5check - a tool to check md5sums and talk to usplash + (C) Canonical Ltd 2006 + Written by Tollef Fog Heen <tfheen@ubuntu.com> + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. */ + +#define _GNU_SOURCE +#include <stdio.h> +#include <unistd.h> +#include <sys/reboot.h> +#include <linux/reboot.h> +#include <string.h> +#include <errno.h> +#include <stdarg.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <stdlib.h> +#include <math.h> +#include <termios.h> + +#define USPLASH_FIFO "/dev/.initramfs/usplash_fifo" +#define MAXTRIES 5 +#include "md5.h" +#define DEBUG + +int write_and_retry(int fd, char *s) { + int try = 0, ret = 0; + char *end; + +#ifdef DEBUG + fprintf(stderr, "-> %s\n", s); +#endif + + end = s + strlen(s)+1; + + ret = write(fd, s, end - s); + while (s + ret < end && try < MAXTRIES) { + sleep(1); + s += ret; + ret = write(fd, s, strlen(s)+1); + try++; + } + return (s+ret == end ? 0 : 1); +} + +void usplash_timeout(int fd, int timeout) { + char *s; + + asprintf(&s, "TIMEOUT %d", timeout); + + write_and_retry(fd, s); + + free(s); + +} + +void usplash_failure(int fd, char *format, ...) { + char *s, *s1; + va_list argp; + + va_start(argp, format); + vasprintf(&s, format, argp); + va_end(argp); + + asprintf(&s1, "FAILURE %s", s); + + write_and_retry(fd, s1); + + free(s); + free(s1); +} + +void usplash_text(int fd, char *format, ...) { + char *s, *s1; + va_list argp; + + va_start(argp, format); + vasprintf(&s, format, argp); + va_end(argp); + + asprintf(&s1, "TEXT %s", s); + + write_and_retry(fd, s1); + + free(s); + free(s1); +} + +void usplash_success(int fd, char *format, ...) { + char *s, *s1; + va_list argp; + + va_start(argp, format); + vasprintf(&s, format, argp); + va_end(argp); + + asprintf(&s1, "SUCCESS %s", s); + + write_and_retry(fd, s1); + + free(s); + free(s1); +} + +void usplash_progress(int fd, int progress) { + static int prevprogress = -1; + char *s; + + if (progress == prevprogress) + return; + prevprogress = progress; + + asprintf(&s, "PROGRESS %d", progress); + + write_and_retry(fd, s); + + free(s); +} + +int set_nocanonical_tty(int fd) { + struct termios t; + + if (tcgetattr(fd, &t) == -1) { + perror("tcgetattr"); + } + t.c_lflag &= ~ICANON; + t.c_cc[VMIN] = 1; + t.c_cc[VTIME] = 0; + return tcsetattr(fd, TCSANOW, &t); +} + +int main(int argc, char **argv) { + + int pipe_fd, check_fd; + int failed = 0; + + FILE *md5_file; + md5_state_t state; + md5_byte_t digest[16]; + char hex_output[16*2 + 1]; + char *checksum, *checkfile; + ssize_t tsize, csize; + + tsize = 0; + csize = 0; + + if (argc != 3) { + fprintf(stderr,"Wrong number of arguments\n"); + fprintf(stderr,"%s <root directory> <md5sum file>\n", argv[0]); + exit(1); + } + + if (chdir(argv[1]) != 0) { + perror("chdir"); + exit(1); + } + + pipe_fd = open(USPLASH_FIFO, O_WRONLY|O_NONBLOCK); + + if (pipe_fd == -1) { + /* We can't really do anything useful here */ + exit(1); + } + + usplash_progress(pipe_fd, 0); + md5_file = fopen(argv[2], "r"); + if (!md5_file) { + perror("fopen md5_file"); + exit(1); + } + while (fscanf(md5_file, "%as %as", &checksum, &checkfile) == 2) { + struct stat statbuf; + + if (stat(checkfile, &statbuf) == 0) { + tsize += statbuf.st_size; + } + + free(checksum); + free(checkfile); + } + + rewind(md5_file); + while (fscanf(md5_file, "%as %as", &checksum, &checkfile) == 2) { + char buf[BUFSIZ]; + ssize_t rsize; + int i; + + md5_init(&state); + + usplash_text(pipe_fd, "Checking %s", checkfile); + + check_fd = open(checkfile, O_RDONLY); + if (check_fd < 0) { + usplash_timeout(pipe_fd, 300); + usplash_failure(pipe_fd, "%s", strerror(errno)); + sleep(10); + } + + rsize = read(check_fd, buf, sizeof(buf)); + + while (rsize > 0) { + csize += rsize; + usplash_progress(pipe_fd, floorl(100*csize/tsize)); + + md5_append(&state, (const md5_byte_t *)buf, rsize); + rsize = read(check_fd, buf, sizeof(buf)); + } + + close(check_fd); + md5_finish(&state, digest); + + for (i = 0; i < 16; i++) + sprintf(hex_output + i * 2, "%02x", digest[i]); + + if (strncmp(hex_output, checksum, strlen(hex_output)) == 0) { + usplash_success(pipe_fd, "OK"); + } else { + usplash_failure(pipe_fd, "mismatch"); + failed++; + } + free(checksum); + free(checkfile); + } + usplash_text(pipe_fd, "Check finished, %d checksums failed", failed); + usplash_text(pipe_fd, "Press any key to reboot your system"); + usplash_timeout(pipe_fd, 0); + set_nocanonical_tty(0); + getchar(); + reboot(LINUX_REBOOT_CMD_RESTART); + return 0; + +} diff --git a/casper-md5check/md5.c b/casper-md5check/md5.c new file mode 100644 index 0000000..c35d96c --- /dev/null +++ b/casper-md5check/md5.c @@ -0,0 +1,381 @@ +/* + Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + L. Peter Deutsch + ghost@aladdin.com + + */ +/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */ +/* + Independent implementation of MD5 (RFC 1321). + + This code implements the MD5 Algorithm defined in RFC 1321, whose + text is available at + http://www.ietf.org/rfc/rfc1321.txt + The code is derived from the text of the RFC, including the test suite + (section A.5) but excluding the rest of Appendix A. It does not include + any code or documentation that is identified in the RFC as being + copyrighted. + + The original and principal author of md5.c is L. Peter Deutsch + <ghost@aladdin.com>. Other authors are noted in the change history + that follows (in reverse chronological order): + + 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order + either statically or dynamically; added missing #include <string.h> + in library. + 2002-03-11 lpd Corrected argument list for main(), and added int return + type, in test program and T value program. + 2002-02-21 lpd Added missing #include <stdio.h> in test program. + 2000-07-03 lpd Patched to eliminate warnings about "constant is + unsigned in ANSI C, signed in traditional"; made test program + self-checking. + 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. + 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). + 1999-05-03 lpd Original version. + */ + +#include "md5.h" +#include <string.h> + +#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ +#ifdef ARCH_IS_BIG_ENDIAN +# define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1) +#else +# define BYTE_ORDER 0 +#endif + +#define T_MASK ((md5_word_t)~0) +#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) +#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) +#define T3 0x242070db +#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111) +#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050) +#define T6 0x4787c62a +#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec) +#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe) +#define T9 0x698098d8 +#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850) +#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e) +#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841) +#define T13 0x6b901122 +#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c) +#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71) +#define T16 0x49b40821 +#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d) +#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf) +#define T19 0x265e5a51 +#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855) +#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2) +#define T22 0x02441453 +#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e) +#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437) +#define T25 0x21e1cde6 +#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829) +#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278) +#define T28 0x455a14ed +#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa) +#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07) +#define T31 0x676f02d9 +#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375) +#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd) +#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e) +#define T35 0x6d9d6122 +#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3) +#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb) +#define T38 0x4bdecfa9 +#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f) +#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f) +#define T41 0x289b7ec6 +#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805) +#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a) +#define T44 0x04881d05 +#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6) +#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a) +#define T47 0x1fa27cf8 +#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a) +#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb) +#define T50 0x432aff97 +#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58) +#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6) +#define T53 0x655b59c3 +#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d) +#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82) +#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e) +#define T57 0x6fa87e4f +#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f) +#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb) +#define T60 0x4e0811a1 +#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d) +#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca) +#define T63 0x2ad7d2bb +#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e) + + +static void +md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) +{ + md5_word_t + a = pms->abcd[0], b = pms->abcd[1], + c = pms->abcd[2], d = pms->abcd[3]; + md5_word_t t; +#if BYTE_ORDER > 0 + /* Define storage only for big-endian CPUs. */ + md5_word_t X[16]; +#else + /* Define storage for little-endian or both types of CPUs. */ + md5_word_t xbuf[16]; + const md5_word_t *X; +#endif + + { +#if BYTE_ORDER == 0 + /* + * Determine dynamically whether this is a big-endian or + * little-endian machine, since we can use a more efficient + * algorithm on the latter. + */ + static const int w = 1; + + if (*((const md5_byte_t *)&w)) /* dynamic little-endian */ +#endif +#if BYTE_ORDER <= 0 /* little-endian */ + { + /* + * On little-endian machines, we can process properly aligned + * data without copying it. + */ + if (!((data - (const md5_byte_t *)0) & 3)) { + /* data are properly aligned */ + X = (const md5_word_t *)data; + } else { + /* not aligned */ + memcpy(xbuf, data, 64); + X = xbuf; + } + } +#endif +#if BYTE_ORDER == 0 + else /* dynamic big-endian */ +#endif +#if BYTE_ORDER >= 0 /* big-endian */ + { + /* + * On big-endian machines, we must arrange the bytes in the + * right order. + */ + const md5_byte_t *xp = data; + int i; + +# if BYTE_ORDER == 0 + X = xbuf; /* (dynamic only) */ +# else +# define xbuf X /* (static only) */ +# endif + for (i = 0; i < 16; ++i, xp += 4) + xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); + } +#endif + } + +#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) + + /* Round 1. */ + /* Let [abcd k s i] denote the operation + a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ +#define F(x, y, z) (((x) & (y)) | (~(x) & (z))) +#define SET(a, b, c, d, k, s, Ti)\ + t = a + F(b,c,d) + X[k] + Ti;\ + a = ROTATE_LEFT(t, s) + b + /* Do the following 16 operations. */ + SET(a, b, c, d, 0, 7, T1); + SET(d, a, b, c, 1, 12, T2); + SET(c, d, a, b, 2, 17, T3); + SET(b, c, d, a, 3, 22, T4); + SET(a, b, c, d, 4, 7, T5); + SET(d, a, b, c, 5, 12, T6); + SET(c, d, a, b, 6, 17, T7); + SET(b, c, d, a, 7, 22, T8); + SET(a, b, c, d, 8, 7, T9); + SET(d, a, b, c, 9, 12, T10); + SET(c, d, a, b, 10, 17, T11); + SET(b, c, d, a, 11, 22, T12); + SET(a, b, c, d, 12, 7, T13); + SET(d, a, b, c, 13, 12, T14); + SET(c, d, a, b, 14, 17, T15); + SET(b, c, d, a, 15, 22, T16); +#undef SET + + /* Round 2. */ + /* Let [abcd k s i] denote the operation + a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ +#define G(x, y, z) (((x) & (z)) | ((y) & ~(z))) +#define SET(a, b, c, d, k, s, Ti)\ + t = a + G(b,c,d) + X[k] + Ti;\ + a = ROTATE_LEFT(t, s) + b + /* Do the following 16 operations. */ + SET(a, b, c, d, 1, 5, T17); + SET(d, a, b, c, 6, 9, T18); + SET(c, d, a, b, 11, 14, T19); + SET(b, c, d, a, 0, 20, T20); + SET(a, b, c, d, 5, 5, T21); + SET(d, a, b, c, 10, 9, T22); + SET(c, d, a, b, 15, 14, T23); + SET(b, c, d, a, 4, 20, T24); + SET(a, b, c, d, 9, 5, T25); + SET(d, a, b, c, 14, 9, T26); + SET(c, d, a, b, 3, 14, T27); + SET(b, c, d, a, 8, 20, T28); + SET(a, b, c, d, 13, 5, T29); + SET(d, a, b, c, 2, 9, T30); + SET(c, d, a, b, 7, 14, T31); + SET(b, c, d, a, 12, 20, T32); +#undef SET + + /* Round 3. */ + /* Let [abcd k s t] denote the operation + a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ +#define H(x, y, z) ((x) ^ (y) ^ (z)) +#define SET(a, b, c, d, k, s, Ti)\ + t = a + H(b,c,d) + X[k] + Ti;\ + a = ROTATE_LEFT(t, s) + b + /* Do the following 16 operations. */ + SET(a, b, c, d, 5, 4, T33); + SET(d, a, b, c, 8, 11, T34); + SET(c, d, a, b, 11, 16, T35); + SET(b, c, d, a, 14, 23, T36); + SET(a, b, c, d, 1, 4, T37); + SET(d, a, b, c, 4, 11, T38); + SET(c, d, a, b, 7, 16, T39); + SET(b, c, d, a, 10, 23, T40); + SET(a, b, c, d, 13, 4, T41); + SET(d, a, b, c, 0, 11, T42); + SET(c, d, a, b, 3, 16, T43); + SET(b, c, d, a, 6, 23, T44); + SET(a, b, c, d, 9, 4, T45); + SET(d, a, b, c, 12, 11, T46); + SET(c, d, a, b, 15, 16, T47); + SET(b, c, d, a, 2, 23, T48); +#undef SET + + /* Round 4. */ + /* Let [abcd k s t] denote the operation + a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ +#define I(x, y, z) ((y) ^ ((x) | ~(z))) +#define SET(a, b, c, d, k, s, Ti)\ + t = a + I(b,c,d) + X[k] + Ti;\ + a = ROTATE_LEFT(t, s) + b + /* Do the following 16 operations. */ + SET(a, b, c, d, 0, 6, T49); + SET(d, a, b, c, 7, 10, T50); + SET(c, d, a, b, 14, 15, T51); + SET(b, c, d, a, 5, 21, T52); + SET(a, b, c, d, 12, 6, T53); + SET(d, a, b, c, 3, 10, T54); + SET(c, d, a, b, 10, 15, T55); + SET(b, c, d, a, 1, 21, T56); + SET(a, b, c, d, 8, 6, T57); + SET(d, a, b, c, 15, 10, T58); + SET(c, d, a, b, 6, 15, T59); + SET(b, c, d, a, 13, 21, T60); + SET(a, b, c, d, 4, 6, T61); + SET(d, a, b, c, 11, 10, T62); + SET(c, d, a, b, 2, 15, T63); + SET(b, c, d, a, 9, 21, T64); +#undef SET + + /* Then perform the following additions. (That is increment each + of the four registers by the value it had before this block + was started.) */ + pms->abcd[0] += a; + pms->abcd[1] += b; + pms->abcd[2] += c; + pms->abcd[3] += d; +} + +void +md5_init(md5_state_t *pms) +{ + pms->count[0] = pms->count[1] = 0; + pms->abcd[0] = 0x67452301; + pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; + pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; + pms->abcd[3] = 0x10325476; +} + +void +md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes) +{ + const md5_byte_t *p = data; + int left = nbytes; + int offset = (pms->count[0] >> 3) & 63; + md5_word_t nbits = (md5_word_t)(nbytes << 3); + + if (nbytes <= 0) + return; + + /* Update the message length. */ + pms->count[1] += nbytes >> 29; + pms->count[0] += nbits; + if (pms->count[0] < nbits) + pms->count[1]++; + + /* Process an initial partial block. */ + if (offset) { + int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); + + memcpy(pms->buf + offset, p, copy); + if (offset + copy < 64) + return; + p += copy; + left -= copy; + md5_process(pms, pms->buf); + } + + /* Process full blocks. */ + for (; left >= 64; p += 64, left -= 64) + md5_process(pms, p); + + /* Process a final partial block. */ + if (left) + memcpy(pms->buf, p, left); +} + +void +md5_finish(md5_state_t *pms, md5_byte_t digest[16]) +{ + static const md5_byte_t pad[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + md5_byte_t data[8]; + int i; + + /* Save the length before padding. */ + for (i = 0; i < 8; ++i) + data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3)); + /* Pad to 56 bytes mod 64. */ + md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1); + /* Append the length. */ + md5_append(pms, data, 8); + for (i = 0; i < 16; ++i) + digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3)); +} diff --git a/casper-md5check/md5.h b/casper-md5check/md5.h new file mode 100644 index 0000000..698c995 --- /dev/null +++ b/casper-md5check/md5.h @@ -0,0 +1,91 @@ +/* + Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + L. Peter Deutsch + ghost@aladdin.com + + */ +/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */ +/* + Independent implementation of MD5 (RFC 1321). + + This code implements the MD5 Algorithm defined in RFC 1321, whose + text is available at + http://www.ietf.org/rfc/rfc1321.txt + The code is derived from the text of the RFC, including the test suite + (section A.5) but excluding the rest of Appendix A. It does not include + any code or documentation that is identified in the RFC as being + copyrighted. + + The original and principal author of md5.h is L. Peter Deutsch + <ghost@aladdin.com>. Other authors are noted in the change history + that follows (in reverse chronological order): + + 2002-04-13 lpd Removed support for non-ANSI compilers; removed + references to Ghostscript; clarified derivation from RFC 1321; + now handles byte order either statically or dynamically. + 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. + 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); + added conditionalization for C++ compilation from Martin + Purschke <purschke@bnl.gov>. + 1999-05-03 lpd Original version. + */ + +#ifndef md5_INCLUDED +# define md5_INCLUDED + +/* + * This package supports both compile-time and run-time determination of CPU + * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be + * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is + * defined as non-zero, the code will be compiled to run only on big-endian + * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to + * run on either big- or little-endian CPUs, but will run slightly less + * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. + */ + +typedef unsigned char md5_byte_t; /* 8-bit byte */ +typedef unsigned int md5_word_t; /* 32-bit word */ + +/* Define the state of the MD5 Algorithm. */ +typedef struct md5_state_s { + md5_word_t count[2]; /* message length in bits, lsw first */ + md5_word_t abcd[4]; /* digest buffer */ + md5_byte_t buf[64]; /* accumulate block */ +} md5_state_t; + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Initialize the algorithm. */ +void md5_init(md5_state_t *pms); + +/* Append a string to the message. */ +void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); + +/* Finish the message and return the digest. */ +void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); + +#ifdef __cplusplus +} /* end extern "C" */ +#endif + +#endif /* md5_INCLUDED */ diff --git a/casper.conf b/casper.conf new file mode 100644 index 0000000..c6967f9 --- /dev/null +++ b/casper.conf @@ -0,0 +1,9 @@ +# This file should go in +# conf/conf.d/ +# Supported variables are: +# USERNAME, USERFULLNAME, HOST + +export USERNAME="debian" +export USERFULLNAME="Debian Live user" +export HOST="debian" + diff --git a/caspermon/GNOME_PythonAppletCasper.server b/caspermon/GNOME_PythonAppletCasper.server new file mode 100644 index 0000000..34caa04 --- /dev/null +++ b/caspermon/GNOME_PythonAppletCasper.server @@ -0,0 +1,30 @@ +<oaf_info> + +<oaf_server iid="OAFIID:GNOME_PythonAppletCasper_Factory" + type="exe" + location="/usr/share/casper-applet/casper-applet.py"> + + <oaf_attribute name="repo_ids" type="stringv"> + <item value="IDL:Bonobo/GenericFactory:1.0"/> + <item value="IDL:Bonobo/Unknown:1.0"/> + </oaf_attribute> + <oaf_attribute name="name" type="string" value="PythonAppletCasper"/> + <oaf_attribute name="description" type="string" value="Python Applet CAsper"/> +</oaf_server> + +<oaf_server iid="OAFIID:GNOME_PythonAppletCasper" + type="factory" + location="OAFIID:GNOME_PythonAppletCasper_Factory"> + + <oaf_attribute name="repo_ids" type="stringv"> + <item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/> + <item value="IDL:Bonobo/Control:1.0"/> + <item value="IDL:Bonobo/Unknown:1.0"/> + </oaf_attribute> + <oaf_attribute name="name" type="string" value="PythonAppletCasper"/> + <oaf_attribute name="description" type="string" value="Python Applet Casper"/> + <oaf_attribute name="panel:category" type="string" value="Utility"/> + <oaf_attribute name="panel:icon" type="string" value="bug-buddy.png"/> +</oaf_server> + +</oaf_info> diff --git a/caspermon/caspermon-applet b/caspermon/caspermon-applet new file mode 100755 index 0000000..773e0a4 --- /dev/null +++ b/caspermon/caspermon-applet @@ -0,0 +1,75 @@ +#!/usr/bin/python + +import pygtk +pygtk.require('2.0') + +import gtk +import gnome.applet +import subprocess +import os + +# A simple applet to display the utilization of the snapshot device +# during a casper session +# +# Matt Zimmerman <mdz@canonical.com> + +# TODO: +# - tooltip with details +# - flash at threshold + +class CasperApplet: + def __init__(self, applet, iid): + self.timeout_interval = 1000 + self.device = 'casper-snapshot' + self.capacity = [0,0] + self.datafile = '/var/lib/casper/snapshot-status' + + # initializate the gnome internals + gnome.init("casper", "0.1") + + self.applet = applet + + self.tooltips = gtk.Tooltips() + self.hbox = gtk.HBox() + applet.add(self.hbox) + + # add the second button event for the popup menu and the enter mouse event to change the tooltip value + self.ev_box = gtk.EventBox() + #self.ev_box.connect("button-press-event",self.button_press) + self.ev_box.connect("enter-notify-event", self.update_info) + self.hbox.add(self.ev_box) + + self.prog = gtk.ProgressBar() + self.ev_box.add(self.prog) + + self.update_info() + + gtk.timeout_add(self.timeout_interval,self.update_info, self) + + applet.connect("destroy",self.cleanup) + applet.show_all() + + def update_info(self, event=None): + self.capacity = self.read_info() + self.prog.set_fraction(float(self.capacity[0]) / self.capacity[1]) + self.prog.update() + + def read_info(self): + fields = open(self.datafile).readline().split() + if fields[2] != 'snapshot': + return None + + return map(int,fields[3].split('/', 1)) + + def cleanup(self): + # what goes here? + pass + +def casper_factory(applet, iid): + CasperApplet(applet, iid) + + return gtk.TRUE + +gnome.applet.bonobo_factory("OAFIID:GNOME_PythonAppletCasper_Factory", + gnome.applet.Applet.__gtype__, + "casper", "0", casper_factory) diff --git a/caspermon/caspermond b/caspermon/caspermond new file mode 100644 index 0000000..e126447 --- /dev/null +++ b/caspermon/caspermond @@ -0,0 +1,9 @@ +#!/bin/sh + +STATEFILE=/var/run/caspermond/status.casper-snapshot + +while true; do + dmsetup status /dev/mapper/casper-snapshot > $STATEFILE.new + mv $STATEFILE.new $STATEFILE + sleep 60 +done diff --git a/debian/casper.dirs b/debian/casper.dirs new file mode 100644 index 0000000..276a2b3 --- /dev/null +++ b/debian/casper.dirs @@ -0,0 +1,3 @@ +/usr/lib/casper +/usr/share/initramfs-tools/hooks +/usr/share/initramfs-tools/scripts diff --git a/debian/casper.init b/debian/casper.init new file mode 100755 index 0000000..797d230 --- /dev/null +++ b/debian/casper.init @@ -0,0 +1,40 @@ +#! /bin/sh + +grep -qs boot=casper /proc/cmdline || exit 0 + +# Try to cache everything we're likely to need after ejecting. This +# is fragile and simple-minded, but our options are limited. +cache_path() { + path="$1" + + if [ -d "$path" ]; then + find "$path" -type f | xargs cat > /dev/null 2>&1 + elif [ -f "$path" ]; then + if [ -x "$path" ]; then + if file "$path" | grep -q 'dynamically linked'; then + for lib in $(ldd "$path" | awk '{ print $3 }'); do + cache_path "$lib" + done + fi + fi + cat "$path" >/dev/null 2>&1 + fi +} + +for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default; do + cache_path "$path" +done + +eject -p -m /live_media >/dev/null 2>&1 + +# XXX - i18n +echo -n "Please remove the disc (if any), close the tray (if any) and press ENTER: " +if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "TIMEOUT 0" + /sbin/usplash_write "TEXT Please remove the disc, close the tray (if any)" + /sbin/usplash_write "TEXT and press ENTER to continue" +fi + +read x < /dev/console + +exit 0 diff --git a/debian/casper.install b/debian/casper.install new file mode 100644 index 0000000..28a4469 --- /dev/null +++ b/debian/casper.install @@ -0,0 +1,4 @@ +bin/casper-reconfigure usr/share/casper +bin/casper-preseed usr/share/casper +hooks usr/share/initramfs-tools +scripts usr/share/initramfs-tools diff --git a/debian/casper.lintian b/debian/casper.lintian new file mode 100644 index 0000000..e7fdc6a --- /dev/null +++ b/debian/casper.lintian @@ -0,0 +1 @@ +casper: init.d-script-does-not-implement-required-option diff --git a/debian/casper.postinst b/debian/casper.postinst new file mode 100644 index 0000000..d7bc14d --- /dev/null +++ b/debian/casper.postinst @@ -0,0 +1,5 @@ +#!/bin/sh + +update-initramfs -u + +#DEBHELPER# diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..f2182d6 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,31 @@ +casper (1.59+debian-1) unstable; urgency=low + + [ Daniel Baumann ] + * Upload to unstable (Closes: #354539). + + [ Marco Amadori ] + * Added possibility to set locale on chroot, not only at runtime. + * Removed "persistent" wait. + * Fixed persistence lock and added "homepersistence" boot parameter. + * Updated locales handling to latest debian policy. + * Cleanups + + -- Daniel Baumann <daniel@debian.org> Thu, 22 Jun 2006 06:21:00 +0200 + +casper (1.59+debian-0) UNRELEASED; urgency=low + + * Added "toram" boot parameter. + * Extendend fs support to ext2 and xfs file image. + * Changed debian-inexistant "-Q" modprobe option with "-q". + * Removed ubiquity code. + * USERNAME and HOST defaulted to "debian". + * Preliminary netboot (cifs) patch by + "Jason D. Clinton" <me@jasonclinton.com> + * Lowered dependence of dmsetup code (now only Suggests). + * Checks for replacing "udevplug" (ubuntu-only) with "udevtrigger". + * Reworked xorg and anacron patches from + Frederic Lehobey <Frederic.Lehobey@free.fr>. + * scripts/casper-bottom/10adduser: configuring only the $USERNAME for sudo + instead of group 'admin'. + + -- Marco Amadori <marco.amadori@gmail.com> Fri, 16 Jun 2006 11:01:48 +0200 diff --git a/debian/changelog.upstream b/debian/changelog.upstream new file mode 100644 index 0000000..c27fcbe --- /dev/null +++ b/debian/changelog.upstream @@ -0,0 +1,1079 @@ +casper (1.59) UNRELEASED; urgency=low + + * Change start symlinks to kill symlinks for anacron, to avoid it being + started by invoke-rc.d and similar. + * Rearrange source package. + * Redo how the init script works and require it to be installed in the + live fs. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Wed, 31 May 2006 00:01:40 +0200 + +casper (1.58) dapper; urgency=low + + * Really rename properly, without dirname. + + -- Scott James Remnant <scott@ubuntu.com> Tue, 30 May 2006 22:47:04 +0100 + +casper (1.57) dapper; urgency=low + + * Rename the anacron rc.d/S* symlinks to K*, instead of removing them. + Because otherwise pbbuttonsd decides that starting anacron on the + LiveCD would be a clever thing to do. + + -- Scott James Remnant <scott@ubuntu.com> Wed, 24 May 2006 23:06:04 +0100 + +casper (1.56) dapper; urgency=low + + * Hopefully work a bit better when checking DVDs on 32 bit + architectures. + * Do an explicit read from /dev/console when waiting for keypress after + CD/DVD has been ejected. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 22 May 2006 16:43:03 +0200 + +casper (1.55) dapper; urgency=low + + * Reconfigure gnome-power-manager when doing live installations. + Malone #45654 + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 22 May 2006 11:16:46 +0200 + +casper (1.54) dapper; urgency=low + + [ Luke Yelavich ] + * Set large print fonts for the v1 accessibility profile. Closes + Malone #45376. + + [ Colin Watson ] + * Fix preseed/file handling (closes: Malone #43683). + + -- Tollef Fog Heen <tfheen@ubuntu.com> Thu, 18 May 2006 19:36:24 +0200 + +casper (1.53) dapper; urgency=low + + [ Tollef Fog Heen ] + * Disable fglrx and nvidida drivers by default. Somewhat addresses + #43706 + + [ Colin Watson ] + * Pass all command-line preseed arguments (other than preseed/file) to + /root's debconf db. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Sat, 13 May 2006 10:14:36 +0200 + +casper (1.52) dapper; urgency=low + + * Export the path in casper-reconfigure so X and friends actually have + sbin in their path. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Thu, 11 May 2006 21:04:11 +0200 + +casper (1.51) dapper; urgency=low + + [ Luke Yelavich ] + * casper-bottom/30accessibility: + - Removed stale reference to acessx_applet. + - Fix some typos for gconf values that had to be set as lists. + + [ Colin Watson ] + * Pass debian-installer/locale to /root's debconf db (closes: Malone + #41896). + * Identify ourselves as casper when communicating with debconf. + * Factor out preseeding code into casper-preseed; this knows that it only + needs to register a question if it fails to set it, which saves memory + by avoiding debconf having to rewrite templates.dat. + * Preseed kbd-chooser/method as well as debian-installer/keymap, so that + kbd-chooser run from ubiquity picks up the selected keyboard (closes: + Malone #42202). + * Use new dpkg-reconfigure --no-reload option (debconf 1.4.72ubuntu6) to + avoid needlessly rewriting templates.dat. + + [ Tollef Fog Heen ] + * Add ... to the end of all usplash messages. Malone #43856 + * Add maybe_break casper-bottom to allow breaking before running bottom + scripts. Malone #43860 + * Don't show the name of the live cd user that's added. + * Mount COW filesystem if show-cow is present on the kernel command line. + Malone #43687 + * Disable the Kubuntu update notifier too. Malone #43806 + * Disable hibernation and enable sleep where appropriate. Malone #23882 + + -- Tollef Fog Heen <tfheen@ubuntu.com> Thu, 11 May 2006 12:11:08 +0200 + +casper (1.50) dapper; urgency=low + + [ Luke Yelavich ] + * Fixed some typos, and added missing settings to some accessibility + profiles, as they were either not working properly, or at all. Malone: + #39472, #39473 + * Removed the desktop wallpaper, and changed the background colour to gray + for the v1 accessibility profile. + * Set the whiteglass mouse theme for the v1 accessibility profile. + * Moved the gconftool-2 -s flag to individual gct calls, to allow for future + use of gconftool-2 flags that are incompatible with -s. + + [ Daniele Favara ] + * Allow custom HOST, USERNAME, USERFULLNAME. Malone: #42118 + * Add example file + - debian/casper.dir: Add examples dir + - debian/casper.conf: Explain briefly how to use new variables + - debian/rules: Install casper.conf as example_conf_casper + + [ Tollef Fog Heen ] + * Stylistic changes to Daniele's changes. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Tue, 2 May 2006 14:12:31 +0200 + +casper (1.49) dapper; urgency=low + + * Also look for hardware named wlan* + + -- Scott James Remnant <scott@ubuntu.com> Wed, 26 Apr 2006 13:37:13 +0100 + +casper (1.48) dapper; urgency=low + + * Write /etc/network/interfaces entries for eth0, eth1, eth2, ath0 and + wlan0 if there's no hardware detected for them; as it may be plugged + in after boot. + + -- Scott James Remnant <scott@ubuntu.com> Wed, 26 Apr 2006 12:31:38 +0100 + +casper (1.47) dapper; urgency=low + + [ Tollef Fog Heen ] + * Turn on debugging of the X config. + * Log to a file which gets copied to /var/log/casper.log. Malone: #39895 + * Only pick UTF-8 locales. Malone: #40178 + * Use correct /root rather than /target for seeing what version of + gnome-panel-data is installed. + * Make festival (and probably some other apps) happier by using + 127.0.1.1 for our ubuntu hostname and 127.0.0.1 just resolves to + "localhost". + * Make casper-md5check read from tty8 since it wants to get keypresses + from the active console (where usplash runs). Malone: #40490. + * Copy /etc/modules when installing with ubiquity. Malone: #40311 + * /etc/gdm/gdm-cdd.conf can be a symlink. Cope with that. Malone: #40767 + + [ Colin Watson ] + * ubiquity-casper conflicts/replaces espresso-casper. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 24 Apr 2006 09:41:14 +0200 + +casper (1.46) dapper; urgency=low + + * Use debian-installer/dummy for preseeding rather than espresso/dummy, + since the latter was removed in espresso 0.99.38. + * espresso is being renamed to ubiquity. Rename espresso-casper to + ubiquity-casper to match. + + -- Colin Watson <cjwatson@ubuntu.com> Fri, 21 Apr 2006 12:52:48 +0100 + +casper (1.45) dapper; urgency=low + + [ Matt Zimmerman ] + * [share/shutdown] Disable the usplash timeout and wrap the prompt to two + lines + + [ Tollef Fog Heen ] + * Use devmapper for ia64, hppa and sparc. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Wed, 19 Apr 2006 11:36:49 +0200 + +casper (1.44) dapper; urgency=low + + * Reset the timeout after casper-premount has run so we're sure that the + timeout is what we want it to be. Udev seems to change it too. + * Remove a few set -x commands to make the boot slightly less verbose. + * Fix 10adduser to actually install the correct icons for espresso. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Wed, 12 Apr 2006 14:20:53 +0200 + +casper (1.43) dapper; urgency=low + + * Copy espresso-kdeui.desktop file to user's desktop + Branch at http://kubuntu.org/~jriddell/bzr/casper/trunk/ + + -- Jonathan Riddell <jriddell@ubuntu.com> Thu, 13 Apr 2006 15:37:49 +0100 + +casper (1.42) dapper; urgency=low + + [ Luke Yelavich ] + * casper-bottom/30accessibility: + - Removed some settings from accessibility profiles as these are now + in the relevant packages. + + [ Tollef Fog Heen ] + * Make sure to call gconftool as the right user. Malone #38408 + * Write an entry for / in fstab. Hopefully fixes Malone #34330 + * Change gdm-cdd.conf if it exists, not gdm.conf. Malone #37467 + * Really disable update-notifier, this time by removing the correct + file. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Tue, 11 Apr 2006 15:43:24 +0200 + +casper (1.41) dapper; urgency=low + + * Don't mkdir then install -D, just install -D (this should prevent + ~ubuntu/Desktop being owned by root) + + -- Tollef Fog Heen <tfheen@ubuntu.com> Wed, 29 Mar 2006 10:52:42 +0200 + +casper (1.40) dapper; urgency=low + + * Add snd_powermac to /etc/modules on ppc. (Malone: #27862) + * Use chmod -x instead of mv to disable readahead in order to not + trigger unionfs bugs + * Reboot the system when a key is pressed at the end of the integrity + check. (Malone: #29203) + * Use usplash_write too when doing shutdown. (Malone: #34537) + + -- Tollef Fog Heen <tfheen@ubuntu.com> Tue, 28 Mar 2006 10:09:49 +0200 + +casper (1.39) dapper; urgency=low + + [ Tollef Fog Heen ] + * Disable update-notifier by default, as it won't make much sense for + most people. + + [ Colin Watson ] + * Clear out user-setup questions from the debconf database after creating + the live CD user, to avoid confusing espresso into offering "Ubuntu + LiveCD user" as the user's default full name. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 13 Mar 2006 11:38:39 +0100 + +casper (1.38) dapper; urgency=low + + * Disable readahead since it breaks too much with squashfs and unionfs. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Thu, 9 Mar 2006 09:43:39 +0100 + +casper (1.37) dapper; urgency=low + + * Add support for having the squashfs directly on a device, thanks to + Paul Sladen for idea and a patch. + * If a directory "Examples" exists in ~ after we've run adduser, move it + to the Desktop subdirectory for greater visibility. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Sat, 4 Mar 2006 11:55:50 +0100 + +casper (1.36) dapper; urgency=low + + [ Tollef Fog Heen ] + * Fix typo in find_cow_device so block devices didn't work at all. + Malone #31639. Thanks to Richard Nemec for the catch. + * Update accessibility framework, thanks to Luke Yelavich. + + [ Colin Watson ] + * Move the /cdrom mount into the new root filesystem. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Wed, 1 Mar 2006 11:13:54 +0100 + +casper (1.35) dapper; urgency=low + + * Check for preseed/file= in /proc/cmdline and feed any given file to + debconf-set-selections. + + -- Colin Watson <cjwatson@ubuntu.com> Mon, 27 Feb 2006 17:32:02 +0000 + +casper (1.34) dapper; urgency=low + + [ Luke Yelavich ] + * Add initial accessibility support framework + + -- Tollef Fog Heen <tfheen@ubuntu.com> Wed, 22 Feb 2006 14:36:07 +0100 + +casper (1.33) dapper; urgency=low + + * Make sure Desktop and the espresso-$ui.desktop is owned by the Ubuntu + user. Malone #31991 + * Fix check for rc6.d/S90reboot at the bottom of 25configure_init to + actually look in the right place. + * Make me the maintainer of the package. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 20 Feb 2006 09:49:02 +0100 + +casper (1.32) dapper; urgency=low + + * Fix copying of /usr/share/applications/espresso-gtkui.desktop. + + -- Colin Watson <cjwatson@ubuntu.com> Thu, 16 Feb 2006 16:47:15 +0000 + +casper (1.31) dapper; urgency=low + + [ Tollef Fog Heen ] + * Print message about rebooting the system when the md5 check is + finished. + * Just have one copy of the casper shutdown scripts and symlink those + into the right place. Malone #20978 + + [ Colin Watson ] + * Copy /usr/share/applications/espresso-gtkui.desktop to the live CD + user's desktop. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Tue, 14 Feb 2006 14:52:16 +0100 + +casper (1.30) dapper; urgency=low + + * Set a blank password for the ubuntu user. This hopefully resolves + Malone #30118 + * Pass keyboard layout information to xserver-xorg in the "new" scheme. + * Set up the right console keymap. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Tue, 14 Feb 2006 14:48:14 +0100 + +casper (1.29) dapper; urgency=low + + [ Tollef Fog Heen ] + * Fix typo in 22gnome_panel_data + * Configure all detected network interfaces. + * Add support for putting the persistent storage in a loopback file on + vfat volumes + * Configure all detected network interfaces. + * Allow putting the live filesystem image on a VFAT volume + * Allow putting the persistent storage in a loopback file on a VFAT + volume + * Lots of cleanups + + [ Colin Watson ] + * Change casper-reconfigure to take the target root filesystem as its + first argument. + * Add espresso-casper package with hooks to repeat some things done by + casper in the installed system. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Wed, 25 Jan 2006 14:25:45 +0100 + +casper (1.28) dapper; urgency=low + + * Depend on user-setup + * First shot at IEEE1394 support. Add sbp2 and ohci1394 as modules to + be copied into the initramfs. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 16 Jan 2006 22:06:35 +0100 + +casper (1.27) dapper; urgency=low + + * Try using unionfs on ppc again + + -- Tollef Fog Heen <tfheen@ubuntu.com> Tue, 10 Jan 2006 20:55:19 +0100 + +casper (1.26) dapper; urgency=low + + * Add persistency support + * Usplash integration + + -- Tollef Fog Heen <tfheen@ubuntu.com> Tue, 10 Jan 2006 17:53:54 +0100 + +casper (1.25) dapper; urgency=low + + * Make /rofs available to in the target system. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 9 Jan 2006 15:25:12 +0100 + +casper (1.24) dapper; urgency=low + + * For debconf-communicate, use a here-doc rather than trying to have \n + working in shell variables. + * The usplash fifo has moved, update paths accordingly. Also conflict + with the old usplash and depend on new enough initramfs-tools. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Fri, 6 Jan 2006 14:20:37 +0100 + +casper (1.23) dapper; urgency=low + + * Move the building to binary-dep, since we're an arch: any package + now. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Thu, 5 Jan 2006 10:37:31 +0100 + +casper (1.22) dapper; urgency=low + + * Bunch debconf-communicate commands together to speed up the boot a + little bit. + * Add integrity checker, this is compiled code, so casper is now arch: + any + + -- Tollef Fog Heen <tfheen@ubuntu.com> Wed, 4 Jan 2006 12:56:13 +0100 + +casper (1.21) dapper; urgency=low + + * If locale is unset, use en_US.UTF8, not whatever comes first in the + list of supported locales. + * Generate locale and set the locale in /etc/environment + * Use user-setup to create the user, rather than doing it ourselves. + * Various cleanups and fixes, such as making debconf-communicate silent + * Disable checkroot when booting + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 2 Jan 2006 11:00:25 +0100 + +casper (1.20) dapper; urgency=low + + * Remove a large bunch of debugging output + * Depend on dmsetup so the hook script can copy in that + * Handle both squashfs and cloop images, with run-time detection + * Use devmapper + cloop on powerpc, not unionfs, since unionfs is a + disaster there. + * Make sure we have both SCSI and IDE CDROM modules available in the + initramfs. + * Do some initial keyboard setup handling so X will, at least in some + cases, have a chance of giving the user a sane keymap. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Mon, 19 Dec 2005 14:23:13 +0100 + +casper (1.19) dapper; urgency=low + + * Switch to initramfs, so casper only survives in spirit + * Use unionfs instead of a writeable devmapper snapshot + * Remove all debconfiscation, since we're an initramfs script now + * Make the postinst call update-initramfs -u + * Mount the CD read-only explicitly + * Make udevinfo silent if the device is not found. + + -- Tollef Fog Heen <tfheen@ubuntu.com> Tue, 13 Dec 2005 16:22:45 +0100 + +casper (1.18) breezy; urgency=low + + * Update translations from Rosetta: Greek, Spanish, French, Hungarian, + Brazilian Portuguese. + + -- Colin Watson <cjwatson@ubuntu.com> Mon, 19 Sep 2005 20:05:02 +0100 + +casper (1.17) breezy; urgency=low + + * Set /apps/gnome-screensaver/lock if gnome-screensaver is installed + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 16 Sep 2005 15:24:35 -0700 + +casper (1.16) breezy; urgency=low + + * Install a fake script in /lib/debian-installer.d/S72menu-exit after + pivoting that just calls sleep, to prevent scary console messages as d-i + tries to exit without its root filesystem. + + -- Colin Watson <cjwatson@ubuntu.com> Wed, 14 Sep 2005 10:28:06 +0100 + +casper (1.15) breezy; urgency=low + + * Neutralize branding in startup message + * Use clear in addition to reset, in hopes of concealing error messages on + the console from d-i's death throes + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 9 Sep 2005 11:24:14 -0700 + +casper (1.14) breezy; urgency=low + + * Set RUNNING_UNDER_GDM=yes in the user's environment to stop xscreensaver + locking the screen (Ubuntu #7150). + + -- Colin Watson <cjwatson@ubuntu.com> Thu, 8 Sep 2005 13:37:00 +0100 + +casper (1.13) breezy; urgency=low + + * Use reset, rather than clear, to clean up after the colored dialogs on vt1 + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 7 Sep 2005 16:09:45 -0700 + +casper (1.12) breezy; urgency=low + + * Kill bterm after pivoting so that we can use vt1 rather than vt2, + thereby avoiding a fight between gdm and the X server (closes: Ubuntu + #14851). + + -- Colin Watson <cjwatson@ubuntu.com> Wed, 7 Sep 2005 15:48:40 +0100 + +casper (1.11) breezy; urgency=low + + * Remove debugging code which crept into 1.10 + * Revert changes to casper-udeb.postinst which were intended for + starting usplash earlier (pre-1.10) + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 2 Sep 2005 13:43:03 -0700 + +casper (1.10) breezy; urgency=low + + * Instead of starting usplash directly, create an init script which will + start it later (after the new init), to avoid it being killed by + busybox init + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 29 Aug 2005 20:26:58 -0700 + +casper (1.9) breezy; urgency=low + + * Remember to re-run 30copy-dev from 94usplash, in order to preserve the + device nodes clobbered by udev + * Redirect stdin of /etc/init.d/udev from /dev/console, to avoid + incredibly obnoxious 60-second sleep because it thinks we're + interactive + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 29 Aug 2005 18:30:38 -0700 + +casper (1.8) breezy; urgency=low + + * Add usplash support + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 29 Aug 2005 17:30:57 -0700 + +casper (1.7) breezy; urgency=low + + * Set DEBUG_XORG_PACKAGE=yes when reconfiguring xserver-xorg. The + output is only written to post.log and isn't visible to the user, and + can be invaluable for debugging + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 22 Aug 2005 10:25:38 -0700 + +casper (1.6) breezy; urgency=low + + * Use debconf-copydb again (thanks, Tollef) + * Rename pre.d/20xconfig to pre.d/20prexconfig so that it is distinct from + post.d/20xconfig for purposes of the progress bar (no text for it; it's + very fast) + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 17 Aug 2005 14:55:24 -0700 + +casper (1.5) breezy; urgency=low + + * Call MAKEDEV console in post.d/20xconfig as a workaround for bug + #13523 + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 16 Aug 2005 15:24:06 -0700 + +casper (1.4) breezy; urgency=low + + * Revert to the old debconf hack; the debconf-copydb approach needs more + work + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 15 Aug 2005 22:48:11 -0700 + +casper (1.3) breezy; urgency=low + + * Revert unintentional release of experimental unionfs code in 1.2 + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 13 Aug 2005 11:19:50 -0700 + +casper (1.2) breezy; urgency=low + + * Fix debconf-copydb regex in 20xconfig + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 13 Aug 2005 11:07:46 -0700 + +casper (1.1) breezy; urgency=low + + * Cope with xserver-xorg's rename of force_keyboard_detection to + autodetect_keyboard + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 4 Jul 2005 02:52:07 -0700 + +casper (1.0) breezy; urgency=low + + * Version number bump (we've been through a stable Ubuntu release, after + all) + * Rename pre.d/10snapshot to post.d/10filesystem, as it is about to + become more generic + * Seed xserver-xorg/force_keyboard_detection to true in 20xconfig, so as + to cause the keyboard layout to (continue to) be autodetected based on + d-i settings + + -- Matt Zimmerman <mdz@ubuntu.com> Thu, 16 Jun 2005 11:21:54 -0700 + +casper (0.65) breezy; urgency=low + + * As a performance optimization, only reconfigure gnome-panel-data if + booting on a laptop + * Disable the "lock screen" menu item (Ubuntu bug#7150) + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 8 Jun 2005 16:02:14 -0700 + +casper (0.64) breezy; urgency=low + + * Merge colin.watson@canonical.com--2005/casper--debconf-copydb--0 + - Use debconf-copydb rather than our temporary hack + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 31 May 2005 12:08:51 -0700 + +casper (0.63) breezy; urgency=low + + * Merge colin.watson@canonical.com--2005/casper--cdebconf-info--0 + - Update for cdebconf 0.75: use db_info rather than db_x_setbacktitle. + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 18 Apr 2005 20:59:58 -0700 + +casper (0.62) hoary; urgency=low + + * Updated translations from + colin.watson@canonical.com--2005/casper--translations--0 (nb) + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 5 Apr 2005 09:01:02 -0700 + +casper (0.61) hoary; urgency=low + + * Updated translations from + colin.watson@canonical.com--2005/casper--translations--0 (el, es, ro) + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 5 Apr 2005 08:06:51 -0700 + +casper (0.60) hoary; urgency=low + + * Updated translations from + colin.watson@canonical.com--2005/casper--translations--0 (hu, id, pl) + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 28 Mar 2005 11:26:21 -0800 + +casper (0.59) hoary; urgency=low + + * Updated translations from + colin.watson@canonical.com--2005/casper--translations--0 (de, pt_BR) + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 25 Mar 2005 16:51:17 -0800 + +casper (0.58) hoary; urgency=low + + * Remove postfix shutdown links, as well as startup, to avoid an ugly error + + -- Matt Zimmerman <mdz@ubuntu.com> Thu, 24 Mar 2005 18:24:03 -0800 + +casper (0.57) hoary; urgency=low + + * Merge colin.watson@canonical.com--2005/casper--translations--0 up to + patch-2 + * Preseed netcfg/wireless_essid_again for noninteractive network setup, +new + in netcfg 1.08ubuntu3 [colin.watson@canonical.com--2005/casper--netcfg--0] + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 23 Mar 2005 08:33:46 -0800 + +casper (0.56) hoary; urgency=low + + * Suppress error output from eject + * Remind the user to close the CD tray if they have one (Ubuntu #6668) + * Add arch-build target to debian/rules + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 22 Mar 2005 10:21:41 -0800 + +casper (0.55) hoary; urgency=low + + * Remove the hack introduced in 0.54, xorg 6.8.2-5 should be fixed + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 16 Mar 2005 18:11:05 -0800 + +casper (0.54) hoary; urgency=low + + * Temporarily set RECONFIGURE=true when reconfiguring xserver-xorg, to work + around a bug introduced in 6.8.2-3 + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 16 Mar 2005 15:08:45 -0800 + +casper (0.53) hoary; urgency=low + + * Provide target-base-system (i.e. base system installed in /target, also + provided by base-installer). + + -- Colin Watson <cjwatson@ubuntu.com> Tue, 15 Mar 2005 13:01:53 +0000 + +casper (0.52) hoary; urgency=low + + * Arrange for $LANG to be set after pivot_root, so that (e.g.) + xserver-xorg can use it to infer the keymap (Ubuntu #7138) + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 12 Mar 2005 02:10:59 -0800 + +casper (0.51) hoary; urgency=low + + * Disable kpersonalizer startup on first login + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 5 Mar 2005 13:47:13 -0800 + +casper (0.50) hoary; urgency=low + + * Add support for configuring kdm autologin + * Rename 15gdm-autologin to 15autologin, and the corresponding debconf template + * Remove obsolete XORG_FORCE_PROBE from 20xconfig + + -- Matt Zimmerman <mdz@ubuntu.com> Thu, 3 Mar 2005 10:37:31 -0800 + +casper (0.49) hoary; urgency=low + + * Fix 20xconfig harder + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 2 Mar 2005 21:20:03 -0800 + +casper (0.48) hoary; urgency=low + + * Source confmodule in 20xconfig + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 2 Mar 2005 21:02:35 -0800 + +casper (0.47) hoary; urgency=low + + * Copy over the value of debian-installer/keymap into the target system, + to allow the new logic in xserver-xorg.config to work + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 2 Mar 2005 20:45:38 -0800 + +casper (0.46) hoary; urgency=low + + * Lock the live user's password entirely. Since the user is now + automagically logged in, continuously, both on the console and in X, + their password is irrelevant. + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 28 Feb 2005 08:31:13 -0800 + +casper (0.45) hoary; urgency=low + + * Enable TimedLogin in gdm, so that if the user logs out, they are + automatically logged back in after a few seconds (Ubuntu #6667) + + -- Matt Zimmerman <mdz@ubuntu.com> Sun, 27 Feb 2005 16:06:16 -0800 + +casper (0.44) hoary; urgency=low + + * Configure init to spawn shells on virtual consoles, rather than login + prompts (Ubuntu #6666) + * Skip X configuration if a serial console is in use + * Set the live user's password to be blank, rather than "ubuntu". This + is, paradoxically, more secure if the user decides to install + openssh-server, since empty passwords are disallowed by default + + -- Matt Zimmerman <mdz@ubuntu.com> Sun, 27 Feb 2005 15:40:15 -0800 + +casper (0.43) hoary; urgency=low + + * Override localechooser progress bar text to be more appropriate for the + live CD (closes: Ubuntu #6664). + + -- Colin Watson <cjwatson@ubuntu.com> Thu, 24 Feb 2005 19:12:00 +0000 + +casper (0.42) hoary; urgency=low + + * Preseed netcfg/no_interfaces, to avoid prompt when no network interfaces + can be configured (closes: Ubuntu #6107). + * Remove redundant DH_COMPAT setting in debian/rules, since there's + already a (different) debian/compat. + + -- Colin Watson <cjwatson@ubuntu.com> Tue, 22 Feb 2005 12:43:43 +0000 + +casper (0.41) hoary; urgency=low + + * Cope with change in default /etc/sudoers (admin group). + + -- Colin Watson <cjwatson@ubuntu.com> Tue, 22 Feb 2005 09:14:30 +0000 + +casper (0.40) hoary; urgency=low + + * Copy /dev/tts to the live system as well as /dev/vc, for serial console. + + -- Colin Watson <cjwatson@ubuntu.com> Mon, 21 Feb 2005 19:03:54 +0000 + +casper (0.39) hoary; urgency=low + + * Fix reboot operation (cache the reboot binary) + + -- Matt Zimmerman <mdz@ubuntu.com> Thu, 10 Feb 2005 20:51:08 -0800 + +casper (0.38) hoary; urgency=low + + * Eject the CD during shutdown/reboot + - Awful hack to copy /dev/cdroms to the live system, because the CD is + mounted using devfs names + - Add /usr/share/casper/shutdown script to casper-udeb + - Copy /usr/share/casper/shutdown to /etc/rc[06].d in 25configure-init + * Remove caspermon binary package, inadvertently enabled (not even + remotely ready) + + -- Matt Zimmerman <mdz@ubuntu.com> Thu, 10 Feb 2005 13:43:56 -0800 + +casper (0.37) hoary; urgency=low + + * Fix casper-udeb/runlevel template + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 8 Feb 2005 19:37:43 -0800 + +casper (0.36) hoary; urgency=low + + * Rename post.d/25disable-init-scripts to 25configure-init + * Add casper-udeb/runlevel, to allow the default runlevel + to be set + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 8 Feb 2005 19:14:16 -0800 + +casper (0.35) hoary; urgency=low + + * Preseed netcfg/wireless_essid + * Remove obsolete confmodule load from pre.d/12fstab + * Don't mount a tmpfs on /var/run; it doesn't save a huge amount of + snapshot space, and packages expect their directories there to be + persistent + + -- Matt Zimmerman <mdz@ubuntu.com> Mon, 7 Feb 2005 15:46:52 -0800 + +casper (0.34) hoary; urgency=low + + * Use casper-reconfigure in 10adduser as well + * Add post.d/93save-logs to save copies of the bootstrap logs to + /var/log/casper + * Stop reconfiguring fontconfig; it insists on rebuilding the entire + font cache, and the only benefit was to unable subpixel hints + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 2 Feb 2005 10:42:19 -0800 + +casper (0.33) hoary; urgency=low + + * Re-upload to fix borked source package + + -- Matt Zimmerman <mdz@ubuntu.com> Sun, 30 Jan 2005 12:21:07 -0800 + +casper (0.32) hoary; urgency=low + + * Factor out debconf hackery into casper-reconfigure + * Mount sysfs earlier, so we don't need to mess with it in 20xconfig + * Break 22simple-reconfig into 22fontconfig and 22gnome-panel-data, and + create progress bar text for them + * Preseed netcfg/dhcp_failed, to avoid a prompt when DHCP fails + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 29 Jan 2005 14:03:36 -0800 + +casper (0.31) hoary; urgency=low + + * Clear tty2 and print a nice message, before signalling init + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 29 Jan 2005 13:15:44 -0800 + +casper (0.30) hoary; urgency=low + + * Reconfigure fontconfig, to enable subpixel rendering based on the + hardware in use + + -- Matt Zimmerman <mdz@ubuntu.com> Thu, 27 Jan 2005 14:21:49 -0800 + +casper (0.29) hoary; urgency=low + + * Fix the problem described in 0.28 by preseeding a default for + netcfg/get_hostname + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 25 Jan 2005 23:04:03 -0800 + +casper (0.28) hoary; urgency=low + + * Suppress network configuration questions + + - The goal is to make a reasonable effort to configure one interface + automatically, but if that is not possible, fall back to no + configuration. We aren't quite there yet. + + - If we fail to resolve our IP into a hostname using DNS, netcfg seems + to fall back to an empty value, rather than the default in the + template. + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 25 Jan 2005 22:55:35 -0800 + +casper (0.27) hoary; urgency=low + + * Add post.d/22simple-reconfig + - Reconfigure gnome-panel-data if it is installed, to set up the GNOME + session based on whether the system is a laptop + - Corresponding progress template + - mount /proc earlier (needed for, e.g. laptop-detect) + * Warn about screen blanking in X configuration progress message + * Simplify post.d/20xconfig and pre.d/13swap a bit + * Update TODO + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 22 Jan 2005 15:56:49 -0800 + +casper (0.26) hoary; urgency=low + + * Set NOPASSWD in /etc/sudoers for the initial user + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 21 Jan 2005 16:53:49 -0800 + +casper (0.25) hoary; urgency=low + + * mount /proc before signalling init, as it now uses /proc to determine + what is and is not a kernel thread + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 21 Jan 2005 16:04:52 -0800 + +casper (0.24) hoary; urgency=low + + * Add a backtitle properly + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 21 Jan 2005 09:07:19 -0800 + +casper (0.23) hoary; urgency=low + + * Add a backtitle + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 21 Jan 2005 09:02:01 -0800 + +casper (0.22) hoary; urgency=low + + * Search for swap on SCSI disks as well as IDE + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 19 Jan 2005 14:27:09 -0800 + +casper (0.21) unstable; urgency=low + + * Cosmetic changes to debconf templates + * Fix 10adduser to register debconf questions before setting their + values and flags + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 19 Jan 2005 14:14:20 -0800 + +casper (0.20) hoary; urgency=low + + * Remove legacy symlinks from casper/pre.d; they are now contained in + the relevant udebs + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 19 Jan 2005 13:22:33 -0800 + +casper (0.19) hoary; urgency=low + + * Update TODO + * casper-udeb Depends: md-modules + + -- Matt Zimmerman <mdz@ubuntu.com> Wed, 19 Jan 2005 11:23:51 -0800 + +casper (0.18) hoary; urgency=low + + * Enable new adduser code, using db_fset ... seen to suppress the questions + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 18 Jan 2005 15:06:48 -0800 + +casper (0.17) hoary; urgency=low + + * Convert snapshot setup to use debconf instead of hardcoded parameters + * Remove obselete-before-being-used username template + * Convert post.d/10adduser to use debconf passthrough to the passwd package, + and thus share its user-adding code rather than duplicating it. + - But don't enable it yet, since we need to find a way to prevent its + questions from being asked + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 18 Jan 2005 13:04:48 -0800 + +casper (0.16) hoary; urgency=low + + * casper-udeb Depends: casper-check, harddrive-detection + * Automatically find and enable swap devices + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 18 Jan 2005 11:23:48 -0800 + +casper (0.15) hoary; urgency=low + + * Set anna/standard_modules to false at startup to suppress unnecessary + udeb retrieval. + + -- Colin Watson <cjwatson@ubuntu.com> Tue, 18 Jan 2005 13:41:00 +0000 + +casper (0.14) hoary; urgency=low + + * Enable X autoconfiguration(!) + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 15 Jan 2005 02:19:58 -0800 + +casper (0.13) hoary; urgency=low + + * Rename templates so that they are named after the {pre,post}.d hook + which uses them + * Remove some unused templates + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 14 Jan 2005 10:11:02 -0800 + +casper (0.12) hoary; urgency=low + + * Add debconf templates for various things that we currently hardcode. + Not actually used yet due to need for testing, but having the + templates present greatly simplifies testing the remaining integration + work + + -- Matt Zimmerman <mdz@ubuntu.com> Thu, 13 Jan 2005 20:32:39 -0800 + +casper (0.11) hoary; urgency=low + + * Update post.d/20xconfig to use debconf passthrough to cdebconf + (requires debconf 1.4.42 and cdebconf 0.75), but leave it disabled for + now + * Create /etc/fstab in the target (this also seems to solve the problem + with noatime disappearing, and so should reduce snapshot utilization) + + -- Matt Zimmerman <mdz@debian.org> Thu, 13 Jan 2005 18:25:36 -0800 + +casper (0.10) hoary; urgency=low + + * Remove rc?.d/K??hwclock.sh links, to avoid changing the system clock + during reboot or shutdown + + -- Matt Zimmerman <mdz@debian.org> Thu, 13 Jan 2005 18:13:31 -0800 + +casper (0.9) hoary; urgency=low + + * Fix gdm autologin configuration (broken in 0.8) + + -- Matt Zimmerman <mdz@debian.org> Wed, 12 Jan 2005 10:52:05 -0800 + +casper (0.8) hoary; urgency=low + + * Add debian-installer/casper-udeb/title template, to specify more + readable menu item text + * Create /usr/lib/casper/{pre,post}.d and move all of our internal logic + there + * Create temporary symlinks in pre.d for the prebaseconfig.d items we + want + * Convert errors into proper error dialogs + * Make some pre.d scripts idempotent, for ease of testing + + -- Matt Zimmerman <mdz@debian.org> Tue, 11 Jan 2005 16:59:35 -0800 + +casper (0.7) hoary; urgency=low + + * Disable X configuration temporarily; need to resolve debconf issues + + -- Matt Zimmerman <mdz@canonical.com> Tue, 11 Jan 2005 13:14:43 -0800 + +casper (0.6) hoary; urgency=low + + * Allow "modprobe ext2" to fail; apparently it's sometimes compiled in + + -- Matt Zimmerman <mdz@debian.org> Tue, 11 Jan 2005 12:12:28 -0800 + +casper (0.5) hoary; urgency=low + + * Attempt to configure X + - This doesn't work very well yet (PCI BusID doesn't seem to get + updated, for example), so we still don't start gdm by default) + * Conditionalize some of the configuration code, so we automatically do + the right thing if gdm or X isn't installed + * Add German translation from Andreas Mueller + * modprobe ext2, to let powerpc work (this should probably happen + elsewhere, but for now...) + + -- Matt Zimmerman <mdz@debian.org> Sun, 9 Jan 2005 17:49:56 -0800 + +casper (0.4) hoary; urgency=low + + * Mount tmpfs on /tmp and /var/run, should save many writes to the snapshot + + -- Matt Zimmerman <mdz@debian.org> Fri, 7 Jan 2005 18:35:26 -0800 + +casper (0.3) hoary; urgency=low + + * Disable anacron and postfix startup + * Don't cripple /bin/apt-install in d-i (this was a workaround to + prevent d-i from installing packages which should have been present in + the filesystem image anyway, but weren't) + + -- Matt Zimmerman <mdz@debian.org> Fri, 7 Jan 2005 18:10:55 -0800 + +casper (0.2) hoary; urgency=low + + * Use mount --move to move the cdrom mount point, so that we can unmount + /initrd and free up the memory used by d-i + * Use /dev/ram1 rather than /dev/ram0 for the COW stuff, since /dev/ram0 + is used for initrds and we want to avoid confusion + * Organize casper-udeb.postinst into shell functions + * Add a progress bar + * Add a debian/compat file (version 4) + + -- Matt Zimmerman <mdz@debian.org> Fri, 7 Jan 2005 08:01:21 -0800 + +casper (0.1) hoary; urgency=low + + * Initial Release. + + -- Matt Zimmerman <mdz@canonical.com> Wed, 5 Jan 2005 14:30:28 -0800 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +4 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..95a9674 --- /dev/null +++ b/debian/control @@ -0,0 +1,17 @@ +Source: casper +Section: admin +Priority: optional +Maintainer: Marco Amadori <marco.amadori@gmail.com> +Uploaders: Daniel Baumann <daniel@debian.org> +Build-Depends: debhelper (>= 4) +Standards-Version: 3.7.2 + +Package: casper +Section: admin +Architecture: any +Depends: initramfs-tools (>= 0.40), user-setup +Conflicts: usplash (<< 0.1-30) +Suggests: dmsetup +Description: Debian Live initramfs generator + Casper provides an initramfs generator suited for booting a Debian Live systems + from read only media. Useful to build live CDs. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..7127931 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,52 @@ +This package was first debianized by Matt Zimmerman <mdz@canonical.com> on +Wed, 5 Jan 2005 14:30:28 -0800. + +Upstream Authors: Marco Amadori <marco.amadori@gmail.com>, + Tollef Fog Heen <tfheen@canonical.com>, + Matt Zimmerman <mdz@canonical.com>. + +License (casper-md5check/md5.c, casper-md5check/md5,h}): + + Copyright (C) 1999-2002 Aladdin Enterprises + All rights reserved. + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + +License (everything else): + + Copyright (C) 2006 Marco Amadori <marco.amadori@gmail.com> + Copyright (C) 2005-2006 Canonical Ltd. <http://www.cannonical.com/> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General Public License +can be found in /usr/share/common-licenses/GPL file. diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..1b140bb --- /dev/null +++ b/debian/rules @@ -0,0 +1,58 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +VERSION:=$(shell dpkg-parsechangelog |sed -n -e '/^Version:/s/^Version: //p') +DEB_BUILD_PROG:=dpkg-buildpackage -us -uc -rfakeroot + +upstream: + cd .. && bzr branch http://mammadori.homeip.net/bzr/casper-debian || exit 0 + rm .bzr -rf + find . -type d -name .svn -exec rm -rf {} \; || exit 0 + +build: build-stamp +build-stamp: + dh_testdir + + $(MAKE) -C casper-md5check + + touch build-stamp + +clean: + dh_testdir + rm -f build-stamp + + -$(MAKE) -C casper-md5check clean + + dh_clean + +install: build + dh_testdir + dh_clean -k + dh_installdirs + dh_install + + install -m755 casper-md5check/casper-md5check debian/casper/usr/lib/casper + install -D -m 644 debian/casper.lintian debian/casper/usr/share/lintian/overrides/casper + chmod 0755 debian/casper/usr/share/initramfs-tools/scripts/casper + +binary-indep: build install + +binary-arch: build install + dh_testdir + dh_testroot + dh_installdocs + dh_installinit -r --no-start -- start 89 0 6 . + dh_installchangelogs debian/changelog.upstream + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-arch binary-indep +.PHONY: build clean binary-indep binary-arch binary install diff --git a/debian/ubiquity-casper.install b/debian/ubiquity-casper.install new file mode 100644 index 0000000..866ebdd --- /dev/null +++ b/debian/ubiquity-casper.install @@ -0,0 +1,2 @@ +bin/casper-reconfigure usr/bin +ubiquity-hooks/* usr/lib/ubiquity/target-config diff --git a/hooks/casper b/hooks/casper new file mode 100755 index 0000000..7229612 --- /dev/null +++ b/hooks/casper @@ -0,0 +1,81 @@ +#!/bin/sh -e +# initramfs hook for casper + +PREREQS="" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +. /usr/share/initramfs-tools/hook-functions + + +manual_add_modules unionfs + +# Needed for devmapper +if [ -e /sbin/dmsetup ]; then + manual_add_modules cloop + copy_exec /sbin/blockdev /sbin + copy_exec /sbin/dmsetup /sbin + manual_add_modules dm-snapshot +fi + +# We need losetup +copy_exec /sbin/losetup /sbin + +# Casper hooks +mkdir -p ${DESTDIR}/lib/casper +copy_exec /usr/share/casper/casper-reconfigure /bin +copy_exec /usr/share/casper/casper-preseed /bin + +# Ubuntu or Debian test +if [ -x /sbin/udevplug ]; then + mkdir -p ${DESTDIR}/lib/udev + copy_exec /lib/udev/cdrom_id /lib/udev + copy_exec /lib/udev/vol_id /lib/udev + copy_exec /lib/udev/path_id /lib/udev +else + copy_exec /sbin/udevtrigger /sbin +fi + +copy_exec /usr/bin/udevinfo /bin + +# cifs boot +if [ -x /sbin/mount.cifs ]; then + copy_exec /sbin/mount.cifs /sbin + for x in cifs; do + manual_add_modules ${x} + done +fi + +# squashfs +manual_add_modules squashfs +manual_add_modules loop + +# random file system modules +manual_add_modules vfat +manual_add_modules ext3 +# needed for vfat. :-/ +manual_add_modules nls_cp437 +manual_add_modules nls_utf8 +manual_add_modules nls_iso8859-1 + +# cdrom modules +manual_add_modules sr_mod +manual_add_modules ide-cd +manual_add_modules sbp2 +manual_add_modules ohci1394 + +# integrity check +copy_exec /usr/lib/casper/casper-md5check /bin + +auto_add_modules net diff --git a/scripts/casper b/scripts/casper new file mode 100644 index 0000000..2557595 --- /dev/null +++ b/scripts/casper @@ -0,0 +1,382 @@ +#!/bin/sh + +# set -e + +mountpoint=/live_media +root_persistence="casper-rw" +home_persistence="home-rw" + +mkdir -p $mountpoint + +overlay_method=unionfs +if [ "${DPKG_ARCH}" = "ia64" ] || [ "${DPKG_ARCH}" = "hppa" ] || [ "${DPKG_ARCH}" = "sparc" ]; then + overlay_method=devmapper +fi + +USERNAME=debian +USERFULLNAME="Debian Live user" +HOST=debian + +[ -f /etc/casper.conf ] && . /etc/casper.conf + +export USERNAME USERFULLNAME HOST + +casper_path() { # Fixme: uglyness + path=$1 + if [ -e "$path/casper/filesystem.cloop" ]; then + echo "$path/casper/filesystem.cloop" + return 0 + elif [ -e "$path/casper/filesystem.squashfs" ]; then + echo "$path/casper/filesystem.squashfs" + return 0 + elif [ -e "$path/casper/filesystem.ext2" ]; then + echo "$path/casper/filesystem.ext2" + return 0 + elif [ -e "$path/casper/filesystem.xfs" ]; then + echo "$path/casper/filesystem.xfs" + return 0 + fi + return 1 +} + +subdevices() { + sysblock=$1 + r="" + for dev in "${sysblock}" "${sysblock}"/*; do + if [ -e "${dev}/dev" ]; then + r="${r} ${dev}" + fi + done + echo ${r} +} + +get_backing_device() { + case "$1" in + *.cloop) + echo $(setup_loop "$1" "cloop" "/sys/block/cloop*") + ;; + *.squashfs|*.ext2|*.xfs) + echo $(setup_loop "$1" "loop" "/sys/block/loop*") + ;; + *) + panic "Unrecognized casper filesystem: $1" + ;; + esac +} + +setup_cow() { + case "$1" in + unionfs) + setup_unionfs "$2" "$rootmnt" + ;; + devmapper) + setup_devmapper "$2" "$rootmnt" + esac +} + +sys2dev() { + sysdev=${1#/sys} + echo "/dev/$(udevinfo -q name -p ${sysdev} 2>/dev/null|| echo ${sysdev##*/})" +} + +setup_loop() { + local fspath=$1 + local module=$2 + local pattern=$3 + + modprobe -qb "$module" + if [ -x /sbin/udevplug ]; then + udevplug -W + else + udevtrigger + fi + + for loopdev in $pattern; do + if [ "$(cat $loopdev/size)" -eq 0 ]; then + dev=$(sys2dev "${loopdev}") + losetup "$dev" "$fspath" + echo "$dev" + return 0 + fi + done + panic "No loop devices available" +} + +get_fstype() { + local FSTYPE + local FSSIZE + eval $(fstype < $1) + if [ "$FSTYPE" != "unknown" ]; then + echo $FSTYPE + return 0 + fi + /lib/udev/vol_id -t $1 2>/dev/null +} + +setup_devmapper() { + backdev="$1" + rootmnt="$2" + + modprobe -qb dm-mod + COW_DEVICE=/dev/ram1 + COW_NAME="casper-cow" + + BACKING_FILE_SIZE=$(blockdev --getsize "$backdev") + MAX_COW_SIZE=$(blockdev --getsize "$COW_DEVICE") + CHUNK_SIZE=8 # sectors + + if [ -z "$COW_SIZE" -o "$COW_SIZE" -gt "$MAX_COW_SIZE" ]; then + COW_SIZE=$MAX_COW_SIZE + fi + + echo "0 $COW_SIZE linear $COW_DEVICE 0" | dmsetup create $COW_NAME + + echo "0 $BACKING_FILE_SIZE snapshot $backdev /dev/mapper/$COW_NAME p $CHUNK_SIZE" | \ + dmsetup create casper-snapshot + if [ "$(get_fstype $backdev)" = "unknown" ]; then + panic "Unknown file system type on $backdev" + fi + mount -t $(get_fstype "$backdev") /dev/mapper/casper-snapshot $rootmnt || panic "Can not mount /dev/mapper/casper/snapshot on $rootmnt" + + mkdir -p "$rootmnt/rofs" + echo "0 $BACKING_FILE_SIZE linear $backdev 0" | dmsetup create casper-backing + mount -t $(get_fstype "$backdev") /dev/mapper/casper-backing "$rootmnt/rofs" +} + +where_is_mounted() { + device=$1 + if grep -q "^$device " /proc/mounts; then + grep "^$device " /proc/mounts | read d mountpoint rest + echo $mountpoint + return 0 + fi + return 1 +} + +copy_to_ram() { + copyto="${mountpoint}_swap" + + size=$(du -ks ${mountpoint} | cut -f1) + size=$(expr ${size} + ${size}/20 ) # Fixme: 5% more to be sure + needed_space=$(expr ${size} * 1024) + freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( cat /proc/meminfo | grep Cached | head -n 1 | awk '/Cached/{print $2}' - )) + + if [ ! ${freespace} -lt ${needed_space} ] ; then + [ "$quiet" != "y" ] && log_begin_msg "Not enough free memory to copy to ram" + [ "$quiet" != "y" ] && log_end_msg + return + else + [ "$quiet" != "y" ] && log_begin_msg "Copying live media to ram..." + mkdir "${copyto}" + mount -t tmpfs -o size=${size}k /dev/shm ${copyto} + cp -a ${mountpoint}/* ${copyto} + umount ${mountpoint} + mount -r -o move ${copyto} ${mountpoint} + rmdir ${copyto} + [ "$quiet" != "y" ] && log_end_msg + fi +} + +find_cow_device() { + pers_label="${1}" + cow_backing="/${pers_label}-backing" + for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop); do + for dev in $(subdevices "${sysblock}"); do + devname=$(sys2dev "${dev}") + if [ "$(/lib/udev/vol_id -l $devname 2>/dev/null)" = "${pers_label}" ]; then + echo "$devname" + return + elif [ "$(get_fstype ${devname})" = "vfat" ]; then + mkdir -p "${cow_backing}" + if where_is_mounted ${devname} > /dev/null; then + mount -o remount,rw ${devname} $(where_is_mounted ${devname}) || panic "Remounting failed" + mount -o bind $(where_is_mounted ${devname}) ${cow_backing} || panic "Cannot bind-mount" + else + mount -t $(get_fstype "${devname}") -o rw "${devname}" ${cow_backing} || panic "Cannot mount $devname on /cow-backing" + fi + + if [ -e "${cow_backing}/${pers_label}" ]; then + echo $(setup_loop "${cow_backing}/${pers_label}" "loop" "/sys/block/loop*") + return 0 + else + umount ${cow_backing} + fi + fi + done + done +} + +do_netmount() { + rofsmnt="$1" + # adapted from NFS filesystem mounting + + modprobe -q cifs + # For DHCP + modprobe -q af_packet + + ipconfig ${DEVICE} /tmp/net-${DEVICE}.conf + if [ "x${NFSROOT}" = "xauto" ]; then + NFSROOT=${ROOTSERVER}:${ROOTPATH} + fi + + NFSOPTS="-ouser=root,password=" + + [ "$quiet" != "y" ] && log_begin_msg "Mounting using mount.cifs with ${NFSROOT} ${rofsmnt} ${NFSOPTS}" + mount.cifs "${NFSROOT}" "${rofsmnt}" "${NFSOPTS}" + [ "$quiet" != "y" ] && log_end_msg +} + +setup_unionfs() { + backdev="$1" + rootmnt="$2" + modprobe -qb unionfs + mkdir -p /cow + cowdevice="tmpfs" + cow_fstype="tmpfs" + # Looking for "${root_persistence}" device or file + if grep -q persistent /proc/cmdline; then + cowprobe=$(find_cow_device "${root_persistence}") + if [ -b "${cowprobe}" ]; then + cowdevice=${cowprobe} + cow_fstype=$(get_fstype "${cowprobe}") + else + [ "$quiet" != "y" ] && log_begin_msg "Unable to find the persistent medium" + fi + fi + + mount ${cowdevice} -t ${cow_fstype} -o rw /cow || panic "Can not mount $cowdevice on /cow" + + mkdir -p /rofs + if grep -q netboot /proc/cmdline; then + do_netmount /rofs || panic "Can not mount netroot on /rofs" + else + if [ "$(get_fstype $backdev)" = "unknown" ]; then + panic "Unknown file system type on $backdev" + fi + mount -t $(get_fstype "$backdev") -o ro "$backdev" /rofs || panic "Can not mount $backdev on /rofs" + fi + + mount -t unionfs -o dirs=/cow=rw:/rofs=ro unionfs "$rootmnt" + if grep -q show-cow /proc/cmdline; then + mkdir -p "$rootmnt/cow" + mount -o bind /cow "$rootmnt/cow" + fi + mkdir -p "$rootmnt/rofs" + mount -o bind /rofs "$rootmnt/rofs" + + # Adding home persitence + if grep -q homepersistence /proc/cmdline; then + homecow=$(find_cow_device "${home_persistence}" ) + if [ -b "${homecow}" ]; then + mount ${homecow} -t $(get_fstype "${homecow}") -o rw "${rootmnt}/home" + else + [ "$quiet" != "y" ] && log_begin_msg "Unable to find the persistent home medium" + fi + fi +} + +is_usb_device() { + sysfs_path="${1#/sys}" + if /lib/udev/path_id "${sysfs_path}" | grep -q "ID_PATH=usb"; then + return 0 + fi + return 1 +} + +find_live() { + mounted= + for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram); do + devname=$(sys2dev "${sysblock}") + fstype=$(get_fstype "${devname}") + if /lib/udev/cdrom_id ${devname} > /dev/null; then + mount -t ${fstype} -o ro "$devname" $mountpoint || continue + if casper_path $mountpoint; then + echo $(casper_path $mountpoint) + return + else + umount $mountpoint + fi + elif is_usb_device "$sysblock"; then + for dev in $(subdevices "${sysblock}"); do + devname=$(sys2dev "${dev}") + fstype=$(get_fstype "${devname}") + case ${fstype} in + vfat|iso9660|udf) + mount -t ${fstype} -o ro "${devname}" $mountpoint || continue + if casper_path $mountpoint; then + echo $(casper_path $mountpoint) + return + else + umount $mountpoint + fi + ;; + esac + done + elif [ "${fstype}" = "squashfs" ]; then + + # This is an ugly hack situation, the block device has + # a squashfs image directly on it. It's hopefully + # casper, so take it and run with it. + + ln -s "${devname}" "${devname}.${fstype}" + echo "${devname}.${fstype}" + return + fi + done +} + +set_usplash_timeout() { + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "TIMEOUT 120" + fi +} + +mountroot() { + exec 6>&1 + exec 7>&2 + exec > casper.log + exec 2>&1 + + set_usplash_timeout + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-premount" + run_scripts /scripts/casper-premount + [ "$quiet" != "y" ] && log_end_msg + + # Needed here too because some things (*cough* udev *cough*) + # changes the timeout + + set_usplash_timeout + + for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13; do + live_image=$(find_live) + if [ "${live_image}" ]; then + break + fi + sleep 1 + done + if [ "$?" -gt 0 ]; then + panic "Unable to find a medium containing a live file system" + fi + + if grep -q toram /proc/cmdline; then + copy_to_ram + fi + + setup_cow "$overlay_method" "$(get_backing_device $live_image)" "$rootmnt" + + # show it on new rootfs + mkdir ${rootmnt}/${mountpoint} + mount -o bind ${mountpoint} ${rootmnt}/${mountpoint} + + log_end_msg + + maybe_break casper-bottom + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/casper-bottom" + + PATH=/root/usr/bin:/root/usr/sbin:/root/bin:/root/sbin:$PATH run_scripts /scripts/casper-bottom + [ "$quiet" != "y" ] && log_end_msg + + exec 1>&6 6>&- + exec 2>&7 7>&- + cp casper.log "${rootmnt}/var/log/" +} diff --git a/scripts/casper-bottom/01integrity_check b/scripts/casper-bottom/01integrity_check new file mode 100755 index 0000000..8c8e153 --- /dev/null +++ b/scripts/casper-bottom/01integrity_check @@ -0,0 +1,18 @@ +#!/bin/sh + +PREREQ="" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +grep integrity-check /proc/cmdline && casper-md5check /live_media /live_media/md5sum.txt < /dev/tty8 diff --git a/scripts/casper-bottom/05mountpoints b/scripts/casper-bottom/05mountpoints new file mode 100755 index 0000000..ca8845a --- /dev/null +++ b/scripts/casper-bottom/05mountpoints @@ -0,0 +1,27 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Moving mount points..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +# Move to the new root filesystem so that programs there can get at it. +mkdir -p /root/cdrom +mount -n -o move /cdrom /root/cdrom + +log_end_msg diff --git a/scripts/casper-bottom/10adduser b/scripts/casper-bottom/10adduser new file mode 100755 index 0000000..dc8aaa8 --- /dev/null +++ b/scripts/casper-bottom/10adduser @@ -0,0 +1,66 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Adding live CD user..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF +set passwd/root-password-crypted * +set passwd/user-password-crypted U6aMy0wojraho +set passwd/user-fullname $USERFULLNAME +set passwd/username $USERNAME +set passwd/user-uid 999 +EOF + +chroot /root /usr/bin/env -i HOME="/root" \ + TERM="${TERM}" PATH="/usr/sbin:/usr/bin:/sbin:/bin" \ + /usr/lib/user-setup/user-setup-apply > /dev/null + +# Clear out debconf database again to avoid confusing ubiquity later. +chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF +set passwd/root-password-crypted +set passwd/user-password-crypted +set passwd/user-fullname +set passwd/username +set passwd/user-uid +EOF + +if [ -f /root/etc/sudoers ]; then + if [ -x /sbin/udevplug ]; then + # FIXME: ugly hack, admin is not present in debian so we do here ubuntu stuff + # XXX - awful hack to stop xscreensaver locking the screen (#7150) + echo 'RUNNING_UNDER_GDM="yes"' >> /root/etc/environment + grep -q '^%admin' /root/etc/sudoers && sed -i -e '/^%admin/s/ALL$/NOPASSWD: ALL/' /root/etc/sudoers || echo '%admin ALL=(ALL) NOPASSWD: ALL' >> /root/etc/sudoers + for file in /usr/share/applications/ubiquity-gtkui.desktop /usr/share/applications/kde/ubiquity-kdeui.desktop; do + if [ -f "/root/$file" ]; then + chroot /root install -D -o $USERNAME -g $USERNAME $file /home/$USERNAME/Desktop/$(basename "$file") + break + fi + done + else # We are in debian :-) + echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> /root/etc/sudoers + fi +fi + +if [ -L /root/home/$USERNAME/Examples ]; then + chroot /root install -o $USERNAME -g $USERNAME -d /home/$USERNAME/Desktop/ + mv /root/home/$USERNAME/Examples /root/home/$USERNAME/Desktop/ +fi + +log_end_msg diff --git a/scripts/casper-bottom/12fstab b/scripts/casper-bottom/12fstab new file mode 100755 index 0000000..00e5c50 --- /dev/null +++ b/scripts/casper-bottom/12fstab @@ -0,0 +1,31 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Configuring fstab..." +FSTAB=/root/etc/fstab + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +cat > $FSTAB <<EOF +unionfs / unionfs rw 0 0 +tmpfs /tmp tmpfs nosuid,nodev 0 0 +EOF + +rm -f /root/etc/rcS.d/S10checkroot.sh + +log_end_msg diff --git a/scripts/casper-bottom/13swap b/scripts/casper-bottom/13swap new file mode 100755 index 0000000..44d73f3 --- /dev/null +++ b/scripts/casper-bottom/13swap @@ -0,0 +1,44 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Setting up swap..." +FSTAB=/root/etc/fstab + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +devices="" +for device in /dev/[hs]d[a-z][0-9]*; do + if ! [ -b "$device" ]; then + continue + fi + + magic=$(dd if="$device" bs=4086 skip=1 count=1 2>/dev/null | dd bs=10 count=1 2>/dev/null) || continue + + if [ "$magic" = "SWAPSPACE2" -o "$magic" = "SWAP-SPACE" ]; then +# log "Found $device" + devices="$devices $device" + fi +done + +for device in $devices; do + cat >> $FSTAB <<EOF +$device swap swap defaults 0 0 +EOF +done + +log_end_msg diff --git a/scripts/casper-bottom/14locales b/scripts/casper-bottom/14locales new file mode 100755 index 0000000..6d5b73c --- /dev/null +++ b/scripts/casper-bottom/14locales @@ -0,0 +1,52 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Setting up locales..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +if [ -e /root/etc/default/locale ]; then + grep_file=/root/etc/default/locale + locale=$(grep 'LANG=' ${grep_file} | sed s/'LANG='// | tr -d '"' ) +elif [ -e /root/etc/environment ]; then # Old locales policy + grep_file=/root/etc/environment +fi + +# commandline +for x in $(cat /proc/cmdline); do + case $x in + debian-installer/locale=*) + locale=${x#debian-installer/locale=} + set_locale="true" + ;; + esac +done + +if [ -z "${locale}" ]; then + # Set a default one + locale=en_US.UTF-8 + set_locale="true" +fi + +if [ ! -z "${set_locale}" ]; then + LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 |sed -e 's, .*,,' -e q) + printf 'LANG="%s"\n' "${LANG}" >> "${grep_file}" + chroot /root /usr/sbin/locale-gen "${LANG}" +fi + +log_end_msg diff --git a/scripts/casper-bottom/15autologin b/scripts/casper-bottom/15autologin new file mode 100755 index 0000000..5f7797a --- /dev/null +++ b/scripts/casper-bottom/15autologin @@ -0,0 +1,62 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Setting up automatic login..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +if chroot /root [ -f /etc/gdm/gdm-cdd.conf ]; then + GDMCONF=/etc/gdm/gdm-cdd.conf +else + GDMCONF=/etc/gdm/gdm.conf +fi + +if chroot /root [ -f ${GDMCONF} ]; then + # Configure GDM autologin + chroot /root sed -i \ + -e "s/^AutomaticLoginEnable=.*\$/AutomaticLoginEnable=true/" \ + -e "s/^AutomaticLogin=.*\$/AutomaticLogin=$USERNAME/" \ + -e "s/^TimedLoginEnable=.*\$/TimedLoginEnable=true/" \ + -e "s/^TimedLogin=.*\$/TimedLogin=$USERNAME/" \ + -e "s/^TimedLoginDelay=.*\$/TimedLoginDelay=10/" \ + ${GDMCONF} +fi + +if [ -f /root/etc/kde3/kdm/kdmrc ]; then + # Configure KDM autologin + sed -i -r \ + -e "s/^#?AutoLoginEnable=.*\$/AutoLoginEnable=true/" \ + -e "s/^#?AutoLoginUser=.*\$/AutoLoginUser=$USERNAME/" \ + -e "s/^#?AutoReLogin=.*\$/AutoReLogin=true/" \ + /root/etc/kde3/kdm/kdmrc +fi + +if chroot /root /usr/bin/which kpersonalizer >/dev/null; then + # Disable first-login wizard for KDE + if [ ! -f /root/etc/kde3/kpersonalizerrc ]; then + cat > /root/etc/kde3/kpersonalizerrc <<EOF +[General] +FirstLogin=false +EOF + else + echo "I'm not smart enough to disable kpersonalizer startup" >&2 + echo "Because kpersonalizerrc already exists" >&2 + fi +fi + +log_end_msg diff --git a/scripts/casper-bottom/18hostname b/scripts/casper-bottom/18hostname new file mode 100755 index 0000000..7ac5b00 --- /dev/null +++ b/scripts/casper-bottom/18hostname @@ -0,0 +1,38 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Setting hostname..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +echo "$HOST" > /root/etc/hostname +cat > /root/etc/hosts <<EOF +127.0.0.1 localhost +127.0.1.1 $HOST + +# The following lines are desirable for IPv6 capable hosts +::1 ip6-localhost ip6-loopback +fe00::0 ip6-localnet +ff00::0 ip6-mcastprefix +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +ff02::3 ip6-allhosts + +EOF + +log_end_msg diff --git a/scripts/casper-bottom/19keyboard b/scripts/casper-bottom/19keyboard new file mode 100755 index 0000000..895a698 --- /dev/null +++ b/scripts/casper-bottom/19keyboard @@ -0,0 +1,35 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Setting up keyboard..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +kbd=us + +for x in $(cat /proc/cmdline); do + case $x in + kbd-chooser/method=*) + kbd=${x#kbd-chooser/method=} + ;; + esac +done + +chroot /root /usr/sbin/install-keymap $kbd +casper-preseed /root debian-installer/keymap "$kbd" +log_end_msg diff --git a/scripts/casper-bottom/20xconfig b/scripts/casper-bottom/20xconfig new file mode 100755 index 0000000..840200d --- /dev/null +++ b/scripts/casper-bottom/20xconfig @@ -0,0 +1,51 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Configuring X..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +if [ "$TERM_TYPE" = "serial" ]; then + # Don't bother trying to configure or start X on a serial console + rm -f /etc/rc?.d/S??[gxk]dm + exit 0 +fi + +locale=en_US.UTF-8 + +for x in $(cat /proc/cmdline); do + case $x in + debian-installer/locale=*) + locale=${x#debian-installer/locale=} + ;; + esac +done + +mount -n -o bind /sys /root/sys +mount -n -o bind /proc /root/proc + +chroot /root debconf-communicate -fnoninteractive casper > /dev/null <<EOF +set xserver-xorg/autodetect_keyboard true +fset xserver-xorg/autodetect_keyboard seen true +EOF + +DEBUG_XORG_PACKAGE=1 DEBUG_XORG_DEBCONF=1 LANG=$(grep "^${locale}" /root/usr/share/i18n/SUPPORTED | grep UTF-8 | sed -e 's, .*,,' -e q) casper-reconfigure /root xserver-xorg +umount /root/sys +umount /root/proc + +log_end_msg diff --git a/scripts/casper-bottom/22gnome_panel_data b/scripts/casper-bottom/22gnome_panel_data new file mode 100755 index 0000000..7bedd7a --- /dev/null +++ b/scripts/casper-bottom/22gnome_panel_data @@ -0,0 +1,34 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Configuring gnome-panel-data..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +if [ -x /root/usr/sbin/laptop-detect ]; then + if chroot /root /bin/sh -c /usr/sbin/laptop-detect; then + casper-reconfigure /root gnome-panel-data + fi +fi + +panel_version=$(chroot /root /usr/bin/dpkg-query -W --showformat='${Version}' gnome-panel-data 2>/dev/null) || panel_version="" +if [ -n "$panel_version" ]; then + chroot /root su $USERNAME -- gconftool-2 -s -t bool /apps/panel/global/disable_lock_screen true +fi + +log_end_msg diff --git a/scripts/casper-bottom/22screensaver b/scripts/casper-bottom/22screensaver new file mode 100755 index 0000000..2a98b1a --- /dev/null +++ b/scripts/casper-bottom/22screensaver @@ -0,0 +1,28 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Configuring screensaver..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +gnome_screensaver_version=$(chroot /root dpkg-query -W --showformat='${Version}' gnome-screensaver 2>/dev/null) || gnome_screensaver_version="" +if [ -n "$gnome_screensaver_version" ]; then + chroot /root su $USERNAME -- gconftool-2 -t bool -s /apps/gnome-screensaver/lock false +fi + +log_end_msg diff --git a/scripts/casper-bottom/23etc_modules b/scripts/casper-bottom/23etc_modules new file mode 100755 index 0000000..622d96e --- /dev/null +++ b/scripts/casper-bottom/23etc_modules @@ -0,0 +1,30 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Preconfiguring /etc/modules..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +case "$DPKG_ARCH" in +# load the right modules +powerpc|ppc64) + echo snd_powermac >> /root/etc/modules + ;; +esac + +log_end_msg diff --git a/scripts/casper-bottom/23networking b/scripts/casper-bottom/23networking new file mode 100755 index 0000000..7238773 --- /dev/null +++ b/scripts/casper-bottom/23networking @@ -0,0 +1,55 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Preconfiguring networking..." +IFFILE="/root/etc/network/interfaces" + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +cat > "$IFFILE" <<EOF +auto lo +iface lo inet loopback + +EOF + +if [ -x /sbin/udevplug ]; then + udevplug -Bpci -Iclass="0x02*" +else + udevtrigger +fi + +for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do + [ -e $interface ] || continue + i="$(basename $interface)" + cat >> "$IFFILE" <<EOF +auto $i +iface $i inet dhcp + +EOF +done + +for i in eth0 eth1 eth2 ath0 wlan0; do + [ ! -e /sys/class/net/$i ] || continue + cat >> "$IFFILE" <<EOF +auto $i +iface $i inet dhcp + +EOF +done + +log_end_msg diff --git a/scripts/casper-bottom/24preseed b/scripts/casper-bottom/24preseed new file mode 100755 index 0000000..468ec2e --- /dev/null +++ b/scripts/casper-bottom/24preseed @@ -0,0 +1,43 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Loading preseed file..." + +. /scripts/functions + +prereqs () +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +location= +for x in $(cat /proc/cmdline); do + case $x in + preseed/file=*) + location="${x#preseed/file=}" + ;; + */*=*) + question="${x%%=*}" + value="${x#*=}" + casper-preseed /root "$question" "$value" + ;; + esac +done + +if [ "$location" ]; then + chroot /root debconf-set-selections < "/root$location" +fi + +log_end_msg + +exit 0 diff --git a/scripts/casper-bottom/25configure_init b/scripts/casper-bottom/25configure_init new file mode 100755 index 0000000..0c5c43e --- /dev/null +++ b/scripts/casper-bottom/25configure_init @@ -0,0 +1,51 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Setting up init..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +# Arrange for shells on virtual consoles, rather than login prompts + +if [ -n "$USERNAME" ]; then + sed -i -e "s|^\([^:]*:[^:]*:[^:]*\):.*getty.*\<\(tty[0-9]*\).*$|\1:/bin/login -f $USERNAME </dev/\2 >/dev/\2 2>\&1|" /root/etc/inittab +fi + +# This has the nice side effect of the cron.{daily,weekly,monthly} jobs in +# /etc/crontab remaining disabled, yet also not run by anacron +if [ -x /root/etc/init.d/anacron ]; then + for f in /root/etc/rc?.d/S??anacron; do + mv ${f} $(dirname ${f})/K00anacron + done +fi + +# No point, really +rm -f /root/etc/rc?.d/[SK]??postfix + +# Avoid clobbering the user's clock +rm -f /root/etc/rc?.d/K??hwclock.sh + +# Disable readahead since it doesn't play well with squashfs + unionfs +# use chmod instead of mv to not trigger unionfs bugs. +if [ -e /root/sbin/readahead-list ]; then + chmod -x /root/sbin/readahead-list +fi + +log_end_msg + +exit 0 diff --git a/scripts/casper-bottom/30accessibility b/scripts/casper-bottom/30accessibility new file mode 100755 index 0000000..c6015e1 --- /dev/null +++ b/scripts/casper-bottom/30accessibility @@ -0,0 +1,81 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Configuring accessibility options..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +gct() { + chroot /root su $USERNAME -- gconftool-2 "$@" +} + +for x in $(cat /proc/cmdline); do + case $x in + # Lesser Visual Impairment + access=v1) + gct -s -t string /desktop/gnome/interface/gtk_theme HighContrastLargePrint + gct -s -t string /desktop/gnome/interface/icon_theme HighContrast + gct -s -t string /desktop/gnome/interface/monospace_font_name "monospace 18" + gct -s -t string /desktop/gnome/interface/font_name "sans 18" + gct -s -t string /apps/metacity/general/theme Atlanta + gct -s -t string /desktop/gnome/background/picture_filename "" + gct -s -t string /desktop/gnome/background/picture_options none + gct "-s -t string /desktop/gnome/background/primary_color \#666666" + gct "-s -t string /desktop/gnome/background/secondary_color \#7F7F7F" + gct -s -t string /desktop/gnome/background/color_shading_type solid + gct -s -t int /desktop/gnome/peripherals/mouse/cursor_size 48 + gct -s -t string /desktop/gnome/peripherals/mouse/cursor_theme whiteglass + ;; + # Moderate Visual Impairment + access=v2) + gct -s -t bool /desktop/gnome/interface/accessibility true + gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [gnopernicus] + gct -s -t bool /apps/gnopernicus/srcore/mag_active true + gct -s -t bool /apps/gnopernicus/srcore/sp_active false + ;; + # Blindness + access=v3) + gct -s -t bool /desktop/gnome/sound/enable_esd false + gct -s -t bool /desktop/gnome/interface/accessibility true + gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats [gnopernicus] + gct -s -t bool /apps/gnopernicus/srcore/sp_active true + gct -s -t bool /apps/gnopernicus/srcore/mag_active false + ;; + # Minor Motor Difficulties + access=m1) + gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/mousekeys_enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep true + gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false + gct -s -t bool /desktop/gnome/peripherals/keyboard/repeat true + gct -s -t int /desktop/gnome/peripherals/keyboard/delay 700 + gct -s -t int /desktop/gnome/peripherals/keyboard/rate 10 + ;; + # Motor Difficulties - pointing devices + access=m2) + gct -s -t bool /desktop/gnome/accessibility/keyboard/enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_enable true + gct -s -t bool /desktop/gnome/accessibility/keyboard/stickykeys_modifier_beep false + gct -s -t bool /desktop/accessibility/gnome/keyboard/stickykeys_two_key_off false + gct -s -t bool /desktop/gnome/interface/accessibility true + gct -s -t list --list-type=string /desktop/gnome/accessibility/startup/exec_ats gok + ;; + esac +done +log_end_msg diff --git a/scripts/casper-bottom/31disable_update_notifier b/scripts/casper-bottom/31disable_update_notifier new file mode 100755 index 0000000..082b818 --- /dev/null +++ b/scripts/casper-bottom/31disable_update_notifier @@ -0,0 +1,26 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Disabling update-notifier..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +rm -f /root/etc/xdg/autostart/update-notifier.desktop +rm -f /root/usr/share/autostart/adept_notifier_auto.desktop + +log_end_msg diff --git a/scripts/casper-bottom/32disable_hibernation b/scripts/casper-bottom/32disable_hibernation new file mode 100755 index 0000000..7b7d976 --- /dev/null +++ b/scripts/casper-bottom/32disable_hibernation @@ -0,0 +1,35 @@ +#!/bin/sh + +PREREQ="" +DESCRIPTION="Configuring power management..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + + +gpm_version=$(chroot /root /usr/bin/dpkg-query -W --showformat='${Version}' gnome-power-manager 2>/dev/null) || panel_version="" +if [ -n "$gpm_version" ]; then + casper-reconfigure /root gnome-power-manager + chroot /root su $USERNAME -- gconftool-2 -s -t bool /apps/gnome-power-manager/can_hibernate false +fi + +if [ -f /root/usr/share/kubuntu-default-settings/kde-profile/default/share/config/kcmlaptoprc ]; then + sed -i s/EnableHibernate=true/EnableHibernate=false/ \ + /root/usr/share/kubuntu-default-settings/kde-profile/default/share/config/kcmlaptoprc +fi + +log_end_msg diff --git a/scripts/casper-bottom/33disable_binary_drivers b/scripts/casper-bottom/33disable_binary_drivers new file mode 100755 index 0000000..4e4fec3 --- /dev/null +++ b/scripts/casper-bottom/33disable_binary_drivers @@ -0,0 +1,25 @@ +#! /bin/sh + +PREREQ="" +DESCRIPTION="Configuring some drivers..." + +. /scripts/functions + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +log_begin_msg "$DESCRIPTION" + +if [ -e /root/etc/default/linux-restricted-modules-common ]; then + echo 'DISABLED_MODULES="fglrx nv"' >> /root/etc/default/linux-restricted-modules-common +fi diff --git a/ubiquity-hooks/20xconfig b/ubiquity-hooks/20xconfig new file mode 100755 index 0000000..6f8becd --- /dev/null +++ b/ubiquity-hooks/20xconfig @@ -0,0 +1,11 @@ +#! /bin/sh +set -e + +if [ -f /etc/X11/xorg.conf ]; then + cp -a /etc/X11/xorg.conf /target/etc/X11/xorg.conf + # requires x11-common (>= 7.0.0-0ubuntu1) + mkdir -p /target/var/lib/x11 + chroot /target md5sum /etc/X11/xorg.conf > /var/lib/x11/xorg.conf.md5sum +fi + +exit 0 diff --git a/ubiquity-hooks/22gnome_panel_data b/ubiquity-hooks/22gnome_panel_data new file mode 100755 index 0000000..2c1059f --- /dev/null +++ b/ubiquity-hooks/22gnome_panel_data @@ -0,0 +1,8 @@ +#! /bin/sh +set -e + +if laptop-detect; then + casper-reconfigure /target gnome-panel-data +fi + +exit 0 diff --git a/ubiquity-hooks/25modules b/ubiquity-hooks/25modules new file mode 100755 index 0000000..59a0d15 --- /dev/null +++ b/ubiquity-hooks/25modules @@ -0,0 +1,8 @@ +#! /bin/sh +set -e + +if [ -f /etc/modules ]; then + cp -a /etc/modules /target/etc/modules +fi + +exit 0 diff --git a/ubiquity-hooks/32gnome_power_manager b/ubiquity-hooks/32gnome_power_manager new file mode 100755 index 0000000..213a917 --- /dev/null +++ b/ubiquity-hooks/32gnome_power_manager @@ -0,0 +1,6 @@ +#! /bin/sh +set -e + +casper-reconfigure /target gnome-power-manager + +exit 0 |