Ahoj vsichni,
vim, ze to sem nepatri, ale rad bych se Vas zeptal na jednu drobnost.
Na SLES9 existoval prikaz mkinitramfs pomoci ktere jsou sji vytvoril svuj vlastni ramfs. Po rebootu pocitace jsem vstoupil do specialniho modu, kde jsem delal kopie HDD.
Na SLES10 ale zadny mkinitramfs. Misto toho pouzivam mkinitrd.
Kdyz, ale prebootuju do tohoto ramfs, tak nedokazu namountovat /boot.
Hlasi mi to /dev/disk/by-id/ata--part1 does nost exist.
Init soubor vypada nasledovne:
#!/bin/sh
export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/lib/klibc/bin
export MOD_PATH=/lib/modules/`uname -r`
export ORIGIN_LVS_MNT=/mnt/origin
export TMP_LVS_MNT=/mnt/tmp
REPL_STATE="OK"
{
echo "=================================="
echo " this kernel uses initramfs "
echo "=================================="
echo " running ($$:$#) $0" "$@"
if [ "$$" != 1 ] ; then
echo $0 must run as /init process
sleep 3
exit 42
fi
# create all mem devices, ash cant live without /dev/null
for i in \
/sys/class/mem/*/dev \
; do
if [ ! -f $i ] ; then continue ; fi
echo -n "."
DEVPATH=${i##/sys}
ACTION=add DEVPATH=${DEVPATH%/dev} /sbin/udev mem
done
#exec < /dev/console > /dev/console 2>&1
echo
. /etc/udev/udev.conf
mkdir -p "$udev_root"
# allow bind mount, to not lose events
mount -t tmpfs -o size=3% initramdevs "$udev_root"
mkdir "$udev_root/shm"
mkdir "$udev_root/pts"
for i in /proc /sys /tmp /root ; do
if [ ! -d "$i" ] ; then mkdir "$i" ; fi
done
if [ ! -f /proc/cpuinfo ] ; then mount -t proc proc /proc ; fi
if [ ! -d /sys/class ] ; then mount -t sysfs sysfs /sys ; fi
# load drivers for the root filesystem, if needed
if [ -x /load_modules.sh ] ; then
PATH=$PATH /load_modules.sh
fi
#
# create all remaining device nodes
echo -n "creating device nodes ."
/sbin/udevtrigger
/sbin/udevsettle --timeout=30
echo -n .
# workaround chicken/egg bug in mdadm and raidautorun
# they do the ioctl on the not yet existing device node...
for i in 0 1 2 3 4 5 6 7 8 9 \
10 11 12 13 14 15 16 17 18 19 \
20 21 22 23 24 25 26 27 28 29 \
30 31 \
; do
mknod -m 660 /dev/md$i b 9 $i
done
mknod -m 400 /dev/isdninfo c 45 255
echo .
if [ -x /load_md.sh ] ; then
PATH=$PATH /load_md.sh
fi
# mounting original boot, because /boot/grub/menu.lst will be replaced
#
echo -n " * mounting /boot ............................ "
mount /boot
if [ $? -ne 0 ] ; then
echo " * problem with mounting /boot ....................... "
REPL_STATE="FAILED"
fi
echo "done"
# copy original menu.lst grub to boot into Linux
#
echo -n " * copying menu.lst .......................... "
cp /menu.lst /boot/grub
echo -n "Test" > /boot/initramfs.log
echo "done"
# start device mapper
#
echo -n "Waiting for /dev/mapper/control to appear: "
for i in 1 2 3 4 5; do
[ -e /dev/mapper/control ] && break
sleep 1
echo -n "."
done
if [ -e /dev/mapper/control ]; then
echo " ok"
else
echo " failed"
fi
## find volume group
##
#vgscan
#
## system should be recognized
## make all its lvs active
##
#vg_root=vgSystem
#vgchange -a y $vg_root
## we don't want to change rootdev
##rootdev=/dev/vgSystem/lvRoot
# mounting original lvs
#
echo "Loading ext3 module"
echo "echo lsmod"
lsmod
echo "inserting jbd"
modprobe jbd
echo "inserting ext3"
modprobe ext3
echo "inserting reiserfs"
modprobe reiserfs
echo "Echo lsmod"
lsmod
********************
Copying sekvence
********************
# umounting original boot
echo "ReplicationState=$REPL_STATE"
#
echo " * umounting /boot ............................ "
} 2>&1 | tee /initramfs.log
cp /initramfs.log /boot
umount /boot
if [ $? -ne 0 ] ; then
echo " * problem with umounting /boot ............... "
fi
echo "done"
exec reboot -d -f
Muzete mi nekdo poradit v cem muze byt problem?
vypis cat/etc/fstab je:
david:/lib # cat /etc/fstab
/dev/system/lvRoot / reiserfs acl,user_xattr 1 1
/dev/system/lvASBackup /.AS/BACKUP reiserfs acl,user_xattr 1 2
/dev/system/lsASSWS /.AS/SWS reiserfs acl,user_xattr 1 2
/dev/system/lvDBS /DBS reiserfs acl,user_xattr 1 2
/dev/system/lvSWS /SWS reiserfs acl,user_xattr 1 2
/dev/disk/by-id/scsi-SSEAGATE_ST373207LC_3KT0BWLS00007529LP3K-part1 /boot reiserfs acl,user_xattr 1 2
/dev/system/lvHome /home reiserfs acl,user_xattr 1 2
/dev/system/lvOpt /opt reiserfs acl,user_xattr 1 2
/dev/system/lvVar /var reiserfs acl,user_xattr 1 2
/dev/system/lvVarCol /var/col reiserfs acl,user_xattr 1 2
/dev/system/lvVarProcm /var/procm reiserfs acl,user_xattr 1 2
/dev/disk/by-id/scsi-SSEAGATE_ST373207LC_3KT0BWLS00007529LP3K-part2 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/fd0 /media/floppy auto noauto,user,sync 0 0
Diky moc
Ramfs jsem vytvarel takto:
1) $mkinitramfs -k $bootDir/vmlinuz -i $initramfsFile.gz -b $tmpDir
2) $gunzip -f $tmpDir/$initramfsFile.gz -c > $tmpDir/$initramfsFile
3) $cpio -i < ../$initramfsFile
4) Prekopirovani meho init souboru
5) $find | $cpio --format=newc -o | $gzip > $tmpDir/$initramfsFile.gz
Nezmenil jsi nahodou disk? Z kus zkontrolovat zda dane zarizeni existuje. Ja jsem mel poobny problem pri zrcadleni na dalsi pc, stacilo napsat misto
/dev/disk/by-id/scsi-SSEAGATE_ST373207LC_3KT0BWLS00007529LP3K-part1 -> /dev/sda1
Je to sice navrat ke starsim vecem ale funkcnim ;-)
Honzik
Ahoj Honza
http://www.oksystem.cz/skoleni-a-testovani/novell/
nakonec pomohlo to, ze jsem pomoci modprobe nahral
scsi_mod sd_mod piix ata_piix.
Spis je problem v tom, ze pokud to bude na systemu, kteremu budou chybet jine moduly, tak to opet nepojede a rad bych to udelal dynamicky
To je elegantnejsi reseni, ja jsem to prepsal v fstabu na /dev/hda1 protoze to pak rozlejvam na vice pc.
Tak hlavne ze se to vyresilo. :-)
Honzik
Ahoj Honza
http://www.oksystem.cz/skoleni-a-testovani/novell/