Start a Conversation

Unsolved

This post is more than 5 years old

91032

October 22nd, 2015 08:00

Cross Post: PXE Boot into OME ?

Hi, 

 I know I can build and maintain an ISO to update systems but was wondering if anyone has setup and environment to PXE boot a Linux kernel and register the device with OME for firmware updates?

This is a provisioning, spare pool VLAN where machines DHCP into for firmware updates, inventory etc..

 Anything  you have to share would be appreciated.

3000 PowerEdge 2950 to R-class servers.   

2 Intern

 • 

615 Posts

October 22nd, 2015 10:00

I thought you used to be able to create an update task that ran against a group on a schedule but I no longer see this option in 2.1

5 Posts

November 8th, 2015 22:00

Hi @sneedy

I did it and its working quit nice.

All you need is nfs serever/share.

My configuration:

pxelinux.cfg/default

DEFAULT menu.c32
PROMPT 0
TIMEOUT 200

MENU TITLE MAIN_MENU menu

LABEL DELL Sub Menu
MENU LABEL ^DELL Firmware Upgrade
KERNEL menu.c32
APPEND dell/isolinux.cfg

ls tftpboot/dell/

isolinux.cfg  SA.1  SA.2

where SA.1(vmlinuz) and SA.2(kernel), isolinux.cfg you take from any iso generated from Dell Repository Manager, mount it under windows and copy these files

cat isolinux.cfg

MENU TITLE DELL Firmware for PowerEdge Servers

default 1
prompt 1
timeout 100
label Main Menu

MENU LABEL ^Return to Main Menu
KERNEL menu.c32
APPEND pxelinux.cfg/default

label Firmware Upgrade
MENU LABEL ^Firmware Upgrade
kernel dell/SA.1

append initrd=dell/SA.2 ramdisk_size=72399 Stage3_type=cdrom DEBUG=0 quiet BUILD=955 vmalloc=256M share_type=nfs share_location=192.168.0.1:/path_to_your_firmware/drm_files share_script=apply_bundles.sh share_opts=nolock selinux=0

modify script apply_bundles.sh also taken from iso.

I added this line after echo and before exit, so it looks like:

echo "apply_bundles.sh end time:$MY_TIME" | tee -a /bundleapplicationlogs/apply_components.log

echo "Powercycle server..." | tee -a /bundleapplicationlogs/apply_components.log
/opt/dell/toolkit/bin/syscfg --powerctl powercycle

exit "$STATUS"

My checksysid.sh script look like hits (cause i have lots of dell PE servers)

#!/bin/sh
MATCHEDBUNDLE=""
TMPSTRING=$(/opt/dell/toolkit/bin/syscfg --sysid)
SYSID=${TMPSTRING##*=}
if [ "$SYSID" == "0601" ]
then
MATCHEDBUNDLE="OME bundle for PowerEdge R630"
elif [ "$SYSID" == "0528" ]
then
MATCHEDBUNDLE="OME bundle for PowerEdge R720xd"
elif [ "$SYSID" == "04CE" ]
then
MATCHEDBUNDLE="OME bundle for PowerEdge R620"
elif [ "$SYSID" == "0235" ]
then
MATCHEDBUNDLE="OME bundle for PowerEdge R710"
else
MATCHEDBUNDLE=""
fi

Finally you have to change atribut for all of the file in drm_files katalog to be executable

ls drm_files/
apply_bundles.sh repository reserved

ls reserved/
checksysid.sh

ls repository/
OME bundle for PowerEdge FC630 OME bundle for PowerEdge R430 OME bundle for PowerEdge R610 OME bundle for PowerEdge R630 OME bundle for PowerEdge R720xd
OME bundle for PowerEdge FX2S OME bundle for PowerEdge R510 OME bundle for PowerEdge R620 OME bundle for PowerEdge R710 OME bundle for PowerEdge R730xd

The repository catalog contains firmwre you can generate from dell repostiory manager, option Create Light Weight Deployment Scripts. If there is a new version of the firmwar for your bundle you just copy whole catalog with the firmware and change permitions of files to be executable.

Write if sth i wrote is unclear.

Regards,

C4r7m4n

February 3rd, 2016 12:00

I found a couple of bugs in the apply_bundles.sh Script.

the "/path_to_your_firmware/drm_files" is mounted to "/opt/dell/toolkit/systems"

ISSUE#1
In the apply_bundles.sh script line 3:

you need to change:

SCRIPT_DIR="/opt/dell/toolkit/systems/drm_files/repository/"

To:

SCRIPT_DIR="/opt/dell/toolkit/systems/repository/"

ISSUE#2  (Same issue but different part of the code)

Change the following code

# preset matched bundle location
MATCHEDBUNDLE=""
# execute check sysid script if the script is found
if [ -f "/opt/dell/toolkit/systems/drm_files/reserved/checksysid.sh" ]
then
. "/opt/dell/toolkit/systems/drm_files/reserved/checksysid.sh"
fi

TO:

# preset matched bundle location
MATCHEDBUNDLE=""
# execute check sysid script if the script is found
if [ -f "/opt/dell/toolkit/systems/reserved/checksysid.sh" ]
then
. "/opt/dell/toolkit/systems/reserved/checksysid.sh"
fi

 


Now when you pXe to the firmware it will properly detect your SYSID and apply the correct bundle.

Enjoy

No Events found!

Top