This article provides information about preparation of sealed images for Centos (Linux) and Ubuntu Virtual Machines.
Applies to MachPanel v7.2.x and onward.
Important Note:
- It is recommended to Create Virtual Machines for preparing sealed image based on Gen2 and in MachPanel also choose the option for Generation 2.
- You may download Preconfigured Gen 2 sealed images to use with MachPanel for Centos7 and Ubuntu20 from links below:
- Make sure when adding sealed image details to MachPanel for Ubuntu22, set correct "Default User" i.e. "machsol" (without quotes) if our preconfigured sealed image is used.
Pre-requisites
- While installing CentOS, for Partitioning either choose Automatically Configure Partitioning OR if you choose I will configure partitioning set the Volume Group Name as centos.
- Create a standard Centos & build
- Configure the Network - nmtui
- Install dos2unix - sudo yum install dos2unix
- Change Permissions for rc.local file to run on bootup - chmod +x /etc/rc.d/rc.local
- Remove all files from /etc/netplan/ folder (In case of Ubunto only)
​
- Make rc.local file settings like below in your sealed image. (sudo nano /etc/rd.d/rc.local)
​
================================================================================
#!/bin/bash
touch /var/lock/subsys/local
sed -n 's/;#COMMAND//p' /root/Config.bat > /root/Config.bak && mv -f /root/Config.bak /root/Config.bat && chmod 777 /root/Config.bat && dos2unix /root/Config.bat
sh /root/Config.bat
rm -f /root/Config.bat
rm -f /root/Config.bak
================================================================================
Selinux Config: Selinux Config file should contain below settings. (root\etc\SELINUX\Config)
================================================================================
​
Below are the settings which are required for preparing the Linux (Centos) Sealed image for Gen1.
- Make sure your Centos flavor supports floppy
- Create Floppy Folder under /media - mkdir /media/floppy
- Make rc.local file settings like below in your sealed image. (sudo nano /etc/rc.local)
================================================================================
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do full Sys V style init stuff.
touch /var/lock/subsys/local
insmod /lib/modules/$(uname -r)/kernel/drivers/block/floppy.ko
mount /dev/fd0 /media/floppy && mount -o remount,rw /dev/fd0
wait
sed -n 's/;#COMMAND//p' /media/floppy/Config.bat >
/media/floppy/Config.bak && mv -f /media/floppy/Config.bak
/media/floppy/Config.bat && chmod 777 /media/floppy/Config.bat
&& dos2unix /media/floppy/Config.bat
sh /media/floppy/Config.bat
rm -f /media/floppy/Config.bat
rm -f /media/floppy/Config.bak
umount -l /dev/fd0
================================================================================
Selinux Config: Selinux Config file should contain below settings. (root\etc\SELINUX\Config)
Important Note: While preparing sealed image below 2 commands need to run in Ubuntu terminal. Make sure internet is active before executing these commands:
- Sudo apt-get update
- Sudo apt-get install linux-azure
For Ubuntu Flavors / Versions with no rc.local file, following should be taken care during sealed image preparation.
=========================================================================
nano /etc/rc.local
Add following Content to rc.local file
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
touch /var/lock/subsys/local
#sed -n 's/;#COMMAND//p' /root/Config.bat > /root/Config.bak && mv -f /root/Config.bak /root/Config.bat && chmod 777 /root/Config.bat && dos2unix /root/Config.bat
sh /root/Config.bat
rm -f /root/Config.bat
#rm -f /root/Config.bak
exit 0
chmod +x /etc/rc.local
===============================================================================
- Create rc-local.service Service
========================================================================
sudo nano /etc/systemd/system/rc-local.service
Then add the following content to it
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
sudo chmod +x /etc/rc.local
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
- sudo chmod +x /etc/rc.local
- sudo systemctl enable rc-local
- sudo systemctl start rc-local.service
- sudo systemctl status rc-local.service
===============================================================================