From 086eaa0c8da8dec7981dc73fe26040e4c2493c0c Mon Sep 17 00:00:00 2001 From: fake Date: Mon, 24 May 2004 09:50:27 +0000 Subject: [PATCH] fake: add livecd target don't curse, it work's, at least for me ;P example pkg selection with X+KDE [2004052022023504269] (https://www.rocklinux.net/submaster) git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@3124 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- target/livecd/build.sh | 38 ++ target/livecd/build_stage1.sh | 85 ++++ target/livecd/build_stage2.sh | 71 ++++ target/livecd/config.in | 50 +++ target/livecd/default.pkgmap | 197 +++++++++ target/livecd/default.pkgsel | 235 +++++++++++ target/livecd/download.txt | 1 + target/livecd/fixedfiles/XF86Config | 573 +++++++++++++++++++++++++++ target/livecd/fixedfiles/inittab | 84 ++++ target/livecd/fixedfiles/login-shell | 3 + target/livecd/fixedfiles/system | 253 ++++++++++++ target/livecd/kernel.conf | 128 ++++++ target/livecd/kernel.conf.sh | 23 ++ target/livecd/linuxrc.c | 533 +++++++++++++++++++++++++ target/livecd/pkg_gawk.conf | 5 + target/livecd/pkg_modutils.conf | 6 + target/livecd/preconfig.in | 24 ++ target/livecd/x86/build.sh | 28 ++ target/livecd/x86/help0.txt | 17 + target/livecd/x86/isolinux.cfg | 17 + 20 files changed, 2371 insertions(+) create mode 100644 target/livecd/build.sh create mode 100644 target/livecd/build_stage1.sh create mode 100644 target/livecd/build_stage2.sh create mode 100644 target/livecd/config.in create mode 100644 target/livecd/default.pkgmap create mode 100644 target/livecd/default.pkgsel create mode 100644 target/livecd/download.txt create mode 100644 target/livecd/fixedfiles/XF86Config create mode 100644 target/livecd/fixedfiles/inittab create mode 100644 target/livecd/fixedfiles/login-shell create mode 100644 target/livecd/fixedfiles/system create mode 100644 target/livecd/kernel.conf create mode 100644 target/livecd/kernel.conf.sh create mode 100644 target/livecd/linuxrc.c create mode 100644 target/livecd/pkg_gawk.conf create mode 100644 target/livecd/pkg_modutils.conf create mode 100644 target/livecd/preconfig.in create mode 100644 target/livecd/x86/build.sh create mode 100644 target/livecd/x86/help0.txt create mode 100644 target/livecd/x86/isolinux.cfg diff --git a/target/livecd/build.sh b/target/livecd/build.sh new file mode 100644 index 000000000..5edb74b6f --- /dev/null +++ b/target/livecd/build.sh @@ -0,0 +1,38 @@ + +disksdir="$build_rock/livecd" + +if [ -z "`which create_compressed_fs`" ] ; then + echo "Please make sure create_compressed_fs is installed! Rock Package: fake/cloop" + exit 1; +fi ; + +if [ -z "`which mkisofs`" ] ; then + echo "Please make mkisofs is installed! Rock Package: base/cdrtools" + exit 1; +fi; + +pkgloop +rm -rf $disksdir; mkdir -p $disksdir; chmod 700 $disksdir + +. scripts/parse-config + +. $base/target/$target/build_stage2.sh + +. $base/target/$target/build_stage1.sh + +if [ -f $base/target/$target/$arch/build.sh ]; then + . $base/target/$target/$arch/build.sh +fi + +echo_header "Creating ISO filesystem description." +cd $disksdir; rm -rf isofs; mkdir -p isofs + +echo_status "Creating livecd/isofs directory.." +ln 2nd_stage.img.z isofs/ +ln *.img initrd.gz isofs/ 2>/dev/null || true + +echo_status "Creating isofs.txt file .." +echo "DISK1 build/${ROCKCFG_ID}/ROCK/livecd/isofs/ ` + `${ROCKCFG_SHORTID}/" > ../isofs_generic.txt +cat ../isofs_*.txt > ../isofs.txt + diff --git a/target/livecd/build_stage1.sh b/target/livecd/build_stage1.sh new file mode 100644 index 000000000..9a42b26e4 --- /dev/null +++ b/target/livecd/build_stage1.sh @@ -0,0 +1,85 @@ + +echo_header "Creating initrd data:" +rm -rf $disksdir/initrd +mkdir -p $disksdir/initrd/{dev,proc,tmp,bin-static,mnt/cdrom,ramdisk,etc,ROCK} +cd $disksdir/initrd; ln -s bin-static sbin-static; ln -s . usr +# +echo_status "Create linuxrc binary." +diet $CC $base/target/$target/linuxrc.c -Wall \ + -DSTAGE_2_IMAGE="\"${ROCKCFG_SHORTID}/2nd_stage.img.z\"" \ + -o linuxrc +# +echo_status "Copy various helper applications." +cp ../2nd_stage/bin/{tar,gzip} bin-static/ +cp ../2nd_stage/sbin/hwscan bin-static/ +cp ../2nd_stage/usr/bin/gawk bin-static/ +for x in modprobe.static modprobe.static.old \ + insmod.static insmod.static.old +do + if [ -f ../2nd_stage/sbin/${x/.static/} ]; then + rm -f bin-static/${x/.static/} + cp -a ../2nd_stage/sbin/${x/.static/} bin-static/ + fi + if [ -f ../2nd_stage/sbin/$x ]; then + rm -f bin-static/$x bin-static/${x/.static/} + cp -a ../2nd_stage/sbin/$x bin-static/ + ln -sf $x bin-static/${x/.static/} + fi +done +# +echo_status "Copy scsi and network kernel modules." +for x in ../2nd_stage/lib/modules/*/kernel/drivers/net/*.{ko,o} ../2nd_stage/lib/modules/*/misc/cloop.{ko,o} ; do + # this test is needed in case there are only .o or only .ko files + if [ -f $x ]; then + xx=${x#../2nd_stage/} + mkdir -p $( dirname $xx ) ; cp $x $xx + strip --strip-debug $xx + fi +done +# +for x in ../2nd_stage/lib/modules/*/modules.{dep,pcimap,isapnpmap} ; do + cp $x ${x#../2nd_stage/} || echo "not found: $x" ; +done +# +for x in lib/modules/*/kernel/drivers/net lib/modules/*/misc; do + ln -s ${x#lib/modules/} lib/modules/ +done +rm -f lib/modules/[0-9]*/kernel/drivers/net/{dummy,ppp*}.{o,ko} +# +echo_status "Adding kiss shell for expert use of the initrd image." +cp $build_root/bin/kiss bin-static/ +cd .. + +echo_header "Creating initrd filesystem image: " + +ramdisk_size=4096 + +echo_status "Creating temporary files." +tmpdir=initrd_$$.dir; mkdir -p $disksdir/$tmpdir; cd $disksdir +dd if=/dev/zero of=initrd.img bs=1024 count=$ramdisk_size &> /dev/null +tmpdev="" +for x in /dev/loop/* ; do + if losetup $x initrd.img 2> /dev/null ; then + tmpdev=$x ; break + fi +done +if [ -z "$tmpdev" ] ; then + echo_error "No free loopback device found!" + rm -f $tmpfile ; rmdir $tmpdir; exit 1 +fi +echo_status "Using loopback device $tmpdev." +# +echo_status "Writing initrd image file." +mke2fs -m 0 -N 180 -q $tmpdev &> /dev/null +mount -t ext2 $tmpdev $tmpdir +rmdir $tmpdir/lost+found/ +cp -a initrd/* $tmpdir +umount $tmpdir +# +echo_status "Compressing initrd image file." +gzip -9 initrd.img +mv initrd{.img,}.gz +# +echo_status "Removing temporary files." +losetup -d $tmpdev +rm -rf $tmpdir diff --git a/target/livecd/build_stage2.sh b/target/livecd/build_stage2.sh new file mode 100644 index 000000000..1461a5be4 --- /dev/null +++ b/target/livecd/build_stage2.sh @@ -0,0 +1,71 @@ + +set -e +taropt="--use-compress-program=bzip2 -xf" + +echo_header "Creating 2nd stage filesystem:" +mkdir -p $disksdir/2nd_stage +cd $disksdir/2nd_stage +mkdir -p mnt/source mnt/target ramdisk + +. $base/target/$target/default.pkgmap + +if [ -f ../../pkgs/bize.tar.bz2 -a ! -f ../../pkgs/mine.tar.bz2 ] ; then + packager=bize +else + packager=mine +fi + +package_map="+$ROCKCFG_DEFAULT_KERNEL +$packager $package_map" + +echo_status "Extracting the packages archives." +for x in $( ls ../../pkgs/*.tar.bz2 | tr . / | cut -f8 -d/ ) +do + if echo "" $package_map "" | grep -q " +$x " + then + echo_status "\`- Extracting $x.tar.bz2 ..." + tar --use-compress-program=bzip2 -xpf ../../pkgs/$x.tar.bz2 + elif ! echo "" $package_map "" | grep -q " -$x " + then + echo_error "\`- Not found in \$package_map: $x" + echo_error " ... fix target/$target/build.sh" + fi +done +# +echo_status "Saving boot/* - we do not need this on the 2nd stage ..." +rm -rf ../boot ; mkdir ../boot +mv boot/* ../boot/ +# +echo_status "Remove the stuff we do not need ..." +rm -rf home usr/{doc,man,info} +rm -rf var/adm/* var/adm var/mail +rm -rf usr/{include,src} usr/*-linux-gnu {,usr/}lib/*.{a,la,o} opt/*/lib/*.{a,la,o} +#for x in usr/lib/*/; do rm -rf ${x%/}; done +# +echo_status "Installing some terminfo databases ..." +tar $taropt ../../pkgs/ncurses.tar.bz2 \ + usr/share/terminfo/x/xterm usr/share/terminfo/a/ansi \ + usr/share/terminfo/n/nxterm usr/share/terminfo/l/linux \ + usr/share/terminfo/v/vt200 usr/share/terminfo/v/vt220 \ + usr/share/terminfo/v/vt100 usr/share/terminfo/s/screen +# +echo_status "Installing some keymaps ..." +tar $taropt ../../pkgs/kbd.tar.bz2 \ + usr/share/kbd/keymaps/amiga usr/share/kbd/keymaps/i386/qwerty \ + usr/share/kbd/keymaps/atari usr/share/kbd/keymaps/i386/qwertz \ + usr/share/kbd/keymaps/sun +find usr/share/kbd -name '*dvo*' -o -name '*az*' -o -name '*fgG*' | \ + xargs rm -rf +# +echo_status "Installing pci.ids ..." +tar $taropt ../../pkgs/pciutils.tar.bz2 \ + usr/share/pci.ids +echo_status "replacing some vital files for live useage ..." +cp -f $base/target/$target/fixedfiles/inittab etc/inittab +cp -f $base/target/$target/fixedfiles/login-shell sbin/login-shell +cp -f $base/target/$target/fixedfiles/system etc/rc.d/init.d/system +cp -f $base/target/$target/fixedfiles/XF86Config etc/X11/XF86Config +# +### DOC ### create_compressed_fs and mkisofs need to be in path !!! ### DOC ### +echo_status "Creating 2nd_stage.img.z image... (this takes some time)... " +cd .. ; ( mkisofs -R -l 2nd_stage | create_compressed_fs - 65536 > 2nd_stage.img.z ) > /dev/null 2>&1 + diff --git a/target/livecd/config.in b/target/livecd/config.in new file mode 100644 index 000000000..df1acc929 --- /dev/null +++ b/target/livecd/config.in @@ -0,0 +1,50 @@ +# --- ROCK-COPYRIGHT-NOTE-BEGIN --- +# +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# Please add additional copyright information _after_ the line containing +# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by +# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! +# +# ROCK Linux: rock-src/target/bootdisk/config.in +# ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf +# +# 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. A copy of the GNU General Public +# License can be found at Documentation/COPYING. +# +# Many people helped and are helping developing ROCK Linux. Please +# have a look at http://www.rocklinux.org/ and the Documentation/TEAM +# file for details. +# +# --- ROCK-COPYRIGHT-NOTE-END --- + + +. target/livecd/default.pkgsel + +ROCKCFG_LIVECD_USEKISS=1 + +ROCKCFGSET_CREATE_TARBZ2=1 +ROCKCFGSET_CREATE_GEM=0 +ROCKCFGSET_PKGFILE_VER=0 + +ROCKCFGSET_DIETLIBC=1 +ROCKCFGSET_DIETLIBC_DYN=0 +ROCKCFGSET_DIETLIBC_ALL=0 +ROCKCFGSET_DIETLIBC_modutils=1 +ROCKCFGSET_DIETLIBC_module_init_tools=1 +ROCKCFGSET_DIETLIBC_kiss=1 +ROCKCFGSET_DIETLIBC_gawk=1 + +ROCKCFGSET_PKG_TERMCAP_USEIT=1 +ROCKCFGSET_PKG_GCC2_NO_CHILL=1 +ROCKCFGSET_PKG_GCC3_NO_JAVA=1 +ROCKCFGSET_PKG_GCC33_NO_JAVA=1 +ROCKCFGSET_PKG_BASH_PROGCOMP=0 + +ROCKCFGSET_DO_REBUILD_STAGE=0 +ROCKCFGSET_CREATE_DOCS=0 +ROCKCFGSET_OPTSIZE=1 +ROCKCFGSET_LIMITCXX=0 + diff --git a/target/livecd/default.pkgmap b/target/livecd/default.pkgmap new file mode 100644 index 000000000..62fcb628d --- /dev/null +++ b/target/livecd/default.pkgmap @@ -0,0 +1,197 @@ +package_map=' ++00-dirtree ++aterm +-bind +-bin86 ++bize ++devfsd ++dhcp ++dialog ++dump +-autoconf +-automake ++bash ++bc +-binutils +-bison ++bonnie++ ++bzip2 ++cracklib +-cron ++cloop ++cpio ++cpuburn ++cpuid ++curl +-diffutils ++disktype +-dietlibc ++e2fsprogs ++ed ++eject ++expat ++file ++coreutils ++findutils +-flex ++fbset ++gawk ++gcc3 +-gettext ++genromfs ++glibc23 ++grep +-groff ++grub ++gzip ++hdparm ++iproute2 ++iptables ++intel-rng ++jfsutils ++kbd ++kiss ++less ++lilo +-libtool ++libjpeg ++libpng ++libpcap ++libtiff ++libungif +-linux24 +-linux26 +-linux24-header +-linux26-header +-linux24-src +-linux26-src ++lrzsz +-m4 +-make +-man +-man-pages ++madm ++memtest86 +-mine ++minicom ++microcode_ctl ++mktemp ++mkdosfs ++modutils ++module-init-tools ++ncompress ++ncurses ++netkit-base ++net-tools ++nfs-utils ++ntfsprogs ++netkit-telnet ++netkit-ftp ++netkit-tftpA ++nvi ++openssh ++openssl +-patch ++parted ++popt ++perl5 ++procinfo ++procps ++portmap ++psmisc ++pciutils ++raidtools ++reiserfsprogs ++rsync ++rockplug ++screen ++sed ++setserial ++shadow ++sysfiles ++sysklogd ++sysvinit ++tar ++tcpdump +-termcap +-texinfo ++time ++unzip ++util-linux +-uml_utilities ++vim ++vlock ++wget ++wireless-tools ++xfree86 ++x86info ++zip +-zlib ++zsh +-rock-doc +-rock-src ++kdelibs ++arts ++glib ++gtkdoc ++openjade ++docbookx ++pkgconfig ++audiofile ++alsa ++alsa-driver ++fam ++freetype ++libart_lgpl23 ++libxml2 ++libxml ++libxslt ++mad +-bison ++esound ++tcp_wrappers ++ogg-vorbis ++pcre ++qt ++libmng ++python ++paragui ++libsdl ++libsdl_mixer ++libsdl_image +-nasm ++readline ++bdb33 ++bdb41 ++bdb42 ++gdbm ++gmp ++tcltk ++ruby ++swig ++guile ++numpy ++kdebase ++openmotif ++kdeaddons ++kdeadmin ++kdeartwork ++kdebindings ++kdeedu ++kdegames ++kdegraphics ++kdemultimedia ++kdenetwork ++kdepim ++kdesdk ++kdetoys ++kdeutils ++koffice ++koffice-i18n ++kde-i18n-de ++k3b ++cdrtools ++attr ++acl +-syslinux +' diff --git a/target/livecd/default.pkgsel b/target/livecd/default.pkgsel new file mode 100644 index 000000000..8792c687f --- /dev/null +++ b/target/livecd/default.pkgsel @@ -0,0 +1,235 @@ +# --- ROCK-COPYRIGHT-NOTE-BEGIN --- +# +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# Please add additional copyright information _after_ the line containing +# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by +# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! +# +# ROCK Linux: rock-src/misc/pkgsel/minimal+xfree.in +# ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf +# +# 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. A copy of the GNU General Public +# License can be found at Documentation/COPYING. +# +# Many people helped and are helping developing ROCK Linux. Please +# have a look at http://www.rocklinux.org/ and the Documentation/TEAM +# file for details. +# +# --- ROCK-COPYRIGHT-NOTE-END --- +# +# TITLE: XFree86 + KDE minimum (almost) + +pkgfilter sed ' + +# Add strictly required packages + +/ 00-dirtree / { p; d; }; +/ aterm / { p; d; }; +/ bind / { p; d; }; +/ bin86 / { p; d; }; +/ bize / { p; d; }; +/ cpuburn / { p; d; }; +/ cpuid / { p; d; }; +/ devfsd / { p; d; }; +/ dhcp / { p; d; }; +/ dialog / { p; d; }; +/ dump / { p; d; }; +/ dietlibc / { p; d; }; +/ autoconf / { p; d; }; +/ automake / { p; d; }; +/ bash / { p; d; }; +/ bc / { p; d; }; +/ binutils / { p; d; }; +/ bison / { p; d; }; +/ bonnie++ / { p; d; }; +/ bzip2 / { p; d; }; +/ cracklib/ { p; d; }; +/ cron / { p; d; }; +/ cloop / { p; d; }; +/ cpio / { p; d; }; +/ curl / { p; d; }; +/ diffutils / { p; d; }; +/ disktype / { p; d; }; +/ e2fsprogs / { p; d; }; +/ ed / { p; d; }; +/ eject / { p; d; }; +/ expat / { p; d; }; +/ file / { p; d; }; +/ fbset / { p; d; }; +/ coreutils / { p; d; }; +/ findutils / { p; d; }; +/ flex / { p; d; }; +/ gawk / { p; d; }; +/ gcc3 / { p; d; }; +/ gettext / { p; d; }; +/ genromfs / { p; d; }; +/ glibc23 / { p; d; }; +/ grep / { p; d; }; +/ groff / { p; d; }; +/ grub / { p; d; }; +/ gzip / { p; d; }; +/ hdparm / { p; d; }; +/ intel-rng / { p; d; }; +/ iproute2 / { p; d; }; +/ iptables / { p; d; }; +/ jfsutils / { p; d; }; +/ kbd / { p; d; }; +/ kiss / { p; d; }; +/ less / { p; d; }; +/ lilo / { p; d; }; +/ libtool / { p; d; }; +/ libjpeg / { p; d; }; +/ libpng / { p; d; }; +/ libpcap / { p; d; }; +/ libtiff / { p; d; }; +/ libungif / { p; d; }; +/ linux24 / { p; d; }; +/ linux26 / { p; d; }; +/ linux.*-header / { p; d; }; +/ linux.*-src / { p; d; }; +/ lrzsz / { p; d; }; +/ m4 / { p; d; }; +/ make / { p; d; }; +/ man / { p; d; }; +/ man-pages / { p; d; }; +/ madm / { p; d; }; +/ memtest86 / { p; d; }; +/ mine / { p; d; }; +/ minicom / { p; d; }; +/ microcode_ctl / { p; d; }; +/ module-init-tools / { p; d; }; +/ mktemp / { p; d; }; +/ modutils / { p; d; }; +/ ncompress / { p; d; }; +/ ncurses / { p; d; }; +/ netkit-base / { p; d; }; +/ net-tools/ { p; d; }; +/ nfs-utils / { p; d; }; +/ ntfsprogs / { p; d; }; +/ netkit-telnet / { p; d; }; +/ netkit-ftp / { p; d; }; +/ netkit-tftp / { p; d; }; +/ nvi / { p; d; }; +/ openssh / { p; d; }; +/ openssl / { p; d; }; +/ patch / { p; d; }; +/ parted / { p; d; }; +/ popt / { p; d; }; +/ perl5 / { p; d; }; +/ procinfo / { p; d; }; +/ procps / { p; d; }; +/ portmap / { p; d; }; +/ psmisc / { p; d; }; +/ pciutils / { p; d; }; +/ raidtools / { p; d; }; +/ reiserfsprogs / { p; d; }; +/ rsync / { p; d; }; +/ rockplug / { p; d; }; +/ screen / { p; d; }; +/ syslinux / { p; d; }; +/ sed / { p; d; }; +/ setserial / { p; d; }; +/ shadow / { p; d; }; +/ sysfiles / { p; d; }; +/ sysklogd / { p; d; }; +/ sysvinit / { p; d; }; +/ tar / { p; d; }; +/ tcpdump / { p; d; }; +/ texinfo / { p; d; }; +/ time / { p; d; }; +/ unzip / { p; d; }; +/ util-linux / { p; d; }; +/ vim / { p; d; }; +/ vlock / { p; d; }; +/ wget / { p; d; }; +/ wireless-tools / { p; d; }; +/ xfree86 / { p; d; }; +/ x86info / { p; d; }; +/ zip / { p; d; }; +/ zlib / { p; d; }; +/ zsh/ { p; d; }; + +/ rock-doc / { p; d; }; +/ rock-src/ { p; d; }; + +# Some architecture-specifc-packages with missing deps +/ macosd / { s/^X /O / ; p; d; }; + +# Add architecture-specific-packages +/ alpha / { p; d; }; +/ mips / { p; d; }; +/ powerpc / { p; d; }; +/ sparc / { p; d; }; +/ x86 / { p; d; }; + +# kde-stuff +/ kdelibs / { p; d; }; +/ arts / { p; d; }; +/ glib / { p; d; }; +/ gtkdoc / { p; d; }; +/ openjade / { p; d; }; +/ docbookx / { p; d; }; +/ pkgconfig / { p; d; }; +/ audiofile / { p; d; }; +/ alsa / { p; d; }; +/ alsa-driver / { p; d; }; +/ fam / { p; d; }; +/ freetype / { p; d; }; +/ libart_lgpl23 / { p; d; }; +/ libxml2 / { p; d; }; +/ libxml / { p; d; }; +/ libxslt / { p; d; }; +/ mad / { p; d; }; +/ mkdosfs / { p; d; }; +/ bison / { p; d; }; +/ esound / { p; d; }; +/ tcp_wrappers / { p; d; }; +/ ogg-vorbis / { p; d; }; +/ pcre / { p; d; }; +/ qt / { p; d; }; +/ libmng / { p; d; }; +/ python / { p; d; }; +/ paragui / { p; d; }; +/ libsdl / { p; d; }; +/ libsdl_mixer / { p; d; }; +/ libsdl_image / { p; d; }; +/ nasm / { p; d; }; +/ readline / { p; d; }; +/ bdb33 / { p; d; }; +/ bdb41 / { p; d; }; +/ bdb42 / { p; d; }; +/ gdbm / { p; d; }; +/ gmp / { p; d; }; +/ tcltk / { p; d; }; +/ ruby / { p; d; }; +/ swig / { p; d; }; +/ guile / { p; d; }; +/ numpy / { p; d; }; +/ kdebase / { p; d; }; +/ openmotif / { p; d; }; +/ kdeaddons / { p; d; }; +/ kdeadmin / { p; d; }; +/ kdeartwork / { p; d; }; +/ kdebindings / { p; d; }; +/ kdeedu / { p; d; }; +/ kdegames / { p; d; }; +/ kdegraphics / { p; d; }; +/ kdemultimedia / { p; d; }; +/ kdenetwork / { p; d; }; +/ kdepim / { p; d; }; +/ kdesdk / { p; d; }; +/ kdetoys / { p; d; }; +/ kdeutils / { p; d; }; +/ koffice / { p; d; }; +/ koffice-i18n / { p; d; }; +/ kde-i18n-de / { p; d; }; +/ k3b / { p; d; }; +/ cdrtools / { p; d; }; +/ attr / { p; d; }; +/ acl / { p; d; }; +# Disabling the rest of packages +/.*/ { s/^X /O / ; p; d; };' + diff --git a/target/livecd/download.txt b/target/livecd/download.txt new file mode 100644 index 000000000..ea7b58ae1 --- /dev/null +++ b/target/livecd/download.txt @@ -0,0 +1 @@ +4279863212 syslinux-2.08.tar.bz2 http://www.kernel.org/pub/linux/utils/boot/syslinux/ diff --git a/target/livecd/fixedfiles/XF86Config b/target/livecd/fixedfiles/XF86Config new file mode 100644 index 000000000..024b7efc3 --- /dev/null +++ b/target/livecd/fixedfiles/XF86Config @@ -0,0 +1,573 @@ +# File generated by xf86config. +# and additional hand edited by Rene Rebe - ROCK Linux Project +# +# YOU MUST ONLY ADD A CARD SECTION AND MODIFY SOME MONITOR SETTINGS +# TO GET A WORKING X CONFIGURATION. +# + +# +# Copyright (c) 1999 by The XFree86 Project, Inc. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# Except as contained in this notice, the name of the XFree86 Project shall +# not be used in advertising or otherwise to promote the sale, use or other +# dealings in this Software without prior written authorization from the +# XFree86 Project. +# + +# ********************************************************************** +# Refer to the XF86Config(4/5) man page for details about the format of +# this file. +# ********************************************************************** + +# ********************************************************************** +# Module section -- this section is used to specify +# which dynamically loadable modules to load. +# ********************************************************************** +# +Section "Module" + + Load "dbe" # DBE (double buffer extension) + Load "ddc" # Display Data Channel extension + +# This loads the miscellaneous extensions module + SubSection "extmod" + Option "omit xfree86-dga" # don't initialise the DGA extension + Option "omit XFree86-VidModeExtension" # disable mode-switching-supoprt + EndSubSection + +# This loads the Type1 and FreeType font modules + Load "type1" + Load "freetype" + +# Load "glx" # GLX extension (OpenGL visuals) +# Load "dri" # Direct Rendering Interface extension (OpenGL) + +# Load "v4l" # Video 4 Linux extension (provides a xv adapter) +EndSection + +# this enabled normal users to use DRI - the Direct Rendering Extension. +# it is also possible to use a group to control access. +# +Section "DRI" + Mode 0666 +EndSection + +# ********************************************************************** +# Files section. This allows default font and rgb paths to be set +# ********************************************************************** + +Section "Files" + +# The location of the RGB database. Note, this is the name of the +# file minus the extension (like ".txt" or ".db"). There is normally +# no need to change the default. + + RgbPath "/usr/X11R6/lib/X11/rgb" + +# Multiple FontPath entries are allowed (which are concatenated together), +# as well as specifying multiple comma-separated entries in one FontPath +# command (or a combination of both methods) +# +# If you don't have a floating point coprocessor and emacs, Mosaic or other +# programs take long to start up, try moving the Type1 and Speedo directory +# to the end of this list (or comment them out). +# + + FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" + FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" + FontPath "/usr/X11R6/lib/X11/fonts/CID/" + FontPath "/usr/X11R6/lib/X11/fonts/PEX/" + FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" + FontPath "/usr/X11R6/lib/X11/fonts/Type1/" + FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/" + FontPath "/usr/X11R6/lib/X11/fonts/encodings/" + FontPath "/usr/X11R6/lib/X11/fonts/freefont/" + FontPath "/usr/X11R6/lib/X11/fonts/latin2/" + FontPath "/usr/X11R6/lib/X11/fonts/local/" + FontPath "/usr/X11R6/lib/X11/fonts/misc/" + FontPath "/usr/X11R6/lib/X11/fonts/sharefont" + FontPath "/usr/X11R6/lib/X11/fonts/TrueType" + + FontPath "/usr/share/ghostscript/fonts/" + +# The module search path. The default path is shown here. + +# ModulePath "/usr/X11R6/lib/modules" + +EndSection + +# ********************************************************************** +# Server flags section. +# ********************************************************************** + +Section "ServerFlags" + +# Uncomment this to cause a core dump at the spot where a signal is +# received. This may leave the console in an unusable state, but may +# provide a better stack trace in the core dump to aid in debugging + +# Option "NoTrapSignals" + +# Uncomment this to disable the server abort sequence +# This allows clients to receive this key event. + +# Option "DontZap" + +# Uncomment this to disable the / mode switching +# sequences. This allows clients to receive these key events. + +# Option "Dont Zoom" + +# Uncomment this to disable tuning with the xvidtune client. With +# it the client can still run and fetch card and monitor attributes, +# but it will not be allowed to change them. If it tries it will +# receive a protocol error. + +# Option "DisableVidModeExtension" + +# Uncomment this to enable the use of a non-local xvidtune client. + +# Option "AllowNonLocalXvidtune" + +# Uncomment this to disable dynamically modifying the input device +# (mouse and keyboard) settings. + +# Option "DisableModInDev" + +# Uncomment this to enable the use of a non-local client to +# change the keyboard or mouse settings (currently only xset). + +# Option "AllowNonLocalModInDev" + +EndSection + +# ********************************************************************** +# Input devices +# ********************************************************************** + +# ********************************************************************** +# Core keyboard's InputDevice section +# ********************************************************************** + +Section "InputDevice" + + Identifier "Keyboard1" + Driver "Keyboard" + +# For most OSs the protocol can be omitted (it defaults to "Standard"). +# When using XQUEUE (only for SVR3 and SVR4, but not Solaris), +# uncomment the following line. + +# Option "Protocol" "Xqueue" + + Option "AutoRepeat" "250 30" + +# Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) +# Option "Xleds" "1 2 3" + +# Option "LeftAlt" "Meta" +# Option "RightAlt" "ModeShift" + +# To customise the XKB settings to suit your keyboard, modify the +# lines below (which are the defaults). For example, for a non-U.S. +# keyboard, you will probably want to use: +# Option "XkbModel" "pc102" +# If you have a US Microsoft Natural keyboard, you can use: +# Option "XkbModel" "microsoft" +# +# Then to change the language, change the Layout setting. +# For example, a german layout can be obtained with: +# Option "XkbLayout" "de" +# or: +# Option "XkbLayout" "de" +# Option "XkbVariant" "nodeadkeys" +# +# If you'd like to switch the positions of your capslock and +# control keys, use: +# Option "XkbOptions" "ctrl:swapcaps" + +# These are the default XKB settings for XFree86 +# Option "XkbRules" "xfree86" +# Option "XkbModel" "pc101" +# Option "XkbLayout" "us" +# Option "XkbVariant" "" +# Option "XkbOptions" "" + +# Option "XkbDisable" + + Option "XkbRules" "xfree86" + Option "XkbModel" "pc105" +# Option "XkbLayout" "de" # german keyboard layout +# Option "XkbVariant" "nodeadkeys" # normally not wanted + +EndSection + + +# ********************************************************************** +# Core Pointer's InputDevice section +# ********************************************************************** + +# auto-detected mouse +Section "InputDevice" + +# Identifier and driver + + Identifier "Mouse1" + Driver "mouse" + Option "Protocol" "Auto" + Option "Device" "/dev/input/mice" + + #Option "Emulate3Buttons" "true" # for a two button touch-pad +EndSection + +# for a normal ps2 mouse: +Section "InputDevice" +# +# Identifier and driver +# + Identifier "Mouse2" + Driver "mouse" + Option "Protocol" "Auto" + Option "Device" "/dev/misc/psaux" + +# #Option "Emulate3Buttons" "true" # for a two button touch-pad +EndSection + +# for a normal serial mouse +#Section "InputDevice" +# +# Identifier "Mouse1" +# Driver "mouse" +# Option "Protocol" "Microsoft" +# Option "Device" "/dev/tts/0" +# +# #Option "Emulate3Buttons" "true" # for a two button touch-pad +#EndSection + +# for a usb Logitech wheel mouse +#Section "InputDevice" +# +# Identifier "Mouse1" +# Driver "mouse" +# Option "Protocol" "IMPS/2" +# Option "Device" "/dev/input/mouse0" +# Option "Buttons" "5" +# Option "ZaxisMapping" "4 5" +# +#EndSection + + +# ********************************************************************** +# Other input device sections +# this is optional and is required only if you +# are using extended input devices. This is for example only. Refer +# to the XF86Config man page for a description of the options. +# ********************************************************************** +# +# Section "InputDevice" +# Identifier "Mouse2" +# Driver "mouse" +# Option "Protocol" "MouseMan" +# Option "Device" "/dev/mouse2" +# EndSection +# +# Section "InputDevice" +# Identifier "Spaceball" +# Driver "magellan" +# Option "Device" "/dev/cua0" +# EndSection +# +# Section "InputDevice" +# Identifier "Spaceball2" +# Driver "spaceorb" +# Option "Device" "/dev/cua0" +# EndSection +# +# Section "InputDevice" +# Identifier "Touchscreen0" +# Driver "microtouch" +# Option "Device" "/dev/ttyS0" +# Option "MinX" "1412" +# Option "MaxX" "15184" +# Option "MinY" "15372" +# Option "MaxY" "1230" +# Option "ScreenNumber" "0" +# Option "ReportingMode" "Scaled" +# Option "ButtonNumber" "1" +# Option "SendCoreEvents" +# EndSection +# +# Section "InputDevice" +# Identifier "Touchscreen1" +# Driver "elo2300" +# Option "Device" "/dev/ttyS0" +# Option "MinX" "231" +# Option "MaxX" "3868" +# Option "MinY" "3858" +# Option "MaxY" "272" +# Option "ScreenNumber" "0" +# Option "ReportingMode" "Scaled" +# Option "ButtonThreshold" "17" +# Option "ButtonNumber" "1" +# Option "SendCoreEvents" +# EndSection + +# Section "InputDevice" +# Identifier "Tablet1" +# Driver "summa" +# Option "Device" "/dev/ttyS0" +# Option "MinX" "231" +# Option "MaxX" "3868" +# Option "MinY" "3858" +# Option "MaxY" "272" +# Option "ScreenNumber" "0" +# Option "ReportingMode" "Scaled" +# Option "ButtonThreshold" "17" +# Option "ButtonNumber" "1" +# Option "SendCoreEvents" +# Option "BaudRate" "19200" +# Option "DataBits" "8" +# Option "StopBits" "1" +# Option "Parity" "Odd" +# Option "FlowControl" "Xoff" +# Option "VTime" "10" +# Option "VMin" "1" +# EndSection + + +# ********************************************************************** +# Monitor section +# ********************************************************************** + +# Any number of monitor sections may be present + +Section "Monitor" + + Identifier "Monitor1" + +# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S +# USER MANUAL FOR THE CORRECT NUMBERS !! + +# normally uncomment this lines +# HorizSync 24.0 - 80.0 +# VertRefresh 50-100 + +# overwrite the screen dimensions (in mm) e.g. to get another virtual dpi +# value +# DisplaySize 345 260 + +# HorizSync is in kHz unless units are specified. +# HorizSync may be a comma separated list of discrete values, or a +# comma separated list of ranges of values. +# HorizSync 30-64 # multisync +# HorizSync 31.5, 35.2 # multiple fixed sync frequencies +# HorizSync 15-25, 30-50 # multiple ranges of sync frequencies + +# VertRefresh is in Hz unless units are specified. +# VertRefresh may be a comma separated list of discrete values, or a +# comma separated list of ranges of values. +# VertRefresh 50-100 + +# some mode examples 1,2 selfmade - 3 from fbset +# (only needed for low-level tricks, exotic Laptops or other LCD's) +# +# Mode "1152x900" +# DotClock 120 +# HTimings 1152 1200 1312 1528 +# VTimings 900 910 946 985 +# EndMode +# Mode "1152x900-2" +# DotClock 100 +# HTimings 1152 1200 1312 1528 +# VTimings 900 910 946 985 +# EndMode +# Mode "1152x864" +# DotClock 105.810 +# HTimings 1152 1184 1312 1504 +# VTimings 864 868 872 902 +# Flags "-HSync" "-VSync" +# EndMode + +# for framebuffer devices you might want to simply add +# the 'fbset -x' output here. + +EndSection + + +# ********************************************************************** +# Graphics device section +# ********************************************************************** + +# Any number of graphics device sections may be present + +Section "Device" + Identifier "Card1" + + # Use this for framebuffer devices - should work on most systems. + Driver "fbdev" + Option "fbdev" "/dev/fb/0" + +# Driver "vga" # mga, ati, nv, sis, vesa ... +# # Option "BackingStore" + +# # Some driver accept an UseFBDev option (e.g. radeon) to switch the +# # mode via the Linux framebuffer layer. Needed e.g. as workaround for +# # iBooks. +# # Option "UseFBDev" + +# # The BuID is only required for multi-monitor configs or some fbdev drivers +# # BusID "PCI:1:5:0" +# # Screen 0 # Screen of a dual-head mga card + +# # Option "NoHal" # do not use the binary-only Matrox HAL library +# # Option "AGPMode2x" + +EndSection + +# Matrox Millenium 4xx, Ati or NVidia second-head +#Section "Device" +# Identifier "Card2" +# Driver "mga" # or other dual-able cards like ati, nv +# # Option "BackingStore" + +# BusID "PCI:1:5:0" +# Screen 1 +# +# # Option "NoHal" # do not use the binary-only Matrox HAL library +# # Option "AGPMode2x" + +# # Option "Tv" "yes" +# # Option "TVStandard" "PAL" +# # Option "CableType" "SCART_COMPOSITE" +#EndSection + +# ********************************************************************** +# Screen sections +# ********************************************************************** + +# Any number of screen sections may be present. Each describes +# the configuration of a single screen. A single specific screen section +# may be specified from the X server command line with the "-screen" +# option. +Section "Screen" + Identifier "Screen1" + Device "Card1" + Monitor "Monitor1" + DefaultDepth 16 + + Subsection "Display" + Depth 4 + Modes "1024x768" "800x600" "640x480" + ViewPort 0 0 + EndSubsection + Subsection "Display" + Depth 8 + Modes "1024x768" "800x600" "640x400" + ViewPort 0 0 + EndSubsection + Subsection "Display" + Depth 16 + Modes "1024x768" "800x600" "640x480" + ViewPort 0 0 + EndSubsection + Subsection "Display" + Depth 24 + Modes "1024x768" "800x600" "640x480" + ViewPort 0 0 + EndSubsection + Subsection "Display" + Depth 32 + Modes "1024x768" "800x600" "640x480" + ViewPort 0 0 + EndSubsection +EndSection + +#Section "Screen" +# Identifier "Screen2" +# Device "Card2" +# Monitor "Monitor1" +# DefaultDepth 16 +# +# Subsection "Display" +# Depth 16 +# Modes "1024x768" "800x600" "640x480" +# ViewPort 0 0 +# EndSubsection +#EndSection + +#Section "Screen" +# Identifier "ScreenTV" +# Device "CardTV" +# Monitor "Monitor1" +# DefaultDepth 16 +# +# Subsection "Display" +# Depth 16 +# Modes "640x480" +# ViewPort 0 0 +# EndSubsection +#EndSection + + +# ********************************************************************** +# ServerLayout sections. +# ********************************************************************** + +# Any number of ServerLayout sections may be present. Each describes +# the way multiple screens are organised. A specific ServerLayout +# section may be specified from the X server command line with the +# "-layout" option. In the absence of this, the first section is used. +# When now ServerLayout section is present, the first Screen section +# is used alone. + +Section "ServerLayout" + +# The Identifier line must be present + Identifier "Simple Layout" + +# Each Screen line specifies a Screen section name, and optionally +# the relative position of other screens. The four names after +# primary screen name are the screens to the top, bottom, left and right +# of the primary screen. In this example, screen 2 is located to the +# right of screen 1. + + Screen "Screen1" #LeftOf "Screen2" + #Screen "Screen2" + #Screen "ScreenTV" + +# Each InputDevice line specifies an InputDevice section name and +# optionally some options to specify the way the device is to be +# used. Those options include "CorePointer", "CoreKeyboard" and +# "SendCoreEvents". + + InputDevice "Mouse1" "CorePointer" + InputDevice "Mouse2" "SendCoreEvents" + InputDevice "Keyboard1" "CoreKeyboard" + +# It is possible to specify secondary input devices which might not +# be pressend on X startup. Nice for laptops with temporary external +# mices ;-)! + +# InputDevice "Mouse2" "SendCoreEvents" +# InputDevice "Tablet1" + +EndSection + diff --git a/target/livecd/fixedfiles/inittab b/target/livecd/fixedfiles/inittab new file mode 100644 index 000000000..8492c368f --- /dev/null +++ b/target/livecd/fixedfiles/inittab @@ -0,0 +1,84 @@ +# --- ROCK-COPYRIGHT-NOTE-BEGIN --- +# +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# Please add additional copyright information _after_ the line containing +# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by +# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! +# +# ROCK Linux: rock-src/target/livecd/fixedfiles/inittab +# ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf +# +# 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. A copy of the GNU General Public +# License can be found at Documentation/COPYING. +# +# Many people helped and are helping developing ROCK Linux. Please +# have a look at http://www.rocklinux.org/ and the Documentation/TEAM +# file for details. +# +# --- ROCK-COPYRIGHT-NOTE-END --- +# +# See "man 5 inittab" for details. +# + +# The default runlevel. +id:2:initdefault: + +# /etc/rc.d executes the S and K scripts upon change +# of runlevel. +# +# Runlevels 0 and 6 are halt and reboot. +# Runlevels 1-5 are multi-user. +# Runlevel S is single user. +l0:0:wait:/etc/rc.d/rc +l1:1:wait:/etc/rc.d/rc +l2:2:wait:/etc/rc.d/rc +l3:3:wait:/etc/rc.d/rc +l4:4:wait:/etc/rc.d/rc +l5:5:wait:/etc/rc.d/rc +l6:6:wait:/etc/rc.d/rc +ls:S:wait:/etc/rc.d/rc +~~:S:wait:/sbin/sulogin + +# What to do when CTRL-ALT-DEL is pressed. +ca:12345:ctrlaltdel:/sbin/shutdown -r now + +# /sbin/agetty invocations for the runlevels. +# +# The "id" field MUST be the same as the last +# characters of the device (after "tty"). +# +# Format: +# ::: + +# +# Maintenace Console on /dev/console +# +#1:12345:respawn:/sbin/agetty -L -i -I '\012\015\012Maintenance Console:\012' 9600 console linux + +# +# Virtual Consoles 1-6 +# +# to enable the SAK blocking feature add the options "-t 10 -s /etc/sakmsg" +# +# to clear the screen on ANSI terminals add the option "-I '\033[H\033[J'" +# +# there are 3 Issue files: +# /etc/issue ........ Simple login screen for consoles or terminals +# /etc/issue.ansi ... Login screen for ANSI consoles or terminals +# /etc/issue.net .... Login message for network connections +# +1:12345:respawn:/sbin/agetty -L -i -I '\012\015\012Maintenance Console:\012' -l /sbin/login-shell -n 38400 vc/1 linux +2:12345:respawn:/sbin/agetty -f /etc/issue.ansi -l /sbin/login-shell -n 38400 vc/2 linux +3:12345:respawn:/sbin/agetty -f /etc/issue.ansi -l /sbin/login-shell -n 38400 vc/3 linux +4:12345:respawn:/sbin/agetty -f /etc/issue.ansi -l /sbin/login-shell -n 38400 vc/4 linux +5:12345:respawn:/sbin/agetty -f /etc/issue.ansi -l /sbin/login-shell -n 38400 vc/5 linux +6:12345:respawn:/sbin/agetty -f /etc/issue.ansi -l /sbin/login-shell -n 38400 vc/6 linux + +# +# A X display manager (multiplexer) +# +X:5:respawn:/usr/X11/bin/startxdm + diff --git a/target/livecd/fixedfiles/login-shell b/target/livecd/fixedfiles/login-shell new file mode 100644 index 000000000..16b782881 --- /dev/null +++ b/target/livecd/fixedfiles/login-shell @@ -0,0 +1,3 @@ +#!/bin/sh +echo "root and rocker's password is 'rock'" +exec su - rocker -c "/bin/bash --login" diff --git a/target/livecd/fixedfiles/system b/target/livecd/fixedfiles/system new file mode 100644 index 000000000..4c44db268 --- /dev/null +++ b/target/livecd/fixedfiles/system @@ -0,0 +1,253 @@ +#!/bin/sh +# +# --- ROCK-COPYRIGHT-NOTE-BEGIN --- +# +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# Please add additional copyright information _after_ the line containing +# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by +# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! +# +# ROCK Linux: rock-src/package/base/sysfiles/system.init +# ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf +# +# 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. A copy of the GNU General Public +# License can be found at Documentation/COPYING. +# +# Many people helped and are helping developing ROCK Linux. Please +# have a look at http://www.rocklinux.org/ and the Documentation/TEAM +# file for details. +# +# --- ROCK-COPYRIGHT-NOTE-END --- +# +# Desc: System bootup and shutdown +# Runlevel: 01 rcX rc1 rc2 rc3 rc4 rc5 +# + +title() { + local x w="$( stty size 2>/dev/null /dev/null + mount -n /dev/shm || error=$? + mount -n /dev/pts 2> /dev/null + if [ -f /etc/conf/hardware ] ; then + . /etc/conf/hardware + fi + status + + title "Configuring the /dev filesystem ..." + sh /etc/conf/devfs || error=$? + status + + title "Configuring hardware by activating rockplug." + echo "/sbin/rockplug" > /proc/sys/kernel/hotplug + for file in /etc/rockplug/*.init ; do + [ -f $file ] && $file start + done + status + + title "Loading kernel modules and configuring the kernel." + sh /etc/conf/kernel || error=$? + + [ -f /etc/conf/clock ] && . /etc/conf/clock + if [ "$clock_tz" = localtime ] ; then + status + + title "Setting kernel clock to local time." + hwclock --hctosys --localtime || error=$? + fi + if [ "$clock_rtc" ] ; then + status + + title "Setting enhanced real time clock precision to $clock_rtc." + if [ -w /proc/sys/dev/rtc/max-user-freq ] ; then + echo $clock_rtc > /proc/sys/dev/rtc/max-user-freq || error=$? + else + echo "No /proc/sys/dev/rtc/max-user-freq found." + fi + fi + status + + title "Setting hostname to $(cat /etc/HOSTNAME)." + hostname "$(cat /etc/HOSTNAME)" || error=$? + status + + title "Refresh utmp, delete lock and tmp files and other stuff." + find /var/lock /var/run /tmp -mindepth 1 -print0 2> /dev/null | xargs --null rm -rf + rm -f /etc/nologin /nologin /fastboot ; touch /var/run/utmp + chmod 664 /var/run/utmp ; chown root:tty /var/run/utmp + status + + title "Writing /var/log/boot.msg." + klogd -f /var/log/boot.msg -o ; dmesg -n 3 + status + + title "Setting keyboard keymappings." + if [ -L /etc/default.keymap ] ; then + mapfile=$(ls -l /etc/default.keymap | sed 's,.* -> ,,') + loadkeys $mapfile || error=$? + elif [ -f /etc/default.keymap ] ; then + loadkeys /etc/default.keymap || error=$? + else + echo "No /etc/default.keymap found." + fi + status + + title "Setting keyboard repeat rate and delay time." + kbd_rate=30; kbd_delay=250 + [ -f /etc/conf/kbd ] && . /etc/conf/kbd + /usr/bin/kbdrate -r $kbd_rate -d $kbd_delay < /dev/console || error=$? + status + + title "Setting console screen font." + if [ -L /etc/default.vcfont ] ; then + fontfile=$(ls -l /etc/default.vcfont | sed 's,.* -> ,,') + setfont $fontfile || error=$? + elif [ -f /etc/default.vcfont ] ; then + setfont /etc/default.vcfont || error=$? + else + echo "No /etc/default.vcfont found." + fi + status + + title "Setting console terminal type and blank interval." + con_term=linux; con_blank=0 + [ -f /etc/conf/console ] && . /etc/conf/console + /usr/bin/setterm -term $con_term -blank $con_blank > /dev/console || error=$? + status + + title "Setting up loopback networking." + ip link set lo up || error=$? + ip addr add 127.0.0.1/8 dev lo || error=$? + ip route add 127/8 dev lo || error=$? + status + + title "Setting overflow UID and GID kernel parameters." + sysctl -w kernel.overflowuid=$(id -u nobody) > /dev/null || error=$? + sysctl -w kernel.overflowgid=$(id -g nobody) > /dev/null || error=$? + status + + title "Reading /etc/sysctl.conf file." + sysctl -p || error=$? + status + + title "Initializing kernel random number generator." + if [ -e /var/state/random-seed ] ; then + cat /var/state/random-seed >/dev/urandom || error=$? + fi + status + + title "Running ldconfig." + /sbin/ldconfig >/dev/null 2>&1 || error=$? + status + + title "Setting mixer devices Master and PCM to 65%." + /usr/bin/amixer sset PCM 20 >/dev/null 2>&1 || error=$? + /usr/bin/amixer sset PCM unmute >/dev/null 2>&1 || error=$? + /usr/bin/amixer sset Master 20 >/dev/null 2>&1 || error=$? + /usr/bin/amixer sset Master unmute >/dev/null 2>&1 || error=$? + status + ;; + + stop) + title "Saving /var/log/init.msg and /var/log/boot.msg." + touch /var/log/init.msg /var/log/boot.msg || error=$? + mv /var/log/init.msg /var/log/init.old || error=$? + mv /var/log/boot.msg /var/log/boot.old || error=$? + status + + title "Writing a wtmp record." + if [ "$RUNLEVEL" = 0 ] ; then halt -w || error=$? + else reboot -w || error=$? ; fi + status + + title "Saving kernel random seed." + dd if=/dev/urandom of=/var/state/random-seed count=1 2> /dev/null + status + + title "Sending all processes a SIGTERM (15)." + killall5 -15 || error=$? ; sleep 5 + status + + title "Sending all processes a 2nd SIGTERM (15)." + killall5 -15 || error=$? ; sleep 5 + status + + title "Sending all processes a SIGKILL (9)." + killall5 -9 || error=$? ; sleep 5 + status + + title "Turning off swap devices." + swapoff -a || error=$? + sync ; sleep 1 + status + + title "Remounting sync/ro and umount filesystems." + cut -d' ' -f-3 /etc/mtab /proc/mounts | sort -k2 -u -r | \ + while read dev dir fs ; do + [ "$dir" = "/" ] && continue + [ "$dir" = "/dev" ] && continue + [ "$dir" = "/dev/shm" ] && continue + [ "$dir" = "/proc" ] && continue + [ "$dir" = "/sys" ] && continue + [ "$dir" = "/tmp" ] && continue + echo "Umounting $dev on $dir ($fs)." + mount -o remount,sync $dir + mount -o remount,ro $dir + umount $dir + done + status + + title "Unmounting remaining file systems." + grep -E -v '^none (/|[a-z]+:) ' /proc/mounts > /etc/mtab + sync ; sleep 1 ; sync + umount -vnra -t nodevfs,proc,sysfs,shm + mount -vn -o remount,sync / + mount -vn -o remount,ro / + sleep 1 ; sync ; sleep 1 + status + + command="" + [ "$RUNLEVEL" = 0 ] && command=halt + [ "$RUNLEVEL" = 6 ] && command=reboot + if [ -n "$command" ] ; then + echo "Going to $command the system ..." + $command -d -f -i -p + while true ; do sleep 1 ; done + fi + ;; + + restart) + $0 stop; $0 start + ;; + + *) + echo "Usage: $0 { start | stop }" + exit 1 ;; + +esac + +exit 0 diff --git a/target/livecd/kernel.conf b/target/livecd/kernel.conf new file mode 100644 index 000000000..8d743e9b6 --- /dev/null +++ b/target/livecd/kernel.conf @@ -0,0 +1,128 @@ + +# --- ROCK-COPYRIGHT-NOTE-BEGIN --- +# +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# Please add additional copyright information _after_ the line containing +# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by +# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! +# +# ROCK Linux: rock-src/target/bootdisk/kernel.conf +# ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf +# +# 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. A copy of the GNU General Public +# License can be found at Documentation/COPYING. +# +# Many people helped and are helping developing ROCK Linux. Please +# have a look at http://www.rocklinux.org/ and the Documentation/TEAM +# file for details. +# +# --- ROCK-COPYRIGHT-NOTE-END --- + +# the useful magic rq +CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ=y + +# will use alsa +CONFIG_SOUND=m + +# Console drivers +CONFIG_VGA_CONSOLE=y +CONFIG_VIDEO_SELECT=y + +# all fbs in-kernel +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_FB_RIVA=y +CONFIG_FB_CLGEN=y +CONFIG_FB_PM2=y +# CONFIG_FB_PM2_FIFO_DISCONNECT is not set +# CONFIG_FB_PM2_PCI is not set +CONFIG_FB_PM3=y +CONFIG_FB_CYBER2000=y +CONFIG_FB_VESA=y +#eek! this ovverides all others! evil! +CONFIG_FB_VGA16=n +CONFIG_FB_HGA=y +CONFIG_VIDEO_SELECT=y +CONFIG_FB_MATROX=y +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G450=y +CONFIG_FB_MATROX_G100=y +# CONFIG_FB_MATROX_I2C is not set +# CONFIG_FB_MATROX_MAVEN is not set +# CONFIG_FB_MATROX_PROC is not set +# CONFIG_FB_MATROX_MULTIHEAD is not set +CONFIG_FB_ATY=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_RADEON=y +CONFIG_FB_ATY128=y +CONFIG_FB_INTEL=y +CONFIG_FB_SIS=y +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=y +CONFIG_FB_3DFX=y +CONFIG_FB_VOODOO1=y +CONFIG_FB_TRIDENT=y +CONFIG_FB_IT8181=y +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +CONFIG_FBCON_MFB=y +# CONFIG_FBCON_CFB2 is not set +CONFIG_FBCON_CFB4=y +CONFIG_FBCON_CFB8=y +CONFIG_FBCON_CFB16=y +CONFIG_FBCON_CFB24=y +CONFIG_FBCON_CFB32=y +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +CONFIG_FBCON_MAC=m +CONFIG_FBCON_VGA_PLANES=y +# CONFIG_FBCON_VGA is not set +CONFIG_FBCON_HGA=y +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +# CONFIG_FBCON_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# agp already needed for some vga cards +CONFIG_AGP=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_I810=y +CONFIG_AGP_VIA=y +CONFIG_AGP_AMD=y +CONFIG_AGP_AMD_K8=y +CONFIG_AGP_SIS=y +CONFIG_AGP_ALI=y +CONFIG_AGP_SWORKS=y +CONFIG_AGP_NVIDIA=y +CONFIG_AGP_ATI=y + +# drm +CONFIG_DRM=m +CONFIG_DRM_NEW=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_GAMMA=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_I810=m +CONFIG_DRM_I810_XFREE_41=m +CONFIG_DRM_I830=m +CONFIG_DRM_MGA=m +CONFIG_DRM_SIS=m + +# FireWire support +CONFIG_IEEE1394=y +CONFIG_IEEE1394_OHCI1394=y +# needed for fw cdrom boot +CONFIG_IEEE1394_SBP2=y +CONFIG_IEEE1394_ETH1394=m diff --git a/target/livecd/kernel.conf.sh b/target/livecd/kernel.conf.sh new file mode 100644 index 000000000..e6fabcb19 --- /dev/null +++ b/target/livecd/kernel.conf.sh @@ -0,0 +1,23 @@ +# here we disable settings we'll most probably not need on the bootdisk + +echo "bootdisk target -> disabling some settings ..." + +sed -e "s/CONFIG_SOUND_\(.*\)=./# CONFIG_SOUND_\1 is not set/" \ + -e "s/CONFIG_VIDEO\(.*\)=./# CONFIG_VIDEO\1 is not set/" \ + -e "s/CONFIG_PHONE\(.*\)=./# CONFIG_PHONE\1 is not set/" \ + -e "s/CONFIG_RADIO\(.*\)=./# CONFIG_RADIO\1 is not set/" \ + -e "s/CONFIG_HAMRADIO\(.*\)=./# CONFIG_HAMRADIO\1 is not set/" \ + -e "s/CONFIG_ATM\(.*\)=./# CONFIG_ATM\1 is not set/" \ + -e "s/CONFIG_SMP\(.*\)=./# CONFIG_SMP\1 is not set/" \ + -e "s/CONFIG_PCI_NAMES\(.*\)=./# CONFIG_PCI_NAMES\1 is not set/" \ + -e "s/CONFIG_INPUT_JOYDEV\(.*\)=./# CONFIG_INPUT_JOYDEV\1 is not set/" \ + -e "s/CONFIG_ACPI\(.*\)=./# CONFIG_ACPI\1 is not set/" \ + -e "s/CONFIG_GAMEPORT\(.*\)=./# CONFIG_GAMEPORT\1 is not set/" \ + -e "s/CONFIG_IP_NF\(.*\)=./CONFIG_IP_NF\1=m/" \ + -e "s/# CONFIG_EMBEDDED is not set/CONFIG_EMBEDDED=y/" \ + -e "s/CONFIG_KALLSYMS=./# CONFIG_KALLSYMS is not set/" \ + -e "s/CONFIG_IOSCHED_AS=./# CONFIG_IOSCHED_AS is not set/" \ + $1 > .config.boot + +mv .config.boot $1 + diff --git a/target/livecd/linuxrc.c b/target/livecd/linuxrc.c new file mode 100644 index 000000000..f5014624b --- /dev/null +++ b/target/livecd/linuxrc.c @@ -0,0 +1,533 @@ +/* + * --- ROCK-COPYRIGHT-NOTE-BEGIN --- + * + * This copyright note is auto-generated by ./scripts/Create-CopyPatch. + * Please add additional copyright information _after_ the line containing + * the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by + * the ./scripts/Create-CopyPatch script. Do not edit this copyright text! + * + * ROCK Linux: rock-src/target/livecd/linuxrc.c + * ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf + * + * 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. A copy of the GNU General Public + * License can be found at Documentation/COPYING. + * + * Many people helped and are helping developing ROCK Linux. Please + * have a look at http://www.rocklinux.org/ and the Documentation/TEAM + * file for details. + * + * --- ROCK-COPYRIGHT-NOTE-END --- + * + * linuxrc.c is Copyright (C) 2003, 2004 Cliford Wolf and Rene Rebe + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef MS_MOVE +# define MS_MOVE 8192 +#endif + +#ifndef STAGE_2_IMAGE +# define STAGE_2_IMAGE "2nd_stage.img.z" +#endif + +char mod_loader[50]; +char mod_dir[255]; +char mod_suffix[3]; +int mod_suffix_len=0; + +void mod_load_info(char *mod_loader, char *mod_dir, char *mod_suffix) { + struct utsname uts_name; + + if(uname(&uts_name) < 0) { + perror("unable to perform uname syscall correctly"); + return; + } else if(strcmp(uts_name.sysname, "Linux") != 0) { + printf("Your operating system is not supported ?!\n"); + return; + } + + strcpy(mod_loader, "/bin-static/insmod"); + strcpy(mod_dir, "/lib/modules/"); + strcat(mod_dir, uts_name.release); + + /* kernel module suffix for <= 2.4 is .o, .ko if above */ + if(uts_name.release[2] > '4') { + strcpy(mod_suffix, ".ko"); + } else { + strcpy(mod_suffix, ".o"); + } + + return; +} + +void doboot() +{ + if ( access("/sbin/init", R_OK) ) { perror("Can't find /sbin/init"); } + else { + execlp("/sbin/init","/sbin/init"); + } +} + +int trymount (const char* source, const char* target) +{ + return mount(source, target, "iso9660", MS_RDONLY, NULL) && + mount(source, target, "ext3", MS_RDONLY, NULL) && + mount(source, target, "ext2", MS_RDONLY, NULL) && + mount(source, target, "minix", MS_RDONLY, NULL) && + mount(source, target, "vfat", MS_RDONLY, NULL); +} + +void trywait(pid) +{ + if (pid < 0) perror("fork"); + else waitpid(pid, NULL, 0); +} + +#define tryexeclp(file, arg, ...) ( { \ + int pid; \ +\ + if ( (pid = fork()) == 0 ) { \ + execlp(file, arg, __VA_ARGS__); \ + perror(file); \ + exit(1); \ + } \ +\ + trywait(pid); \ +} ) + +/* check wether a file is a directory */ +int is_dir(const struct dirent *entry) { + struct stat tmpstat; + lstat(entry->d_name, &tmpstat); + return S_ISDIR(tmpstat.st_mode); +} + +/* this is used in the module loading system for sorting dirs before files */ +int dirs_first_sort(const struct dirent **a, const struct dirent **b) { + if(is_dir(*a)) { + if(is_dir(*b)) return 0; + else return 1; + } else if(is_dir(*b)) { + return -1; + } else return 0; +} + +/* this is used in the rm -r implementation */ +int no_dot_dirs_filter(const struct dirent *entry) { + if( is_dir(entry) && (!strcmp(entry->d_name,".") || !strcmp(entry->d_name,"..")) ) return 0; + else return 1; +} + + +/* my own rm -r implementation - :P */ +int rm_recursive(char* directory) { + struct dirent **namelist; + char oldcwd[256]; + int n, ret=0; + + getcwd(oldcwd, 256); + if(chdir(directory)) { + perror("chdir"); + exit(1); + } + + n = scandir(".", &namelist, no_dot_dirs_filter, dirs_first_sort); + if (n < 0) { + perror("scandir"); ret = -1; + } + + while(n--) { + if(is_dir(namelist[n])){ + if(rmdir(namelist[n]->d_name) != 0) { + rm_recursive(namelist[n]->d_name); + } + } else { + if(unlink(namelist[n]->d_name) != 0) { + perror("unable to remove file"); fflush(stdout); + ret = -1; + } + } + free(namelist[n]); + } + free(namelist); + + chdir(oldcwd); + if(rmdir(directory) != 0) { + perror("could not delete just-left meant-to-be-empty directory"); + ret = -1; + } + + return ret; +} + +/* symlink most files in /etc */ +int make_etc_symlinks() { + struct dirent **namelist; + char source[256], target[256], oldcwd[100]; + int n, ret=0; + + getcwd(oldcwd, 100); + chdir("/ROCK/etc"); + + n = scandir(".", &namelist, no_dot_dirs_filter, NULL); + if (n < 0) { + perror("scandir"); ret = -1; + } + + while(n--) { + snprintf(source, 256, "/ROCK/etc/%s",namelist[n]->d_name); + snprintf(target, 256, "/etc/%s",namelist[n]->d_name); + + if (symlink(source, target) != 0) { + printf("error in symlinking %s -> %s\n",source,target); + ret = -1; + } + + free(namelist[n]); + } + free(namelist); + + chdir(oldcwd); + + return ret; +} + +int getdevice(char* devstr, int devlen) +{ + char devicebase[20] = "/dev/cdroms/cdrom%d"; + char *devn[10]; + char devicefile[100]; + char filename[100]; + int tmp_nr, nr=0; + + for (tmp_nr = 0; tmp_nr < 10; ++tmp_nr) { + snprintf(devicefile, 100, devicebase, tmp_nr); + + if ( access (devicefile, R_OK) ) break; + + devn[nr++] = strdup (devicefile); + } + + if (!nr) { + printf("could not find a suitable cdrom device!\n"); + return -1; + } + + devn[nr] = NULL; + + snprintf(filename,100,"/mnt/cdrom/%s",STAGE_2_IMAGE); + + for (nr=0; devn[nr]; nr++) { + if(trymount(devn[nr],"/mnt/cdrom") == 0) { + if( access(filename, R_OK) ) continue; + strncpy(devstr, devn[nr], devlen); + return 0; + } + } + + printf("unable to find a device containing %s!\n", STAGE_2_IMAGE); + + return -1; +} + +int prepare_root() { + int ret = 0; + /* we need to set umask to 00 so we can set 777 perms */ + umask(00); + + /* simple symlinking */ + if(symlink("/ROCK/bin","/bin") != 0) { perror("/bin symlink FAILED"); ret=-1; } + if(symlink("/ROCK/sbin","/sbin") != 0) { perror("/sbin symlink FAILED"); ret=-1; } + if(symlink("/ROCK/boot","/boot") != 0) { perror("/boot symlink FAILED"); ret=-1; } + if(symlink("/ROCK/opt","/opt") != 0) { perror("/opt symlink FAILED"); ret=-1; } + + /* if /tmp isn't empty, this is gonna blow... */ + if(rmdir("/tmp") != 0) { perror("unable to remove old /tmp"); ret=-1; } + if(mkdir("/ramdisk/tmp", 0777) != 0) { perror("unable to create /ramdisk/tmp"); ret=-1; } + if(symlink("/ramdisk/tmp", "/tmp") != 0) { perror("/tmp symlink FAILED"); ret=-1; } + + if(mkdir("/ramdisk/home", 0755) != 0) { perror("unable to create /ramdisk/home"); ret=-1; } + if(symlink("/ramdisk/home", "/home") != 0) { perror("/home symlink FAILED"); ret=-1; } + + /* usr is just a symlink to / , that's why it works */ + if(unlink("/usr") != 0) { perror("unable to remove old /usr"); ret=-1; } + if(symlink("/ROCK/usr","/usr") != 0) { perror("/usr symlink FAILED"); ret=-1; } + + if(mkdir("/ramdisk/var", 0755) != 0) { perror("unable to create /ramdisk/var"); ret=-1; } + if(symlink("/ramdisk/var", "/var") != 0) { perror("/var symlink FAILED"); ret=-1; } + + if(rm_recursive("/lib") != 0) { printf("removal of /lib FAILED\n"); ret=-1; } + if(symlink("/ROCK/lib", "/lib") != 0) { perror("/lib symlink FAILED"); ret=-1; } + + if(unlink("/sbin-static") != 0) { perror("error removing /sbin-static"); ret=-1; } + if(rm_recursive("/bin-static") != 0) { printf("removal of /bin-static FAILED\n"); ret=-1; } + fflush(stdout); + + /* the /etc directory is a bit special */ + if(make_etc_symlinks() != 0) { printf("error while symlinking individual files in /etc!\n"); ret=-1; } + /* remove some files that either need to be writable or need to be replaced */ + if(unlink("/etc/mtab") != 0) { perror("unable to remove /etc/mtab!"); ret=-1; } + if(unlink("/etc/passwd") != 0) { perror("unable to remove /etc/passwd!"); ret=-1; } + if(unlink("/etc/group") != 0) { perror("unable to remove /etc/group!"); ret=-1; } + if(unlink("/etc/shadow") != 0) { perror("unable to remove /etc/shadow!"); ret=-1; } + if(unlink("/etc/X11") != 0) { perror("unable to remove /etc/X11 symlink!"); ret=-1; } + if(mkdir("/etc/X11",0755) != 0) { perror("unable to create /etc/X11!"); ret=-1; } + if(mkdir("/etc/X11/xkb",0755) != 0) { perror("unable to create /etc/X11/xkb!"); ret=-1; } + + /* etc/mtab must not contain a duplicate rootfs entry*/ + umask(022); + FILE* orig = fopen("/proc/mounts","r"); + FILE* mod = fopen("/etc/mtab","w"); + char buf[256]; + + while(fgets(buf, 256, orig) != NULL) { + if(memcmp(buf,"rootfs",6) == 0) continue; + else fputs(buf, mod); + } + fclose(orig); fclose(mod); buf[1]=0; + + /* add rocker to /etc/passwd and change root's home to /home/root */ + orig = fopen("/ROCK/etc/passwd","r"); + mod = fopen("/etc/passwd","w"); + while(fgets(buf, 256, orig) != NULL) { + if(memcmp(buf,"root",4) != 0) fputs(buf, mod); + else fputs("root:x:0:0:root:/home/root:/bin/bash\n",mod); + } + fputs("rocker:x:1000:100:ROCK Live CD User:/home/rocker:/bin/bash\n",mod); + fclose(orig); fclose(mod); buf[1]=0; + + /* add rocker to /etc/shadow */ + umask(066); + orig = fopen("/ROCK/etc/shadow","r"); + mod = fopen("/etc/shadow","w"); + while(fgets(buf, 256, orig) != NULL) { + if(memcmp(buf,"root",4) != 0) fputs(buf, mod); + else fputs("root:$1$1YssESn0$Y9LvBGGXpsZhjNKZ0x8OM/:12548::::::\n",mod); + } + fputs("rocker:$1$//TuI8QD$kTxVesUbGLNKuxILuK2UN/:12548:0:99999:7:::\n",mod); + fclose(orig); fclose(mod); buf[1]=0; + + /* add rocker to group 'sound' */ + int fnd = 0; + umask(022); + orig = fopen("/ROCK/etc/group","r"); + mod = fopen("/etc/group","w"); + while(fgets(buf, 256, orig) != NULL) { + if(memcmp(buf,"sound",5) != 0) fputs(buf, mod); + else { + fputs("sound:x:17:rocker\n",mod); + fnd = 1; + } + } + if(!fnd) fputs("sound:x:17:rocker\n",mod); + fclose(orig); fclose(mod); buf[1]=0; + + /* copy over XF86Config */ + orig = fopen("/ROCK/etc/X11/XF86Config","r"); + mod = fopen("/etc/X11/XF86Config","w"); + while(fgets(buf, 256, orig) != NULL) fputs(buf, mod); + fclose(orig); fclose(mod); buf[1]=0; + + /* copy over resolv.conf */ + unlink("/etc/resolv.conf"); + orig = fopen("/ROCK/etc/resolv.conf","r"); + mod = fopen("/etc/resolv.conf","w"); + while(fgets(buf, 256, orig) != NULL) fputs(buf, mod); + fclose(orig); fclose(mod); buf[1]=0; + + /* change modules.conf to place it's modules.dep in /etc */ + unlink("/etc/modules.conf"); + orig = fopen("/ROCK/etc/modules.conf","r"); + mod = fopen("/etc/modules.conf","w"); + while(fgets(buf, 256, orig) != NULL) fputs(buf, mod); + fputs("depfile=/etc/modules.dep\n",mod); + fputs("generic_stringfile=/etc/modules.generic_string\n",mod); + fputs("pcimapfile=/etc/modules.pcimap\n",mod); + fputs("isapnpmapfile=/etc/modules.isapnpmap\n",mod); + fputs("usbmapfile=/etc/modules.usbmap\n",mod); + fputs("parportmapfile=/etc/modules.parportmap\n",mod); + fputs("ieee1394mapfile=/etc/modules.ieee1394map\n",mod); + fputs("pnpbiosmapfile=/etc/modules.pnpbiosmap\n",mod); + fclose(orig); fclose(mod); buf[1]=0; + umask(00); + + /* we need to fix some things in /dev */ + if(chdir("/dev") != 0) { perror("could not chdir to /dev!"); ret=-1; } + unlink("fd"); /*no problem if this fails*/ + if(symlink("/proc/kcore","core") != 0) { perror("could not symlink /proc/kcore to /dev/core"); ret=-1; } + if(symlink("/proc/self/fd","fd") != 0) { perror("could not symlink /proc/self/fd to /dev/fd"); ret=-1; } + if(symlink("fd/0","stdin") != 0) { perror("could not symlink /dev/fd/0 to /dev/stdin"); ret=-1; } + if(symlink("fd/1","stdout") != 0) { perror("could not symlink /dev/fd/1 to /dev/stdout"); ret=-1; } + if(symlink("fd/2","stderr") != 0) { perror("could not symlink /dev/fd/2 to /dev/stderr"); ret=-1; } + if(chdir("/") != 0) { perror("could not chdir to /!"); ret=-1; } + + /* create needed directories in /var */ + if(mkdir("/var/run",0755) != 0 ) { perror("could not create /var/run"); ret=-1; } + if(mkdir("/var/lock",0755) != 0 ) { perror("could not create /var/lock"); ret=-1; } + if(mkdir("/var/tmp",0777) != 0 ) { perror("could not create /var/tmp"); ret=-1; } + if(mkdir("/var/log",0755) != 0 ) { perror("could not create /var/log"); ret=-1; } + if(mkdir("/var/lib",0755) != 0 ) { perror("could not create /var/lib"); ret=-1; } + if(mkdir("/var/lib/xkb",0755) != 0 ) { perror("could not create /var/lib/xkb"); ret=-1; } + if(symlink("/var/lib/xkb","/etc/X11/xkb/compiled")!=0) { perror("could not symlink /var/lib/xkb to /etc/X11/xkb/compiled"); ret=-1; } + if(mkdir("/var/rockplug",0755) != 0 ) { perror("could not create /var/rockplug"); ret=-1; } + if(mkdir("/var/rockplug/ieee1394",0755) != 0 ) { perror("could not create /var/rockplug/ieee1394"); ret=-1; } + if(mkdir("/var/rockplug/isapnp",0755) != 0 ) { perror("could not create /var/rockplug/isapnp"); ret=-1; } + if(mkdir("/var/rockplug/net",0755) != 0 ) { perror("could not create /var/rockplug/net"); ret=-1; } + if(mkdir("/var/rockplug/pci",0755) != 0 ) { perror("could not create /var/rockplug/pci"); ret=-1; } + if(mkdir("/var/rockplug/scsi",0755) != 0 ) { perror("could not create /var/rockplug/scsi"); ret=-1; } + if(mkdir("/var/rockplug/usb",0755) != 0 ) { perror("could not create /var/rockplug/usb"); ret=-1; } + /* add rocker's home, change owner */ + if(mkdir("/home/rocker",0755) != 0 ) { perror("could not create /home/rocker"); ret=-1; } + if(chown("/home/rocker",1000,100) != 0) { perror("could not chown /home/rocker to rocker:users"); ret=-1; } + /* root's home */ + if(mkdir("/home/root",0700) != 0 ) { perror("could not create /home/root"); ret=-1; } + + umask(022); + return ret; +} + +void load_ramdisk_file() { + char text[120], devicefile[100]; + char filename[100]; + int pid; + + strcpy(filename, STAGE_2_IMAGE); + + if (getdevice(devicefile, 100) < 0) + return; + + snprintf(text, 120, "file=/mnt/cdrom/%s", filename); + if ( (pid = fork()) == 0 ) { + printf("loading cloop..."); + execlp(mod_loader, mod_loader, "/lib/modules/misc/cloop.o", text); + perror("can't insmod cloop from"); + exit(1); + } + trywait(pid); + + if( access("/dev/cloop/0", R_OK) ) + { perror("can't access /dev/cloop/0, check if cloop insmod was succesfull!"); return; } + + if( mount("/dev/cloop/0", "/ROCK", "iso9660", MS_RDONLY, NULL) ) + { perror("Can't mount /dev/cloop/0 on /ROCK!"); return; } + + if ( mount("none", "/ramdisk", "tmpfs", 0, NULL) ) + { perror("Can't mount /ramdisk"); return; } + + /* create symlinks for needed directories, create special files */ + if(prepare_root() == 0) doboot(); + + return; +} + + + +void autoload_modules() +{ + char line[200], cmd[200], module[200]; + int fd[2], rc; + FILE *f; + int pid; + + if (pipe(fd) <0) + { perror("Can't create pipe"); return; } + + if ( (pid = fork()) == 0 ) { + dup2(fd[1],1); close(fd[0]); close(fd[1]); + execlp("gawk", "gawk", "-f", "/bin-static/hwscan", NULL); + printf("Can't start >>hwscan<< program with gawk!\n"); + exit(1); + } + + close(fd[1]); + f = fdopen(fd[0], "r"); + while ( fgets(line, 200, f) != NULL ) { + if ( sscanf(line, "%s %s", cmd, module) < 2 ) continue; + if ( !strcmp(cmd, "modprobe") || !strcmp(cmd, "insmod") ) { + printf("%s %s\n", cmd, module); + if ( (rc = fork()) == 0 ) { + execlp(cmd, cmd, module, NULL); + perror("Cant run modprobe/insmod"); + exit(1); + } + trywait(rc); + } + } + fclose(f); + trywait(pid); +} + +void exec_sh() +{ + int rc; + + printf ("Quit the shell to return to the stage 1 loader!\n"); + if ( (rc = fork()) == 0 ) { + execl("/bin-static/kiss", "kiss", "-E", NULL); + perror("kiss"); + _exit(1); + } + trywait(rc); +} + +int main() +{ + if ( mount("none", "/dev", "devfs", 0, NULL) && errno != EBUSY ) + perror("Can't mount /dev"); + + if ( mount("none", "/proc", "proc", 0, NULL) && errno != EBUSY ) + perror("Can't mount /proc"); + + /* Only print important stuff to console */ + klogctl(8, NULL, 3); + + mod_load_info(mod_loader, mod_dir, mod_suffix); + mod_suffix_len = strlen(mod_suffix); + + autoload_modules(); + + printf("\n\ + ============================================\n\ + === ROCK Linux 1st stage boot system ===\n\ + ============================================\n\ +\n\ +The ROCK Linux live CD system boots up in two stages. You are now in\n\ +the first of this two stages and if everything goes right you will not\n\ +spend much time here. I will just try to load some drivers (if needed)\n\ +so the 2nd stage boot system can be loaded.\n"); + + load_ramdisk_file(); + + sleep(1); + + printf("\n\nYou are still here. that means i couldn't complete the automatic boot of\n"); + printf("stage2. Please refer to the errors reported above, you will now be dumped into a"); + printf("minimalistic static shell so you can have a look at what went wrong...\n"); + + if(access("/bin/kiss",R_OK) == 0) execl("/bin/kiss", "/bin/kiss", NULL); + if(access("/bin-static/kiss",R_OK) == 0) execl("/bin-static/kiss", "/bin-static/kiss", NULL); + + printf("\nCan't start a shell!!\n\nPlease send a bug report with your configuration to fake@rocklinux.org\n\n"); + return 0; +} + diff --git a/target/livecd/pkg_gawk.conf b/target/livecd/pkg_gawk.conf new file mode 100644 index 000000000..b4181f8cc --- /dev/null +++ b/target/livecd/pkg_gawk.conf @@ -0,0 +1,5 @@ + +[ -e $confdir/$pkg.conf ] && . $confdir/$pkg.conf + +var_append confopt " " " --disable-nls" + diff --git a/target/livecd/pkg_modutils.conf b/target/livecd/pkg_modutils.conf new file mode 100644 index 000000000..d9ee0fd2e --- /dev/null +++ b/target/livecd/pkg_modutils.conf @@ -0,0 +1,6 @@ + +[ -e $confdir/$pkg.conf ] && . $confdir/$pkg.conf + +var_append confopt " " "--disable-combined --enable-combined-rmmod \ + --enable-combined-modprobe" + diff --git a/target/livecd/preconfig.in b/target/livecd/preconfig.in new file mode 100644 index 000000000..20f95c2b4 --- /dev/null +++ b/target/livecd/preconfig.in @@ -0,0 +1,24 @@ +# --- ROCK-COPYRIGHT-NOTE-BEGIN --- +# +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# Please add additional copyright information _after_ the line containing +# the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by +# the ./scripts/Create-CopyPatch script. Do not edit this copyright text! +# +# ROCK Linux: rock-src/target/livecd/preconfig.in +# ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf +# +# 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. A copy of the GNU General Public +# License can be found at Documentation/COPYING. +# +# Many people helped and are helping developing ROCK Linux. Please +# have a look at http://www.rocklinux.org/ and the Documentation/TEAM +# file for details. +# +# --- ROCK-COPYRIGHT-NOTE-END --- + +CFGTEMP_TARGETLIST="$CFGTEMP_TARGETLIST ` +`livecd Live_CD-ROM_system" diff --git a/target/livecd/x86/build.sh b/target/livecd/x86/build.sh new file mode 100644 index 000000000..34f63d1c0 --- /dev/null +++ b/target/livecd/x86/build.sh @@ -0,0 +1,28 @@ + +syslinux_ver="`sed -n 's,.*syslinux-\(.*\).tar.*,\1,p' \ + $base/target/livecd/download.txt`" + +cd $disksdir + +echo_header "Creating isolinux setup:" +# +echo_status "Extracting isolinux boot loader." +mkdir -p isolinux +tar --use-compress-program=bzip2 \ + -xf $base/download/livecd/syslinux-$syslinux_ver.tar.bz2 \ + syslinux-$syslinux_ver/isolinux.bin -O > isolinux/isolinux.bin +# +echo_status "Creating isolinux config file." +cp $base/target/$target/x86/isolinux.cfg isolinux/ +cp $base/target/$target/x86/help?.txt isolinux/ +# +echo_status "Copy images to isolinux directory." +cp boot/memtest86.bin isolinux/memtest86 +cp initrd.gz boot/vmlinuz isolinux/ +# +cat > ../isofs_arch.txt <<- EOT + BOOT -b isolinux/isolinux.bin -c isolinux/boot.catalog + BOOTx -no-emul-boot -boot-load-size 4 -boot-info-table + DISK1 build/${ROCKCFG_ID}/ROCK/livecd/isolinux/ isolinux/ +EOT + diff --git a/target/livecd/x86/help0.txt b/target/livecd/x86/help0.txt new file mode 100644 index 000000000..9742863e5 --- /dev/null +++ b/target/livecd/x86/help0.txt @@ -0,0 +1,17 @@ + ____ ___ ___ _ __ _ + | _ \ / _ \ / __| |/ / | | _ _ __ _ _ _ _ + | . _/| | | | | | '_/ | | |_| '_ \| | | | \/ | + | |\ \| |_| | |__| . \ | |__| | | | | `_' |> < + |_| \_\ ___/ \___|_|\_\ |____|_|_| |_|\___/|_/\_| + [============> http://www.rocklinux.org/ <============] + | L I V E CD | + +-------------+ + +Actions: +-------- + + Start live cd system + ramdisk options Start live cd system with the given options + linux options Boot the linux kernel with the given options + memtest86 Boot the memtest86 mini-os + diff --git a/target/livecd/x86/isolinux.cfg b/target/livecd/x86/isolinux.cfg new file mode 100644 index 000000000..1796ad6d0 --- /dev/null +++ b/target/livecd/x86/isolinux.cfg @@ -0,0 +1,17 @@ + +DEFAULT ramdisk +TIMEOUT 600 +PROMPT 1 + +DISPLAY help0.txt + +LABEL ramdisk + kernel vmlinuz + APPEND initrd=initrd.gz root=/dev/ram devfs=nocompat init=/linuxrc video=vesa:ywrap,mtrr vga=0x317 rw + +LABEL linux + kernel vmlinuz + +LABEL memtest86 + kernel memtest86 +