Hallo,
ich habe hier ein kleines Problem beim Login. Ich versuche gerade eine
initrd zu erstellen, welche später als drbd Client arbeiten soll. Aber
irgendwie bekomme
ich das gerade nicht hin :(.
In der Wirkung bekomme ich nach einem fehlerfreien Bootvorgang einen
Loginprompt. Wenn ich den User (root) eingebe, kommt nach ca. 3 Sekunden
die Meldung "login incorrect", OHNE daß ich ein Paßwort eingeben konnte.
Wie mein initrd derzeit aussieht, kann ich wohl am besten mit dem quick
and dirty Scritp erklären:
*************************************
#!/bin/bash
MP="/mnt" # the mount point
LOOP="/dev/loop1"
KERNEL="pluto"
RD=$KERNEL"rd"
TFTP="/var/lib/images/bin/linux/"
IMGSIZE=8192
_err () {
echo $2
}
_rd_create () {
if test -e /tmp/$RD; then rm /tmp/$RD; fi
dd if=/dev/zero of=/tmp/$RD bs=1k count=$IMGSIZE 2> /dev/null
losetup $LOOP /tmp/$RD 2> /dev/null || _err 1 "can't mount loop
deice"
mke2fs -m 0 -N 2000 $LOOP > /dev/null
mount -t ext2 $LOOP $MP
#mke2fs /dev/ram0 -b 1024 $IMGSIZE
#mount /dev/ram0 $MP
#dd if=/dev/ram0 bs=1k | gzip -v9 > $TFTP/plutord.gz
}
_rd_delete () {
cd /; sync
umount $MP
losetup -d $LOOP
#chmod +r $TFTP/{$KERNEL,$RD.gz}
}
_create_dirs () {
mkdir -p
$MP/{root,proc,lib,mnt,dev,bin,sbin,etc,tmp,home,var/{log,run,tmp},usr,floppy,cdrom}
chmod g-w $MP/*
chmod 1777 $MP/tmp
}
_create_dev () {
cp -dpR /dev/{zero,null,console,kmem,mem} $MP/dev
cp -dpR /dev/{ram,ram[0-9],tty,tty[0-9]} $MP/dev
cp -dpR /dev/drbd[0-9] $MP/dev
cp -dpR /dev/{hd[abcd],hd[abcd][1-4],fd,fd0*,cdrom} $MP/dev
}
_create_etc () {
mkdir -p
$MP/etc/{init.d,rc.boot,rc0.d,rc1.d,rc2.d,rc3.d,rc4.d,rc5.d,rc6.d,rcS.d}
cp -dpR /etc/modules.conf $MP/etc
cp -dpR /etc/{group,passwd,shadow} $MP/etc
cat $MP/etc/passwd | sed 's/bash/dash/' > $MP/etc/passwd
cp -dpR /etc/plutorc.sh $MP/etc
cp -dpR /etc/login.defs $MP/etc
}
_create_bin_sbin () {
cp -dp /sbin/{init,getty,modprobe,insmod,reboot,halt} $MP/sbin
cp -dp /bin/{login,stty,hostname,mount,cat,dash,ls,mount,bash}
$MP/bin
cd $MP/bin; ln -s dash sh;
#cd $MP/bin; ln -s bash sh;
}
_create_libs () {
cp -dp /lib/{libc-*,libc.*,ld*} $MP/lib
cp -dp
/lib/{libcrypt*,libpam_*,libpam.*,libdl*,libresolv*,libncurses.*} $MP/lib
cp -dp /lib/{librt*,libacl*,libpthread*,libattr*} $MP/lib #needed
by ls
ldconfig -r $MP
}
_create_kernel () {
cp -f /boot/`uname -r` $TFTP/$KERNEL
mkdir $MP/lib/modules
cp -dpR /lib/modules/`uname -r` $MP/lib/modules
}
_create_tmp () {
touch $MP/var/run/utmp
touch $MP/var/log/wtmp
}
_create_usr () {
mkdir -p $MP/usr/{lib,share/terminfo,sbin,bin}
cp -dpR /usr/share/terminfo/{l,v} $MP/usr/share/terminfo
cp -dp /usr/lib/{libnc*,libterm*} $MP/usr/lib
cp /usr/bin/passwd $MP/usr/bin
}
_mk_fstab () {
cat /etc/fstab | grep "swap\|cdrom\|floppy\|proc" > $MP/etc/fstab
#echo "/dev/ram0 / ext2 defaults" >> $MP/etc/fstab
cat << END >> $MP/etc/inittab
id:2:initdefault:
si::sysinit:/etc/plutorc.sh init
1:2345:respawn:/sbin/getty 9600 tty1
2:23:respawn:/sbin/getty 9600 tty2
ca:12345:ctrlaltdel:/etc/plutorc.sh stop
END
}
_mk_nss () {
#NSS need for glibc login
#cp -dp /etc/nsswitch.conf $MP/etc
cp -dp /etc/services $MP/etc
cat << END >> $MP/etc/nsswitch.conf
passwd: compat
shadow: compat
group: compat
hosts: files
services: files
networks: files
protocols: files
rpc: files
ethers: files
netmasks: files
bootparams: files
automaount: files
aliases: files
netgroup: files
publickey: files
END
#cp -dp /lib/libnss_{compat,dns,files,hesiod,nis,nisplus}* $MP/lib
cp -dp /lib/libnss_{compat,dns,files,hesiod,nis}* $MP/lib
#mkdir $MP/lib/security
cp -dpR /lib/security $MP/lib
cp -dpR /etc/pam.conf $MP/etc
cp -dpR /etc/pam.d $MP/etc
#disable pam from login binary
#cp -dp /lib/security/pam_permit.so $MP/lib/security
#cat << END >> $MP/etc/pam.conf
#OTHER auth optional /lib/security/pam_permit.so
#OTHER account optional /lib/security/pam_permit.so
#OTHER password optional /lib/security/pam_permit.so
#OTHER session optional /lib/security/pam_permit.so
#END
}
_main () {
_rd_create
_create_dirs
_create_dev
_create_etc
_create_bin_sbin
_create_libs
_create_kernel
_create_tmp
_create_usr
_mk_fstab
_mk_nss
ls -l --color $MP
ls -l --color $MP/lib/security/
df | grep mnt
_rd_delete
mv /tmp/plutord $TFTP/plutord.gz
echo "ATTENTION: you must be set the ramdisk size to $IMGSIZE K"
echo "in your pxelinux configuration $TFTP"
}
_main
exit 0
*************************************
Irgendwas fehlt hier noch. Mit dem PAM kenne ich mich auch nicht
sonderlich aus, aber das bin login benötigt ja die libs. Kann mir jemand
bitte einen
kleinen Tipp geben, an welcher Stelle ich noch mal genauer lesen sollte?
Gruss + THX
Steffen