@ -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" |
|||
} |
@ -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 |
|||
|
@ -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 .. |
|||
|
|||
} |
@ -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 |
|||
|