Loop device - loop1p1 Problem

Hey,

ich hab unter Ubuntu 12.10 an meinem normalen Rechner ein kleines Script geschrieben, bei dem eine eigene, virtuelle HDD angelegt wird und in diese dann Grub installiert wird, Kernel reinkopiert und das initramfs. Funktioniert eigentlich auch. Allerdings ist das jetzt schon 2 Monate her.
Aktuell sitze ich gerade an einem Rechner mit 12.04 und brauche die Funktionalität des Scripts. Nunja, es geht nicht mehr :)
Problem ist, das /dev/mapper/loop1p1 irgendwie fehlt, ich hab gerade keine Erinnerung mehr dran obs da schon bei meinem eigentlichen Rechner Probleme gab.
Hier mal das Script:

Code:
#!/bin/bash

# $1 hdd groesse
# $2 pfad + name des kernels z.B. /home/dev/linux1247/arch/x86/boot/bzImage
# $4 pfad zum initramfs. sollte als initramfs.igz gespeichert sein
# $3 welche VM software gestartet werden soll


# user is root?
if (( $(id -u) != 0 ))
then
    echo "ERROR: This script must be run as root" 1>&2
    exit 1
fi

# create disk
dd if=/dev/zero of=lfs.img bs=1024 count=$1
losetup /dev/loop1 lfs.img
# fdisk /dev/loop1

cat <<EOF | fdisk /dev/loop1
n
p
1


w
EOF

# partitionstabelle neu einlesen
kpartx -v -a /dev/loop1
# formatieren als ext2
mke2fs /dev/mapper/loop1p1

# mouten
mount /dev/mapper/loop1p1 /mnt

#grub installieren
echo 'install grub...'
grub-install --root-directory=/mnt /dev/loop1
echo 'DONE!'
umount /mnt
losetup -d /dev/mapper/loop1p1

# neu erstellte HDD unter /mnt mounten
losetup /dev/loop1 lfs.img
echo 'Mount Image to /mnt'
mount /dev/mapper/loop1p1 /mnt
echo 'Done!'

#copy kernel to /mnt/bzImage
cp $2 /mnt/bzImage

# initramfs erstellen
mkdir rootfs
cd rootfs
mkdir dev
mkdir bin
mknod dev/console c 5 1
mknod dev/tty2 c 4 2
mknod dev/tty3 c 4 3
mknod dev/tty4 c 4 4
cp /bin/busybox  bin/busybox
ln -s bin/busybox init
cd bin
ln -s busybox sh
cd ..
find . | cpio -o -H newc | gzip > ../initramfs.cpio.gz

# copy initramfs to VM-HDD
cp ../initramfs.cpio.gz /mnt/initramfs.cpio.gz

cd ..
rm -r rootfs
rm initramfs.cpio.gz

# gedit /mnt/boot/grub/grub.cfg
# grub menu erstellen
touch /mnt/boot/grub/grub.cfg

echo "menuentry \"Linux\" {" >> /mnt/boot/grub/grub.cfg
echo "insmod ext2" >> /mnt/boot/grub/grub.cfg
echo "set root=(hd0,1)" >> /mnt/boot/grub/grub.cfg
echo "linux /bzImage root=/dev/hda1 ro" >> /mnt/boot/grub/grub.cfg
echo "initrd /initramfs.cpio.gz" >> /mnt/boot/grub/grub.cfg
echo "}" >> /mnt/boot/grub/grub.cfg

# HDD wieder aushaengen
umount /mnt
losetup -d /dev/mapper/loop1p1


if [ $3 = "qemu" ];
then
	# qemu starten
	qemu-system-i386  lfs.img
else
	if [ $3 = "vmware" ];
	then
		echo "VMWare should be executet!"
	else
		if [ $3 = "vbox" ];
		then
			# pruefen ob lfs.vdi schon existiert und ggf loeschen
			if [ -f "lfs.vdi" ];
			then
        			rm lfs.vdi
				# evtl so besser zu loeschen?
				# VBoxManage unregistervm lfs --delete
				rm -r /root/.VirtualBox/lfs
    			fi
			# convert img to vdi
			VBoxManage convertfromraw lfs.img lfs.vdi
			# create vbox
			VBoxManage createvm --name lfs --ostype Linux26 --register --basefolder .
			# add lfs.vdi to vbox "lfs"
			echo "Add HDD"
			VBoxManage storagectl "lfs" --name "IDE Controller" --add ide --controller PIIX4
			VBoxManage storageattach "lfs" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "lfs.vdi"
			echo "DONE!"
			VirtualBox --startvm lfs
			
		fi
	fi

fi
 
Wenn ein /dev/mapper/*-Device fehlt, dann liegt das zumeist daran, dass die Festplatte nicht mit LVM eingerichtet ist und/oder dass keine Device-Map aus den Partitionen erstellt wurde (was bei loop1p1 vermutlich eher der Fall ist). Schau dir kpartx o.ä. an und erstelle dir eine Device-Map.
 
Zurück
Oben