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
lug-dd@mailman.schlittermann.de