[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [PATCH f13-branch master] Work around device node creation issues when creating EFI images. (#589680)



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ack.

On Thu, 6 May 2010, Peter Jones wrote:

For reasons of which I'm not quite certain, sometimes parted and such
don't create device mapper device nodes as I'd expect. So when we think
they should be there, run "dmsetup mknod". Also add some debug logging to
this part of the process.
---
scripts/mk-images.efi |   25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/scripts/mk-images.efi b/scripts/mk-images.efi
index 7b31ced..025f34f 100644
--- a/scripts/mk-images.efi
+++ b/scripts/mk-images.efi
@@ -19,24 +19,37 @@

makeefibootdisk()
{
-    partimg=$1
-    target=$2
+    partimg=$1 && shift
+    target=$1 && shift

    if [ ! -f $1 ]; then
        return
    fi

-    local partsize=$(ls -l $1 | awk '{ print $5; }')
+    local partsize=$(/bin/ls -l $partimg | awk '{ print $5; }')
    local disksize=$((17408 + $partsize + 17408))
    disksize=$(($disksize + $(($disksize % 512))))
    local diskimg=$(mktemp /tmp/efidisk.img.XXXXXX)
    dd if=/dev/zero of=$diskimg count=1 bs=$disksize
+    MAKEDEV /dev/loop
    local loop=$(losetup -v -f $diskimg | awk '{ print $4 }')
+    echo "loop is $loop"
+    ls -l $loop
    dmsetup create efiboot$$ --table "0 $(($disksize / 512)) linear $loop 0"
+    dmsetup mknodes efiboot$$
+    echo "efiboot$$ should exist"
+    ls -l /dev/mapper/efiboot$$*
    parted --script /dev/mapper/efiboot$$ mklabel gpt unit b mkpart '"EFI System Partition"' fat32 17408 $((17408 + $partsize)) set 1 boot on
+    dmsetup mknodes efiboot$$p1 || :
+    echo "efiboot$$p1 should exist"
+    ls -l /dev/mapper/efiboot$$*
+    dmsetup ls
+    dmsetup table
    dd if=$partimg of=/dev/mapper/efiboot$$p1
-    dmsetup remove /dev/mapper/efiboot$$p1
-    dmsetup remove /dev/mapper/efiboot$$
+    echo "dd-ing $partimg to /dev/mapper/efiboot$$p1"
+    # the next two lines seem to depend on the exact version of parted :/
+    dmsetup remove -f /dev/mapper/efiboot$$p1 || :
+    dmsetup remove -f /dev/mapper/efiboot$$
    losetup -d $loop

    mv -v $diskimg $target
@@ -127,7 +140,7 @@ prepareEfiImage() {
    # dynamically calculate the size of the dosfs
    BOOTDISKSIZE=$(du -kcs $MBD_BOOTTREE_TMP | tail -n1 | awk '{print $1}')
    BOOTDISKSIZE=$(expr $BOOTDISKSIZE + 100)
-    echo "The size of the efiboot.img dosfs is $BOOTDISKSIZE"
+    echo "The size of the efiboot.img dosfs is ${BOOTDISKSIZE}k"
    mkdosfs -n ANACONDA -C $MBD_FILENAME $BOOTDISKSIZE >/dev/null
    mount -o loop,shortname=winnt,umask=0077 -t vfat $MBD_FILENAME $MBD_BOOTTREE
    cp -R $MBD_BOOTTREE_TMP/* $MBD_BOOTTREE


- -- David Cantrell <dcantrell redhat com>
Red Hat / Honolulu, HI

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAkvjL3EACgkQ5hsjjIy1VkklDQCgjsJaMUd0ec8a7r8TkXzCJmIu
/nsAoMk5JjdDrHSqXF6qKC3VfVkqxC40
=X1HB
-----END PGP SIGNATURE-----


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]