Сборка Live-CD диска...

Доброго здоровья друзья!
Вот по этой ссылке собирал рамдиск:
http://www.alti.at/knowhow/obsdlivecd/

на этапе:
# cd /usr/src/distrib/i386/ramdisk_cd
# rm -rf obj/*
# make

получаю ошибку:
cp /var/tmp/image.21972 mr.fs
rm /var/tmp/image.21972
cp bsd bsd.rd
/usr/src/distrib/i386/ramdisk_cd/rdsetroot bsd.rd mr.fs
bsd.rd: no rd_root_image symbols?
*** Error 1 in /usr/src/distrib/i386/ramdisk_cd (../common/Makefile.inc:65 'bsd.rd')

делал все по мануалу, куда дальше рыть не понимаю...
Есть идеи?

Аватар пользователя ssh2

Там в оригинальной статье

Там в оригинальной статье кажется используются компоненты 3.8, думаю актуальность давно потеряна.

вот те ссылка в тему: http://liveusb-openbsd.sourceforge.net/

Аватар пользователя mitrofanzzz

лайв-юсб мне не нужен

И реализвать его проще. А с автором той ссылки что на сурсфорге я списался.

Говорю ему - как ты готовишь ливсиди... он мне отвечает это очень сложный процесс, сделай юсби...
Я ему - мне из чистого любопытства хочется собрать ливсиди, знаний ноль, по статье не собирается...
Он мне - ну тогда я не смогу вам помочь...

И фсё... Веду дальнейшее расследование... мне бы хотелось собрать рамдиск с включением всякого нужного, иксов и блекджека со шлюхами...

Аватар пользователя ssh2

Я к сожалению в ближашую

Я к сожалению в ближашую неделю-другую не участник любых расследований. :) Работы - хоть беги!

Аватар пользователя mitrofanzzz

Вас понял...

буду курить мануалы

Аватар пользователя mitrofanzzz

Нашел симпатичный скрипт.

http://www.mindtwist.de/main/index.php на этом сайте неплохой скриптец для сборки лайвсиди.
Оттестирую и погляжу... там отпишусь...

Аватар пользователя mitrofanzzz

вот недоношенный скрипт... как буду свободнее смогу допилить


#!/bin/sh
# This script creates an OpenBSD Live CD and lets you customize it
# Copyright (c) 2009 Reiner Rottmann. Released under the BSD license.
# First release 2009-06-20
# Modification 27-02-2014 by Nikita Sokhin

###############################################################################
# Defaults
###############################################################################
MAJ=5 # Version major number
MIN=4 # Version minor number
ARCH=i386 # Architecture
TZ=Europe/Moscow # Time zones are in /usr/share/zoneinfo
SETS="base etc man comp xbase xetc xfont xserv xshare" # The base sets that should be installed on the live cd
WDIR=/tmp/livecdx
TMPDIR=$WDIR/temp # Working directory
CDBOOTDIR=$WDIR/$MAJ.$MIN/$ARCH # CD Boot directory
BASEURL=http://mirror.yandex.ru/openbsd
#BASEURL=http://ftp-stud.fht-esslingen.de/pub/OpenBSD # Mirror to use to download the OpenBSD files
MIRROR=$BASEURL/$MAJ.$MIN/$ARCH
PKG_PATH=$BASEURL/$MAJ.$MIN/packages/$ARCH
OPENDNS=208.67.220.220 # Open DNS Server to use in live cd
CLEANUP=no#yes # Clean up downloaded files and workdir

EXIT_SUCCESS=0
EXIT_FAILED=1
EXIT_ERROR=2
EXIT_BUG=10

VERSION="1.0.1"

# Additional packages that should be installed on the live cd
#PACKAGES="mc screen mutt nano curl cdrtools dvd+rw-tools rsync vim wget"
#PACKAGES="vim"

###############################################################################
# End of user configuration
###############################################################################

# global variables

SCRIPTNAME=$(basename $0 .sh)

# base functions

