URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 75855
[ Назад ]

Исходное сообщение
"Объединение ISO файлов дистрибутива"

Отправлено dekanovich , 24-Авг-07 13:58 
Есть задача -- собрать из четырех ISO файлов дистрибутива RedHat Enterprise Server один DVD, с которого можно было бы грузиьтся и устанавливать RHES.
Возможно и такое?
Если возможно, то как?

Содержание

Сообщения в этом обсуждении
"Объединение ISO файлов дистрибутива"
Отправлено witos , 25-Авг-07 14:02 
>Есть задача -- собрать из четырех ISO файлов дистрибутива RedHat Enterprise Server
>один DVD, с которого можно было бы грузиьтся и устанавливать RHES.
>
>Возможно и такое?
>Если возможно, то как?

когда-то объединял RHEL4 - 4 CD на 1 DVD, с помощью скрипта, который выдернул где-то из инета.

#!/bin/bash
 
# Take Red Hat Linux/Fedora Core Linux CD images and build a DVD image
#
# Copyright (c) 2004, DMA <dma[!]mail.ur.ru>
#
# The main ideas were taken from Chris Adams's <cmadams[!]iruntheinter.net> and
# Chris Kloiber's <ckloiber[!]redhat.com> scripts.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
#
 
usage()
{
    echo "Usage: $cmd <ISO directory> <DVD image>" 1>&2
    echo "    ISO directory: directory holding CD images" 1>&2
    echo "    DVD image: name of DVD image output file" 1>&2
    echo "" 1>&2
    echo "The following RPMs must be installed:" 1>&2
    echo "    $PKGREQ" 1>&2
    echo  
    exit 1
}
 
cleanup()
{
    tree=$start/.tree
 
    rm -rf $tree
 
    mnted=`grep "iso9660" /proc/mounts | grep "$start" | cut -d' ' -f2`
 
    for d in $mnted; do
umount $d
        rmdir $d
    done
}
 
#PKGREQ="anaconda anaconda-runtime mkisofs"
PKGREQ="anaconda-runtime mkisofs"
 
PATH=/usr/local/bin:/usr/bin:/bin
PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
 
[ "`id -u`" != 0 ] && usage "This must be run as root"
 
# Check the input directory
start=`/bin/pwd`
base=$1
shift
 
if [ "$base" = "" -o ! -d "$base" ]; then
usage "Invalid ISO directory"
fi
 
if [ ${base#/} = $base ]; then
base=$start/$base
fi
 
# Find the output file name
dvd=$1
if [ "$dvd" = "" ]; then
usage "Invalid DVD image name"
fi
if [ -e $dvd ]; then
echo "DVD image \"$dvd\" already exists"
exit 1
fi
if [ ${dvd#/} = $dvd ]; then
dvd=$base/$dvd
fi
 
# Make sure necessary tools exist
for p in $PKGREQ; do
rpm -q $p 2> /dev/null | grep -q $p && continue
usage "$p not installed"
done
 
# If the loopback module isn't loaded, load it (with a higher max_loop)
modprobe loop max_loop=16 > /dev/null 2>&1
 
# Cleanup
cleanup
 
mnted=""
 
# Mount all the CD images
mnt=0
volid=""
appid=""
discs=""
sysid=""
for f in $base/*.iso; do
    if [ "$volid" = "" ]; then
volid=`isoinfo -d -i $f | grep "^Volume id:" | cut -d' ' -f3-`
appid=`isoinfo -d -i $f | grep "^Application id:" | cut -d' ' -f3-`
sysid=`isoinfo -d -i $f | grep "^System id:" | cut -d' ' -f3-`
    fi
     
    mnt=$(($mnt + 1))
    idir=$start/.disc$mnt
    mnted="$mnted $idir"
    mkdir -p $idir  
    echo "Mounting `basename $f`"
    mount -o ro,loop -t iso9660 $f $idir
    disc=`tail +4 $idir/.discinfo | head -1`
    discs="$discs $disc"
done
discs=`echo $discs | tr ' ' '\n' | sort -un | tr '\n' , | sed 's/,$//'`
 
# Make a symlink tree to the CD images
mkdir -p $tree
 
for mnt in $mnted; do
    echo "Symlinking to `basename $mnt` ..."
    cd $mnt
    find . -depth -type d -print | while read d; do
    [ ! -d $tree/$d ] && mkdir -p $tree/$d
find $d -maxdepth 1 -not -type d -print | while read f; do
[ -e $tree/$f ] && continue
ln -s $mnt/$f $tree/$f
done
    done
done
 
find $tree -name TRANS.TBL -print | xargs -i rm -f {}
 
# Set up the boot image
cd $tree/isolinux
cp isolinux.bin isolinux.bin.new
rm -f isolinux.bin
mv isolinux.bin.new isolinux.bin
rm -f boot.cat
 
# Make the full discinfo file
cd $tree
if [ -e $tree/.discinfo ]; then
    awk '{ if ( NR == 4 ) { print cds } else { print ; } }' cds="$discs" $tree/.discinfo > $tree/.discinfo.new
    mv $tree/.discinfo.new $tree/.discinfo
fi
 
#
## Out with the old and in with the new...
#echo "Removing any existing anaconda packages..."
#rpm -qa | grep anaconda | xargs -i rpm -e {}
#echo "Installing anaconda from the new media..."
#
#distr="RedHat"
#if [ ! -e $tree/$distr ]; then
#    $distr="Fedora"
#fi
#rpm -Uvh $tree/$distr/RPMS/anaconda-runtime* 2>/dev/bull
 
#export PYTHONPATH=$PYTHONPATH:/usr/lib/anaconda-runtime:/usr/lib/anaconda
#
#echo "Determining Package Order ..."
#/usr/lib/anaconda-runtime/pkgorder $tree i386 >$tree/RedHat/base/pkgorder
#
#echo "Generating new hdlist ..."
#rm -f $tree/RedHat/base/hdlist $tree/RedHat/base/hdlist2
#/usr/lib/anaconda-runtime/genhdlist --withnumbers --fileorder $tree/RedHat/base/pkgorder $tree
 
# Make the ISO
echo "Building the DVD ISO image \"$dvd\" for \"$volid\" ..."
 
mkdir -p `dirname $dvd`
 
mkisofs -sysid "$sysid" -A "$volid" -V "$appid" -o $dvd -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -T -r -f -q -l . 2>/dev/null
 
#cleanup
 
# Set the MD5SUM in the ISO
echo "Setting DVD MD5 sum ..."
 
#/usr/lib/anaconda-runtime/implantisomd5 --force $dvd
# Don't like forced mediacheck? Try this instead.
/usr/lib/anaconda-runtime/implantisomd5 --supported-iso --force $dvd
 
# Clean up
echo "Cleaning up ..."
cleanup



"Объединение ISO файлов дистрибутива"
Отправлено kiv , 26-Авг-07 02:24 
>Есть задача -- собрать из четырех ISO файлов дистрибутива RedHat Enterprise Server
>один DVD, с которого можно было бы грузиьтся и устанавливать RHES.
>
>Возможно и такое?
>Если возможно, то как?

Вот тут пример с Федорой я делал.
Также и все собирал дистры (RHEL, SuSE, ...)
http://www.sysman.ru/index.php?showtopic=5609


"Объединение ISO файлов дистрибутива"
Отправлено dekanovich , 27-Авг-07 12:24 
Огромное спасибо, господа!