[LinuxBIOS] buildrom support for booting Xen from LAB

Jordan Crouse jordan.crouse at amd.com
Fri Nov 9 21:23:25 CET 2007


On 08/11/07 17:03 -0500, Ward Vandewege wrote:
> This code is not very elegant, so if there are suggestions to improve it,
> please shoot!
> 
> Thanks,
> Ward.
> 
> -- 
> Ward Vandewege <ward at fsf.org>
> Free Software Foundation - Senior System Administrator

> Make lab.conf parsing a bit smarter, allowing for 2 modules to be passed to
> kexec. This allows Xen booting, for instance with this lab.conf file:
> 
> CMDLINE="com1=115200,8n1 cdb=com1"
> INITRD=""
> KERNEL="/xen-3.1.0.gz"
> MODULE1="/vmlinuz-2.6.18-xen root=/dev/md1 ro console=tty0 console=ttyS0,115200"
> MODULE2="/initrd.img-2.6.18-xen"
> VT="1"
> 
> Of course a simple lab.conf file with kernel and initrd still works:
> 
> CMDLINE="root=/dev/md1 ro console=tty0 console=ttyS0,115200"
> KERNEL="/vmlinuz-2.6.22-14-generic"
> INITRD="/initrd.img-2.6.22-14-generic"
> VT="1"
> 
> Signed-off-by: Ward Vandewege <ward at gnu.org>

Acked-by: Jordan Crouse <jordan.crouse at amd.com>

> Index: skeleton/bin/boot.functions
> ===================================================================
> --- skeleton/bin/boot.functions	(revision 54)
> +++ skeleton/bin/boot.functions	(working copy)
> @@ -26,13 +26,25 @@
>  		. $DIR/lab.conf
>  	fi
>  
> -	if [ "$INITRD" = "" ]; then
> -		$DIR/kexec -l $DIR/$KERNEL --command-line="$CMDLINE"
> -	else
> -		$DIR/kexec -l $DIR/$KERNEL --initrd=$DIR/$INITRD --command-line="$CMDLINE"
> -	fi
> +  if [ "$INITRD" = "" ] && [ "$MODULE1" = "" ]; then
> +    $DIR/kexec -l $DIR/$KERNEL --command-line="$CMDLINE"
> +  elif [ "$INITRD" != "" ] && [ "$MODULE1" = "" ]; then
> +    $DIR/kexec -l $DIR/$KERNEL --initrd=$DIR/$INITRD --command-line="$CMDLINE"
> +  elif [ "$INITRD" = "" ] && [ "$MODULE1" != "" ]; then
> +    if [ "$MODULE2" != "" ]; then
> +      $DIR/kexec -l $DIR/$KERNEL --module="$DIR/$MODULE1" --module="$DIR/$MODULE2" --command-line="$CMDLINE"
> +    else
> +      $DIR/kexec -l $DIR/$KERNEL --module="$DIR/$MODULE1" --command-line="$CMDLINE"
> +    fi
> +  elif [ "$INITRD" != "" ] && [ "$MODULE1" != "" ]; then
> +    if [ "$MODULE2" != "" ]; then
> +      $DIR/kexec -l $DIR/$KERNEL --initrd=$DIR/$INITRD --module="$DIR/$MODULE1" --module="$DIR/$MODULE2" --command-line="$CMDLINE"
> +    else
> +      $DIR/kexec -l $DIR/$KERNEL --initrd=$DIR/$INITRD --module="$DIR/$MODULE1" --command-line="$CMDLINE"
> +    fi
> +  fi
>  
>  	$DIR/kexec -e
>  
> -	message "ERROR: can't run kexec $DIR/$KERNEL $CMDLINE $INITRD"
> +	message "ERROR: can't run kexec $DIR/$KERNEL $CMDLINE $INITRD $MODULE1 $MODULE2"
>  }

> -- 
> linuxbios mailing list
> linuxbios at linuxbios.org
> http://www.linuxbios.org/mailman/listinfo/linuxbios

-- 
Jordan Crouse
Systems Software Development Engineer 
Advanced Micro Devices, Inc.






More information about the coreboot mailing list