Browse Source

Stefan Fiedler:


			
			
				rocklinux
			
			
		
Stefan Fiedler 17 years ago
parent
commit
643504e1b8
4 changed files with 505 additions and 0 deletions
  1. +227
    -0
      package/target-finish/1st-stage/1st-stage.conf
  2. +39
    -0
      package/target-finish/1st-stage/1st-stage.desc
  3. +200
    -0
      package/target-finish/2nd-stage/2nd-stage.conf
  4. +39
    -0
      package/target-finish/2nd-stage/2nd-stage.desc

+ 227
- 0
package/target-finish/1st-stage/1st-stage.conf

@ -0,0 +1,227 @@
#!/bin/bash
mainfunction="first_stage_mainfunction"
first_stage_mainfunction ()
{
disksdir="$build_rock/bootdisk"
echo "Creating initrd data:"
rm -rf $disksdir/initrd
mkdir -p $disksdir/initrd/{dev,proc,sys,tmp,scsi,net,bin,etc,lib}
cd $disksdir/initrd; ln -s bin sbin; ln -s . usr
# make mount not complain
touch etc/fstab
rock_targetdir="$base/target/$target/"
rock_target="$target"
rootdir="$disksdir/2nd_stage"
targetdir="$disksdir/initrd"
cross_compile=""
if [ "$ROCKCFG_CROSSBUILD" = "1" ] ; then
cross_compile="`find ${base}/ROCK/tools.cross/ -name "*-readelf"`"
cross_compile="${cross_compile##*/}"
cross_compile="${cross_compile%%readelf}"
fi
initrdfs="ext2fs"
block_size=""
ramdisk_size=12288
case ${initrdfs} in
ext2fs|ext3fs|cramfs)
initrd_img="${disksdir}/initrd.img"
;;
ramfs)
initrd_img="${disksdir}/initrd.cpio"
;;
esac
echo "Creating some device nodes"
mknod ${targetdir}/dev/ram0 b 1 0
mknod ${targetdir}/dev/null c 1 3
mknod ${targetdir}/dev/zero c 1 5
mknod ${targetdir}/dev/tty c 5 0
mknod ${targetdir}/dev/console c 5 1
# this copies a set of programs and the necessary libraries into a
# chroot environment
echo "Create checkisomd5 binary"
cp -r ${base}/misc/isomd5sum ${base}/build/${ROCKCFG_ID}/
cat >${base}/build/${ROCKCFG_ID}/compile_isomd5sum.sh <<EOF
#!/bin/bash
cd /isomd5sum
make clean
make CC=gcc
EOF
chmod +x ${base}/build/${ROCKCFG_ID}/compile_isomd5sum.sh
chroot ${base}/build/${ROCKCFG_ID}/ /compile_isomd5sum.sh
cp ${base}/build/${ROCKCFG_ID}/isomd5sum/checkisomd5 bin/
rm -rf ${base}/build/${ROCKCFG_ID}/compile_isomd5sum.sh ${base}/build/${ROCKCFG_ID}/isomd5sum
echo "Copying and adjusting linuxrc scipt"
cp ${base}/target/${target}/linuxrc.sh sbin/init
chmod +x sbin/init
sed -i -e "s,^STAGE_2_BIG_IMAGE=\"2nd_stage.tar.gz\"$,STAGE_2_BIG_IMAGE=\"${ROCKCFG_SHORTID}/2nd_stage.tar.gz\"," \
-e "s,^STAGE_2_SMALL_IMAGE=\"2nd_stage_small.tar.gz\"$,STAGE_2_SMALL_IMAGE=\"${ROCKCFG_SHORTID}/2nd_stage_small.tar.gz\"," \
sbin/init
libdirs="${rootdir}/lib `sed -e"s,^\(.*\),${rootdir}\1," ${rootdir}/etc/ld.so.conf | tr '\n' ' '`"
needed_libs() {
local x="${1}" library
${cross_compile}readelf -d ${x} 2>/dev/null | grep "(NEEDED)" |
sed -e"s,.*Shared library: \[\(.*\)\],\1," |
while read library ; do
find ${libdirs} -name "${library}" 2>/dev/null |
sed -e "s,^${rootdir},,g" | tr '\n' ' '
done
}
libs="${libs} `needed_libs bin/checkisomd5`"
echo "Copying other files ... "
for x in ${rock_targetdir}/initrd/initrd_* ; do
[ -f ${x} ] || continue
while read file target ; do
file="${rootdir}/${file}"
[ -e ${file} ] || continue
while read f ; do
tfile=${targetdir}/${target}${f#${file}}
[ -e ${tfile} ] && continue
if [ -d ${f} -a ! -L ${f} ] ; then
mkdir -p ${tfile}
continue
else
mkdir -p ${tfile%/*}
fi
# if [ -b ${f} -o -c ${f} -o -p ${f} -o -L ${f} ] ; then
cp -a ${f} ${tfile}
# else
# cp ${f} ${tfile}
# fi
file -L ${f} | grep -q ELF || continue
libs="${libs} `needed_libs ${f}`"
done < <( find "${file}" )
done < ${x}
done
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/${x/.static/}
cp -a ../2nd_stage/sbin/${x/.static/} bin/
fi
if [ -f ../2nd_stage/sbin/$x ]; then
rm -f bin/$x bin/${x/.static/}
cp -a ../2nd_stage/sbin/$x bin/
ln -sf $x bin/${x/.static/}
fi
done
echo "Copy scsi and network kernel modules."
tmptar="`mktemp`" ; tar cfT ${tmptar} /dev/null
for x in $( cd ../2nd_stage ; ls -d lib/modules/*/kernel/drivers/{scsi,net} )
do
[ -e "../2nd_stage/${x}" ] && tar rf ${tmptar} -C ../2nd_stage ${x}
done
tar xf ${tmptar} ; rm -f ${tmptar}
[ -e lib/modules ] && find lib/modules -type f -exec $STRIP --strip-debug {} \;
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/{scsi,net}; do
[ -d $x ] && ln -s ${x#lib/modules/} lib/modules/
done
rm -f lib/modules/[0-9]*/kernel/drivers/scsi/{st,scsi_debug}.{o,ko}
rm -f lib/modules/[0-9]*/kernel/drivers/net/{dummy,ppp*}.{o,ko}
echo "Copying required libraries ... "
while [ -n "${libs}" ] ; do
oldlibs=${libs}
libs=""
for x in ${oldlibs} ; do
[ -e ${targetdir}/${x} ] && continue
mkdir -p ${targetdir}/${x%/*}
cp ${rootdir}/${x} ${targetdir}/${x}
file -L ${rootdir}/${x} | grep -q ELF || continue
for y in `needed_libs ${rootdir}/${x}` ; do
[ ! -e "${targetdir}/${y}" ] && libs="${libs} ${y}"
done
done
done
echo "Creating links for identical files ..."
while read ck fn
do
# don't link empty files...
if [ "${oldck}" = "${ck}" -a -s "${fn}" ] ; then
echo "\`- Found ${fn#${targetdir}} -> ${oldfn#${targetdir}}."
rm ${fn} ; ln -s /${oldfn#${targetdir}} ${fn}
else
oldck=${ck} ; oldfn=${fn}
fi
done < <( find ${targetdir} -type f | xargs md5sum | sort )
cd ..
echo "Creating initrd filesystem image (${initrdfs}): "
case "${initrdfs}" in
cramfs)
[ "${block_size}" == "" ] && block_size=4096
mkfs.cramfs -b ${block_size} ${targetdir} ${initrd_img}
;;
ramfs)
# cp -a ${targetdir}/{linuxrc,init}
( cd ${targetdir} ; find | cpio -o -c > ${initrd_img} ; )
;;
ext2fs|ext3fs)
[ "${block_size}" == "" ] && block_size=1024
block_count=$(( ( 1024 * ${ramdisk_size} ) / ${block_size} ))
echo "Creating temporary files."
tmpdir=`mktemp -d` ; mkdir -p ${tmpdir}
dd if=/dev/zero of=${initrd_img} bs=${block_size} count=${block_count} &> /dev/null
tmpdev="`losetup -f 2>/dev/null`"
if [ -z "${tmpdev}" ] ; then
for x in /dev/loop* /dev/loop/* ; do
[ -b "${x}" ] || continue
losetup ${x} 2>&1 >/dev/null || tmpdev="${x}"
[ -n "${tmpdev}" ] && break
done
if [ -z "${tmpdev}" ] ; then
echo "No free loopback device found!"
rm -f ${tmpfile} ; rmdir ${tmpdir}; exit 1
fi
fi
echo "Using loopback device ${tmpdev}."
losetup "${tmpdev}" ${initrd_img}
echo "Writing initrd image file."
mkfs.${initrdfs:0:4} -b ${block_size} -m 0 -N 360 -q ${tmpdev} &> /dev/null
mount -t ${initrdfs:0:4} ${tmpdev} ${tmpdir}
rmdir ${tmpdir}/lost+found/
cp -a ${targetdir}/* ${tmpdir}
umount ${tmpdir}
echo "Removing temporary files."
losetup -d ${tmpdev}
rm -rf ${tmpdir}
;;
esac
echo "Compressing initrd image file."
gzip -9 -c ${initrd_img} > ${initrd_img}.gz
mv ${initrd_img%.img}{.img,}.gz
target="$rock_target"
}

+ 39
- 0
package/target-finish/1st-stage/1st-stage.desc

@ -0,0 +1,39 @@
[COPY] --- ROCK-COPYRIGHT-NOTE-BEGIN ---
[COPY]
[COPY] This copyright note is auto-generated by ./scripts/Create-CopyPatch.
[COPY] Please add additional copyright information _after_ the line containing
[COPY] the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by
[COPY] the ./scripts/Create-CopyPatch script. Do not edit this copyright text!
[COPY]
[COPY] ROCK Linux: rock-src/package/base/mdadm/mdadm.desc
[COPY] ROCK Linux is Copyright (C) 1998 - 2006 Clifford Wolf
[COPY]
[COPY] This program is free software; you can redistribute it and/or modify
[COPY] it under the terms of the GNU General Public License as published by
[COPY] the Free Software Foundation; either version 2 of the License, or
[COPY] (at your option) any later version. A copy of the GNU General Public
[COPY] License can be found at Documentation/COPYING.
[COPY]
[COPY] Many people helped and are helping developing ROCK Linux. Please
[COPY] have a look at http://www.rocklinux.org/ and the Documentation/TEAM
[COPY] file for details.
[COPY]
[COPY] --- ROCK-COPYRIGHT-NOTE-END ---
[I] Raid Configuration Tool
[T] mdadm is a tool for creating, managing and monitoring
[T] device arrays using the "md" driver in Linux, also
[T] known as Software RAID arrays
[A] The ROCK Linux Project
[M] The ROCK Linux Project
[C] extra/base
[L] GPL
[S] Stable
[V] 1
[P] O --------8- 195.200

+ 200
- 0
package/target-finish/2nd-stage/2nd-stage.conf

@ -0,0 +1,200 @@
package_map=" +00-dirtree +$ROCKCFG_PKG_GLIBC_BRANCH
-automake17 -automake18 -automake19 -gcc2
-gcc33 -gcc34 -gcc40 -gcc41
-gmp -mpfr -rockinitrd +stone
-linux24-source -linux26-header -linux24 +udev
-linux26-source -linux26-header -linux26 -postinstall
-binutils -bin86 -nasm -dietlibc
+grub +lilo +yaboot +aboot
+silo +parted +mac-fdisk +pdisk
+xfsprogs +dosfstools +jfsutils +hfsutils
+e2fsprogs +reiserfsprogs +genromfs +device-mapper
+popt +file +mdadm +lvm2
+dump +eject +disktype +lvm-wrapper
+hdparm +memtest86 +cpuburn +bonnie++
-mine -bize -termcap +ncurses
+readline -strace -ltrace -perl5
-m4 -time -gettext -zlib
+$ROCKCFG_PKG_BASH_DEFAULT +attr +acl +findutils
+mktemp +coreutils -diffutils -patch
-make +grep +sed +gzip
+tar +gawk -flex +bzip2
-texinfo +less -groff -man
+nvi -bison +bc +cpio
+ed -autoconf -automake -libtool
+curl +wget +dialog +minicom
+lrzsz +rsync +tcpdump +module-init-tools
+sysvinit +shadow +util-linux +wireless-tools
+net-tools +procps +psmisc +rockplug
+modutils +pciutils -cron +portmap
+sysklogd +devfsd +setserial +iproute2
+netkit-base +netkit-ftp +netkit-telnet +netkit-tftp
+sysfiles +libpcap +iptables +tcp_wrappers
-kiss +kbd -syslinux +ntfsprogs
-ethtool -uml_utilities +ddrescue +libelf"
package_map="+$ROCKCFG_PKG_LINUX_DEFAULT +$packager $package_map"
progs="agetty bash cat cp date dd df ifconfig ln ls $packager mkdir mke2fs \
mkswap mount mv rm reboot route sleep swapoff swapon sync umount \
eject chmod chroot grep halt rmdir sh shutdown uname killall5 \
stone mktemp sort fold sed mkreiserfs cut head tail disktype"
progs="$progs fdisk sfdisk"
if [ $arch = ppc ] ; then
progs="$progs mac-fdisk pdisk"
fi
if [ $packager = bize ] ; then
progs="$progs bzip2 md5sum"
fi
mainfunction="2nd_stage_mainfunction"
2nd_stage_mainfunction ()
{
disksdir="$build_rock/bootdisk"
taropt="--use-compress-program=bzip2 -xf"
echo "Creating 2nd stage filesystem:"
mkdir -p $disksdir/2nd_stage
cd $disksdir/2nd_stage
mkdir -p mnt/source mnt/target
#
if [ -f ../../pkgs/bize.tar.bz2 -a ! -f ../../pkgs/mine.tar.bz2 ] ; then
packager=bize
else
packager=mine
fi
echo "Extracting the packages archives."
for x in $( ls ../../pkgs/*.tar.bz2 | tr . / | cut -f8 -d/ )
do
if [ -z "${x##*:dev*}" -o -z "${x##*:doc*}" ]
then
# simply ignore :dev and :doc packages
true
elif echo "" $package_map "" | grep -q " +$x "
then
echo "\`- Extracting $x.tar.bz2 ..."
tar --use-compress-program=bzip2 -xpf ../../pkgs/$x.tar.bz2
elif ! echo "" $package_map "" | grep -q " -$x "
then
echo "\`- Not found in \$package_map: $x"
echo " ... target/bootdisk/build_stage1.sh"
fi
done
#
echo "Saving boot/* - we do not need this on the 2nd stage ..."
rm -rf ../boot ; mkdir ../boot
mv boot/* ../boot/
#
echo "Remove the stuff we do not need ..."
rm -rf home usr/{local,doc,man,info,games,share}
rm -rf var/adm/* var/games var/adm var/mail var/opt
rm -rf usr/{include,src} usr/*-linux-gnu {,usr/}lib/*.{a,la,o}
for x in usr/lib/*/; do rm -rf ${x%/}; done
#
echo "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
#
if [ -f ../../pkgs/kbd.tar.bz2 ] ; then
echo "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 -f
fi
#
if [ -f ../../pkgs/pciutils.tar.bz2 ] ; then
echo "Installing pci.ids ..."
tar $taropt ../../pkgs/pciutils.tar.bz2 \
usr/share/pci.ids
fi
#
echo "Creating 2nd stage linuxrc."
cp -v $base/target/$target/linuxrc2.sh sbin/init ; chmod -v +x sbin/init
cp -v $base/target/$target/shutdown sbin/shutdown ; chmod -v +x sbin/shutdown
echo '$STONE install' > etc/stone.d/default.sh
#
echo "Creating 2nd_stage.tar.gz archive."
tar -czvf ../2nd_stage.tar.gz * ; cd ..
echo "Creating small 2nd stage filesystem:"
mkdir -pv 2nd_stage_small ; cd 2nd_stage_small
mkdir -pv dev proc sys tmp bin lib etc share
mkdir -pv mnt/source mnt/target
ln -sv bin sbin ; ln -sv . usr
#
echo "Copy the most important programs ..."
for x in $progs ; do
fn=""
[ -f ../2nd_stage/bin/$x ] && fn="bin/$x"
[ -f ../2nd_stage/sbin/$x ] && fn="sbin/$x"
[ -f ../2nd_stage/usr/bin/$x ] && fn="usr/bin/$x"
[ -f ../2nd_stage/usr/sbin/$x ] && fn="usr/sbin/$x"
if [ "$fn" ] ; then
cp -v ../2nd_stage/$fn $fn
else
echo "\`- Program not found: $x"
fi
done
#
echo "Copy the required libraries ..."
found=1 ; while [ $found = 1 ]
do
found=0
for x in ../2nd_stage/lib ../2nd_stage/usr/lib
do
for y in $( cd $x ; ls *.so.* 2> /dev/null )
do
if [ ! -f lib/$y ] &&
grep -q $y bin/* lib/* 2> /dev/null
then
echo "\`- Found $y."
cp -v $x/$y lib/$y ; found=1
fi
done
done
done
#
echo "Copy linuxrc."
cp -v ../2nd_stage/sbin/init sbin/init
echo "Copy /etc/fstab."
cp -v ../2nd_stage/etc/fstab etc
echo "Copy stone.d."
mkdir -pv etc/stone.d
for i in gui_text mod_install mod_packages mod_gas default ; do
cp -v ../2nd_stage/etc/stone.d/$i.sh etc/stone.d
done
#
echo "Creating links for identical files."
while read ck fn
do
if [ "$oldck" = "$ck" ] ; then
echo "\`- Found $fn -> $oldfn."
rm -v $fn ; ln -v $oldfn $fn
else
oldck=$ck ; oldfn=$fn
fi
done < <( find -type f | xargs md5sum | sort )
#
echo "Creating 2nd_stage_small.tar.gz archive."
tar -cvf- * | gzip -9 > ../2nd_stage_small.tar.gz ; cd ..
}

+ 39
- 0
package/target-finish/2nd-stage/2nd-stage.desc

@ -0,0 +1,39 @@
[COPY] --- ROCK-COPYRIGHT-NOTE-BEGIN ---
[COPY]
[COPY] This copyright note is auto-generated by ./scripts/Create-CopyPatch.
[COPY] Please add additional copyright information _after_ the line containing
[COPY] the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by
[COPY] the ./scripts/Create-CopyPatch script. Do not edit this copyright text!
[COPY]
[COPY] ROCK Linux: rock-src/package/base/mdadm/mdadm.desc
[COPY] ROCK Linux is Copyright (C) 1998 - 2006 Clifford Wolf
[COPY]
[COPY] This program is free software; you can redistribute it and/or modify
[COPY] it under the terms of the GNU General Public License as published by
[COPY] the Free Software Foundation; either version 2 of the License, or
[COPY] (at your option) any later version. A copy of the GNU General Public
[COPY] License can be found at Documentation/COPYING.
[COPY]
[COPY] Many people helped and are helping developing ROCK Linux. Please
[COPY] have a look at http://www.rocklinux.org/ and the Documentation/TEAM
[COPY] file for details.
[COPY]
[COPY] --- ROCK-COPYRIGHT-NOTE-END ---
[I] Raid Configuration Tool
[T] mdadm is a tool for creating, managing and monitoring
[T] device arrays using the "md" driver in Linux, also
[T] known as Software RAID arrays
[A] The ROCK Linux Project
[M] The ROCK Linux Project
[C] extra/base
[L] GPL
[S] Stable
[V] 1
[P] O --------8- 195.200

Loading…
Cancel
Save