# In case of an error it is wise to show the correct usage of the script.
function usage {
echo >&2
echo -e "Usage: $SCRIPTNAME \t[-A ] [-h] [-M ] [-m ] [-P ]" >&2
echo -e " \t\t[-S ] [-T ] [-V] [-W ] [-U ]" >&2
echo >&2
echo "This program creates an OpenBSD live cd and lets you customize it." >&2
echo "The software is released under BSD license. Use it at your own risk!" >&2
echo "Copyright (c) 2009 Reiner Rottmann. Email: reiner[AT]rottmann.it" >&2
echo >&2
echo -e " -A :\tselect architecture (default: $ARCH)" >&2
echo -e " -h :\tgive this help list" >&2
echo -e " -M :\tselect OpenBSD major version (default: $MAJ)" >&2
echo -e " -m :\tselect OpenBSD minor version (default: $MIN)" >&2
echo -e " -P :\tselect additional packages to install" >&2
echo -e " \t(default: $PACKAGES)" >&2
echo -e " -S :\tselect base sets (default: $SETS)" >&2
echo -e " -T :\tselect timezone (default: $TZ)" >&2
echo -e " -U :\tselect url of nearest OpenBSD mirror (default: $MIRROR)" >&2
echo -e " -u :\tselect url of nearest OpenBSD from mirror list (requires wget)" >&2
echo -e " -V :\tprint version" >&2
echo -e " -W :\tselect working directory (default: $WDIR)" >&2
echo >&2
echo -e "Example:" >&2
echo -e "# $SCRIPTNAME -A i386 -M 4 -m 5 -W /tmp/livecd" >&2
echo >&2
[[ $# -eq 1 ]] && exit $1 || exit $EXIT_FAILED
}

# own functions
# This function lets the user choose an OpenBSD mirror

function choosemirror {
req="wget"
for i in $req
do
if ! which $i >/dev/null; then
echo "Missing $i. Exiting."
exit $EXIT_ERROR
fi
done

mirrorlist=$(wget -q -O - http://www.openbsd.org/ftp.html#ftp | sed -n 's##\1#p'|sort)

echo "Please select mirror from the list below:"

mirr=""
while [ -z "$mirr" ] ; do
m=1
for i in $mirrorlist
do
echo $m. "$i"
m=$(($m+1))
done
echo -n "Your choice? : "
read choice
mirr=$(echo "$mirrorlist" | sed -n $choice,${choice}p| sed s#^\ *##g)
done
BASEURL=$mirr
MIRROR=$BASEURL/$MAJ.$MIN/$ARCH
PKG_PATH=$BASEURL/$MAJ.$MIN/packages/$ARCH
CDBOOTDIR=$WDIR/$MAJ.$MIN/$ARCH
}

# This function may be used for cleanup before ending the program
function cleanup {
echo "[*] This is clean function..."
}

# This is the main function that creates the OpenBSD livecd
function livecd {
echo "[*] OpenBSD LiveCD script"
echo "[*] This program creates an OpenBSD live cd and lets you customize it." >&2
echo "[*] The software is released under BSD license. Use it at your own risk!" >&2
echo "[*] Copyright (c) 2009 Reiner Rottmann." >&2
echo "[*] This script is released under the BSD License."
uname -a | grep OpenBSD || echo "[*] WARNING: This software should run on an OpenBSD System!"
date
echo "[*] Setting up the build environment..."

if [ -d $WDIR ]
then
echo " [*] $WDIR is present..."
else
echo " [*] mkdir -p $WDIR..."
mkdir -p $WDIR
fi

if [[ $CHMIRROR = y ]]
then
echo "[*] Selecting OpenBSD mirror..."
choosemirror
echo $MIRROR
fi

# Get install media
INSTMEDIA="install"
echo "[*] Find install media ($INSTMEDIA$MAJ$MIN).iso..."
cd $WDIR
if [ -f $WDIR/$INSTMEDIA$MAJ$MIN.iso ]
then
echo " [*] Install media $INSTMEDIA$MAJ$MIN.iso is present..."
else
echo " [!] Install media $INSTMEDIA$MAJ$MIN.iso is not present..."
echo " [*] Downloading install media $INSTMEDIA$MAJ$MIN.iso..."
echo " [*] ftp -o $WDIR/$INSTMEDIA$MAJ$MIN.iso -m $MIRROR/$INSTMEDIA$MAJ$MIN.iso"
fi

# Unpack install media
if [ -f $WDIR/$INSTMEDIA$MAJ$MIN.iso ];then
echo " [*] Unpacking ($INSTMEDIA$MAJ$MIN).tgz ..."
echo "tar xzvf $INSTMEDIA$MAJ$MIN.tgz"
fi

# Create CD Boot directory
mkdir -p $CDBOOTDIR && cd $CDBOOTDIR

echo "[*] Copy files needed for CD Boot..."
CDBOOTFILES="cdbr cdboot bsd"
cd $CDBOOTDIR
for i in $CDBOOTFILES
do
if [ -f $WDIR/$i ]
then
mv -f $WDIR/$i $CDBOOTDIR/$i
else
echo " [E] $i is missing"
fi
done

echo "[*] Extract file sets ($SETS)..."
cd $WDIR
for i in $SETS
do
if [ -f $WDIR/$i$MAJ$MIN.tgz ]
then
echo " [*] Do tar xzpf -f $WDIR/$i$MAJ$MIN.tgz..."
tar xzpf $WDIR/$i$MAJ$MIN.tgz
else
echo " [E] $i is missing"
fi
done

if [ $CLEANUP="yes" ]
then
echo "[*] Deleting file set tarballs ($SETS)..."
cd $WDIR
for i in $SETS
do
echo " [*] Deleting $WDIR/$i$MAJ$MIN.tgz"
rm -f $WDIR/$i$MAJ$MIN.tgz
done

if [ -f $WDIR/boot.catalog ]
then
echo " [*] Deleting ($WDIR/boot.catalog)..."
rm $WDIR/boot.catalog
fi

if [ -f $WDIR/game$MAJ$MIN.tgz ]
then
echo " [*] Deleting ($WDIR/game$MAJ$MIN.tgz)..."
rm $WDIR/game$MAJ$MIN.tgz
fi

if [ -f $WDIR/INSTALL.i386 ]
then
echo " [*] Deleting ($WDIR/INSTALL.i386)..."
rm $WDIR/INSTALL.i386
fi
fi

echo "[*] Populating dynamic device directory..."
cd $WDIR/dev && $WDIR/dev/MAKEDEV all

echo "[*] Creating boot configuration..."
echo "set image $MAJ.$MIN/$ARCH/bsd" > $WDIR/etc/boot.conf

echo "[*] Creating fstab entries..."
cat >/$WDIR/etc/fstab <$WDIR/etc/motd <$WDIR/etc/dhclient.conf <>$WDIR/etc/rc.local </dev/null 2>&1
mkdir /binmfs/bin
mkdir /binmfs/sbin
/bin/cp -rp /bin /binmfs
/bin/cp -rp /sbin /binmfs
fi

# Select keyboard language
echo "Select keyboard language (by number):"
select klang in us de es it fr be jp nl ru uk sv no pt br hu tr dk sg pl sf lt la lv
do
/sbin/kbd \$klang
break
done

# function for setting the timezone
sub_timezone() {

while :
do
echo -n "What timezone are you in? ('?' for list) "
read zone

if [ \${zone} = "?" ]
then
ls -F /usr/share/zoneinfo
fi

if [ -d /usr/share/zoneinfo/\${zone} ]
then
ls -F /usr/share/zoneinfo/\${zone}
echo -n "What sub-timezone of \${zone} are you in? "
read subzone
zone="\${zone}/\${subzone}"
fi

if [ -f /usr/share/zoneinfo/\${zone} ]
then
echo "Setting local timezone to \${zone} ..."
rm /etc/localtime
ln -sf /usr/share/zoneinfo/\${zone} /etc/localtime
echo "done"
return
fi
done
}

# Select timezone
echo -n "Do you want to configure the timezone? (y/N): "
read timeconf
if [ ! -z \$timeconf ]
then
if [ \$timeconf = "y" ] || [ \$timeconf = "Y" ] || [ \$timeconf = "yes"] || [ \$timeconf = "Yes" ]
then
sub_timezone
fi
fi

# Configure network interface
myif=\$(ifconfig | awk -F: '/^[a-z][a-z]+[0-3]: flags=/ { print \$1 }' | grep -v lo | grep -v enc | grep -v pflog)
for thisif in \$myif
do
ifconfig \$thisif up
echo "starting dhclient \$thisif in background"
dhclient -q \$thisif 2>/dev/null &
done

# If you have enough memory, you can populate /usr/local to RAM
if [ \$mymem -gt 500000000 ]
then
echo -n "Do you want /usr/local loading to RAM (y/N)? "
read ownpack
if [ ! -z \$ownpack ]
then
if [ \$ownpack = "y" ] || [ \$ownpack = "Y" ] || [ \$ownpack = "yes" ] || [ \$ownpack = "Yes" ]
then
echo "Loading ... please wait ..."
if [ \$mymem -gt 800000000 ]
then
mount_mfs -s 691200 -P /usr/local-cd swap /usr/local
else
mount_mfs -s 473088 -P /usr/local-cd swap /usr/local
fi
fi
fi
fi

# Password for root
echo -n "Do you want to set a password for root(y/N)?"
read rootpass
if [ ! -z \$rootpass ]
then
if [ \$rootpass = "y" ] || [ \$rootpass = "Y" ] || [ \$rootpass = "Yes" ] || [ \$rootpass = "yes" ] || [ \$rootpass = "YES" ]
then
passwd root
fi
else
echo "password for root not set (password empty)"
fi

EOF

echo "[*] Modifying the library path..."
echo "[*] ... for root directory ..."
echo >> $WDIR/root/.cshrc << EOF
# Workaround for missing libraries:
export LD_LIBRARY_PATH=/usr/local/lib
EOF

echo >> $WDIR/root/.profile << EOF
# Workaround for missing libraries:
export LD_LIBRARY_PATH=/usr/local/lib
EOF

echo "[*] ... for etc/profile directory ..."
mkdir $WDIR/etc/profile/
echo >> $WDIR/etc/profile/.cshrc << EOF
# Workaround for missing libraries:
export LD_LIBRARY_PATH=/usr/local/lib
EOF

echo >> $WDIR/etc/profile/.profile << EOF
# Workaround for missing libraries:
export LD_LIBRARY_PATH=/usr/local/lib
EOF

echo "[*] Using OpenDNS ($OPENDNS) in livecd environment..."
echo "nameserver $OPENDNS" > $WDIR/etc/resolv.conf

echo "[*] Installing additional packages..."

cat > $WDIR/tmp/packages.sh < $log_file
done

echo "[*] Remove ports and src (only on live cd)..."
rm -rf $WDIR/usr/{src,ports,xenocara}/*

echo "[*] Removing ssh host keys..."
rm $WDIR/etc/ssh/*key*

echo "[*] Saving creation timestamp..."
date > $WDIR/etc/livecd-release

echo "[*] Saving default timezone..."
ln -s /usr/share/zoneinfo/$TZ $WDIR/etc/localtime

echo "[*] Creating mfs-mount directories..."
cp -rp $WDIR/var $WDIR/mfsvar
rm -r $WDIR/var/*
cp -rp $WDIR/root $WDIR/mfsroot
cp -rp $WDIR/etc $WDIR/mfsetc
mkdir $WDIR/mfsdev
cp -p $WDIR/dev/MAKEDEV $WDIR/mfsdev/
cd $WDIR/mfsdev && $WDIR/mfsdev/MAKEDEV all
#rm -f $WDIR/$INSTMEDIA$MAJ$MIN.iso

echo "[*] Creating live-cd iso..."
cd /
echo "mkhybrid -l -R -o $WDIR/livecd$MAJ$MIN-$ARCH.iso -b $MAJ.$MIN/$ARCH/cdbr -c $MAJ.$MIN/$ARCH/boot.catalog $WDIR"
mkhybrid -l -R -o $WDIR/livecd$MAJ$MIN-$ARCH.iso -b $MAJ.$MIN/$ARCH/cdbr -c $MAJ.$MIN/$ARCH/boot.catalog $WDIR

echo "[*] Your modified OpenBSD iso is in $WDIR/livecd$MAJ$MIN-$ARCH.iso"
ls -lh $WDIR/livecd$MAJ$MIN-$ARCH.iso

#if [ $CLEANUP="yes" ];then
# echo "[*] Cleanup"
# echo -n "Do you want to delete the working directory $WDIR? (y/N): "
# read deletewdir
# if [ ! -z $deletewdir ]
# then
# if [ $deletewdir = "y" ] || [ $deletewdir = "Y" ] || [ $deletewdir = "yes"] || [ $deletewdir = "Yes" ]
# then
# rm -rf $WDIR
# fi
# fi
#fi

echo "[*] One final note: Please support the OpenBSD project by buying official cd sets or donating some money!"
date
echo "[*] Done."
}

# Evaluate the command line options
while getopts 'A:hM:m:P:S:T:U:uvVW:' OPTION ; do
case $OPTION in
A) ARCH=${OPTARG}
;;
h) usage $EXIT_ERFOLG
;;
M) MAJ=${OPTARG}
;;
m) MIN=${OPTARG}
;;
P) PACKAGES=${OPTARG}
;;
S) SETS=${OPTARG}
;;
T) TZ=${OPTARG}
;;
U) BASEURL=${OPTARG}
;;
u) CHMIRROR=y
;;
v) VERBOSE=y
;;
V) echo $VERSION
exit $EXIT_ERROR
;;
W) WDIR=${OPTARG}
;;

\?) echo "Unknown option \"-$OPTARG\"." >&2
usage $EXIT_ERROR
;;
:) echo "Option \"-$OPTARG\" needs an argument." >&2
usage $EXIT_ERROR
;;
*) echo "" >&2
usage $EXIT_ERROR
;;
esac
done

# Skip already used arguments
shift $(( OPTIND - 1 ))

# Loop over all arguments
for ARG ; do
if [[ $VERBOSE = y ]] ; then
echo -n "Argument: "
fi
#echo $ARG
done

# Call (main-)function
livecd

# Skript beenden
cleanup
exit $EXIT_SUCCESS

Аватар пользователя mitrofanzzz

Друзья

на теме сборки ливсиди вот чем озаботился. Был такой отличный дистр frenzy на фре. И отличный там был набор софта. Что предлагаю. Допилить хочу скрипт и при вашей помощи намутить список умолчального софта на всякие случаи. замутим красивый ливсиди с пасьянсом и гувернантками! как вам идея?

Аватар пользователя admin

Лучше оформить предложение в

Лучше оформить предложение в пост на главную, там может кто проявит инициативу)

Аватар пользователя ssh2

Какая у дистрибутива будет

Какая у дистрибутива будет цель? В смысле, что предполагается достичь его использованием?

Аватар пользователя mitrofanzzz

его использованием я планирую

достичь удовольствие от пользования оным, запилить скрипт для быстрого развёртывания и пользования с флехи и сидюка... но в основном для самоудовлетворения ( в хорошем смысле этого слова )

Аватар пользователя mitrofanzzz

как это можно

замутить? Я не большой спец по вебу :)

Аватар пользователя admin

Всмысле? Пиши сюда запись в

Всмысле? Пиши сюда запись в блок, она выпадет на главную)

Аватар пользователя entr0py

если еще актуально, добавлю свои 5 копеек

Лайвсд на самом деле элементарно делаются даже под виндой, это с лайвюсб заморочки. Вот мой копипаст метода, не помню где прочитал, но все работает, только замените зеркало загрузки и версию на нужные:
1) создаем каталог, например, C:\CD
2) копируем в него содержимое например http://mirror.corbina.net/pub/OpenBSD/5.2/i386 (C:\CD\5.2\i386)
3) аналогично копируем другие нужные папки, например в пакетами (C:\CD\packages\i386, сюда же нужно положить файл index.txt с фтп)
4) копируем в C:\CD\ файл загрузочной дискетки для данной версии (floppy52.fs)
5) качаем mkisofs для винды (гугл в помощь)
6) запускаем его с параметрами mkisofs -b floppy52.fs -c boot.cat -J -l -R -r -o /openbsd52.iso /CD
7) получаем загрузочный образ диска, который можно нарезать на болванку или подкладывать виртуалкам.
8) ...
9) выгода!