aboutsummaryrefslogtreecommitdiff
path: root/docker-extras
diff options
context:
space:
mode:
Diffstat (limited to 'docker-extras')
-rw-r--r--docker-extras/imagebuilder_run154
1 files changed, 51 insertions, 103 deletions
diff --git a/docker-extras/imagebuilder_run b/docker-extras/imagebuilder_run
index df2441b..ab0cbe4 100644
--- a/docker-extras/imagebuilder_run
+++ b/docker-extras/imagebuilder_run
@@ -1,132 +1,79 @@
#!/bin/bash
offset=$((2*1024*1024))
+filesize=0
function add_device_tree_kernel()
{
- local addr=$1
- local size=$2
-
- echo " module@$addr {" >> $temp
- echo " compatible = \"multiboot,kernel\", \"multiboot,module\";" >> $temp
- echo " reg = <0x0 "$addr" 0x0 "$size">;" >> $temp
- echo " bootargs = \"console=ttyAMA0\";" >> $temp
- echo " };" >> $temp
+ local path=$1
+ local addr=$2
+ local size=$3
+
+ echo "fdt mknod $path module$addr" >> $UBOOT_SOURCE
+ echo "fdt set $path/module$addr compatible \"multiboot,kernel\" \"multiboot,module\"" >> $UBOOT_SOURCE
+ echo "fdt set $path/module$addr reg <0x0 "$addr" 0x0 "$size">" >> $UBOOT_SOURCE
+ echo "fdt set $path/module$addr bootargs \"console=ttyAMA0\"" >> $UBOOT_SOURCE
}
function add_device_tree_ramdisk()
{
- local addr=$1
- local size=$2
+ local path=$1
+ local addr=$2
+ local size=$3
- echo " module@$addr {" >> $temp
- echo " compatible = \"multiboot,ramdisk\", \"multiboot,module\";" >> $temp
- echo " reg = <0x0 "$addr" 0x0 "$size">;" >> $temp
- echo " };" >> $temp
+ echo "fdt mknod $path module$addr" >> $UBOOT_SOURCE
+ echo "fdt set $path/module$addr compatible \"multiboot,ramdisk\" \"multiboot,module\"" >> $UBOOT_SOURCE
+ echo "fdt set $path/module$addr reg <0x0 "$addr" 0x0 "$size">" >> $UBOOT_SOURCE
}
function add_device_tree_passthrough()
{
- local addr=$1
- local size=$2
+ local path=$1
+ local addr=$2
+ local size=$3
- echo " module@$addr {" >> $temp
- echo " compatible = \"multiboot,device-tree\", \"multiboot,module\";" >> $temp
- echo " reg = <0x0 "$addr" 0x0 "$size">;" >> $temp
- echo " };" >> $temp
+ echo "fdt mknod $path module$addr" >> $UBOOT_SOURCE
+ echo "fdt set $path/module$addr compatible \"multiboot,device-tree\" \"multiboot,module\"" >> $UBOOT_SOURCE
+ echo "fdt set $path/module$addr reg <0x0 "$addr" 0x0 "$size">" >> $UBOOT_SOURCE
}
-function add_device_tree()
+function device_tree_editing()
{
- local i=0
- local filename=$1
-
- echo " #address-cells = <0x2>;" >> $temp
- echo " #size-cells = <0x2>;" >> $temp
- echo " xen,xen-bootargs = \"console=dtuart dtuart=serial0 dom0_mem=700M dom0_max_vcpus=1 bootscrub=0 serrors=forward vwfi=native sched=null\";" >> $temp
- echo " dom0 {" >> $temp
- echo " compatible = \"xen,linux-zimage\", \"xen,multiboot-module\";" >> $temp
- echo " reg = <0x0 "$dom0_kernel_addr" 0x0 "$dom0_kernel_size">;" >> $temp
- echo " bootargs = \"console=hvc0 earlycon=xen earlyprintk=xen\";" >> $temp
- echo " };" >> $temp
-
+ local device_tree_addr=$1
+
+ echo "fdt addr $device_tree_addr" >> $UBOOT_SOURCE
+ echo "fdt resize" >> $UBOOT_SOURCE
+ echo "fdt set /chosen \#address-cells <0x2>" >> $UBOOT_SOURCE
+ echo "fdt set /chosen \#size-cells <0x2>" >> $UBOOT_SOURCE
+ echo "fdt set /chosen xen,xen-bootargs \"console=dtuart dtuart=serial0 dom0_mem=700M dom0_max_vcpus=1 bootscrub=0 serrors=forward vwfi=native sched=null\"" >> $UBOOT_SOURCE
+ echo "fdt mknod /chosen dom0" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/dom0 compatible \"xen,linux-zimage\" \"xen,multiboot-module\"" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/dom0 reg <0x0 "$dom0_kernel_addr" 0x0 "$dom0_kernel_size">" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/dom0 bootargs \"console=hvc0 earlycon=xen earlyprintk=xen\"" >> $UBOOT_SOURCE
+
+ i=0
while test $i -lt $NUM_DOMUS
do
- echo " domU$i {" >> $temp
- echo " compatible = \"xen,domain\";" >> $temp
- echo " #address-cells = <0x2>;" >> $temp
- echo " #size-cells = <0x2>;" >> $temp
- echo " memory = <0x0 0x20000>;" >> $temp
- echo " cpus = <0x1>;" >> $temp
- echo " vpl011;" >> $temp
- add_device_tree_kernel ${domU_kernel_addr[$i]} ${domU_kernel_size[$i]}
+ echo "fdt mknod /chosen domU$i" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/domU$i compatible \"xen,domain\"" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/domU$i \#address-cells <0x2>" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/domU$i \#size-cells <0x2>" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/domU$i memory <0x0 0x40000>" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/domU$i cpus <0x1>" >> $UBOOT_SOURCE
+ echo "fdt set /chosen/domU$i vpl011 <0x1>" >> $UBOOT_SOURCE
+ add_device_tree_kernel "/chosen/domU$i" ${domU_kernel_addr[$i]} ${domU_kernel_size[$i]}
if test "${domU_ramdisk_addr[$i]}"
then
- add_device_tree_ramdisk ${domU_ramdisk_addr[$i]} ${domU_ramdisk_size[$i]}
+ add_device_tree_ramdisk "/chosen/domU$i" ${domU_ramdisk_addr[$i]} ${domU_ramdisk_size[$i]}
fi
if test "${domU_passthrough_dtb_addr[$i]}"
then
- add_device_tree_passthrough ${domU_passthrough_dtb_addr[$i]} ${domU_passthrough_dtb_size[$i]}
+ add_device_tree_passthrough "/chosen/domU$i" ${domU_passthrough_dtb_addr[$i]} ${domU_passthrough_dtb_size[$i]}
fi
- echo " };" >> $temp
i=$(( $i + 1 ))
done
}
-function filter_device_tree()
-{
- local filename_dtb=$1
- local filename_dts="`basename -s .dtb $filename_dtb`".dts
- local temp=`mktemp`
-
- local skip=0
- local chosen=0
-
- mv -f $filename_dts "$filename_dts".bak &> /dev/null
- dtc -I dtb -O dts $filename_dtb > $filename_dts 2>/dev/null
-
- while IFS= read -r line
- do
- if [[ $line == *"chosen"* ]]
- then
- chosen=1
- fi
- if [[ $chosen -eq 1 && ($line == *"address-cells"* || $line == *"size-cells"*) ]]
- then
- continue
- fi
- if [[ $line == *"dom0"* || $line == *"domU"* ]]
- then
- skip=1
- continue
- fi
- if [[ $skip -eq 1 && $line == *"{"* ]]
- then
- skip=2
- fi
- if [[ $skip -gt 0 && $line == *"};"* ]]
- then
- skip=$(( $skip - 1 ))
- continue
- fi
- if [[ $chosen -eq 1 && $skip -eq 0 && $line == *"};"* ]]
- then
- chosen=0;
- add_device_tree
- fi
-
- if [[ $skip -eq 0 ]]
- then
- echo "$line" >> $temp
- fi
-
- done < $filename_dts
-
- mv -f $filename_dtb "$filename_dtb".bak
- dtc -I dts -O dtb $temp > $filename_dtb 2>/dev/null
- mv $temp $filename_dts
-}
-
function add_size()
{
local filename=$1
@@ -134,6 +81,7 @@ function add_size()
memaddr=$(( $memaddr + $size + $offset - 1))
memaddr=$(( $memaddr & ~($offset - 1) ))
memaddr=`printf "0x%X\n" $memaddr`
+ filesize=$size
}
function load_file()
@@ -207,28 +155,28 @@ do
check_compressed_file_type ${DOMU_KERNEL[$i]} "MS-DOS executable"
domU_kernel_addr[$i]=$memaddr
load_file ${DOMU_KERNEL[$i]}
- domU_kernel_size[$i]=$(( $memaddr - ${domU_kernel_addr[$i]} ))
+ domU_kernel_size[$i]=$filesize
if test "${DOMU_RAMDISK[$i]}"
then
check_compressed_file_type ${DOMU_RAMDISK[$i]} "cpio archive"
domU_ramdisk_addr[$i]=$memaddr
load_file ${DOMU_RAMDISK[$i]}
- domU_ramdisk_size[$i]=$(( $memaddr - ${domU_ramdisk_addr[$i]} ))
+ domU_ramdisk_size[$i]=$filesize
fi
if test "${DOMU_PASSTHROUGH_DTB[$i]}"
then
check_compressed_file_type ${DOMU_PASSTHROUGH_DTB[$i]} "Device Tree Blob"
domU_passthrough_dtb_addr[$i]=$memaddr
load_file ${DOMU_PASSTHROUGH_DTB[$i]}
- domU_passthrough_dtb_size[$i]=$(( $memaddr - ${domU_passthrough_dtb_addr[$i]} ))
+ domU_passthrough_dtb_size[$i]=$filesize
fi
i=$(( $i + 1 ))
done
check_file_type $DEVICE_TREE "Device Tree Blob"
-filter_device_tree $DEVICE_TREE
device_tree_addr=$memaddr
load_file $DEVICE_TREE
+device_tree_editing $device_tree_addr
memaddr=$(( $MEMORY_END - $memaddr ))
if test $memaddr -lt 0
@@ -239,7 +187,7 @@ fi
echo "bootm $xen_addr $dom0_ramdisk_addr $device_tree_addr" >> $UBOOT_SOURCE
-memaddr=$(( $memaddr + $offset ))
+memaddr=$(( $memaddr + $offset + $offset ))
memaddr=`printf "0x%X\n" $memaddr`
uboot_addr="$memaddr"
mkimage -A arm64 -T script -C none -a $uboot_addr -e $uboot_addr -d $UBOOT_SOURCE "$UBOOT_SCRIPT" &> /dev/null