refs #596 simplify some variables, pass parameters to functions
parent
866cdb4d86
commit
5ecf9f3b2a
|
@ -12,20 +12,16 @@ from . import utils
|
||||||
logger = logging.getLogger ('boottools')
|
logger = logging.getLogger ('boottools')
|
||||||
|
|
||||||
def GetVar (osarch):
|
def GetVar (osarch):
|
||||||
btdir = '/tmp/opengnsys/oglive_builder'
|
|
||||||
bttargetdir = '/var/lib/tftpboot/ogclient/'
|
bttargetdir = '/var/lib/tftpboot/ogclient/'
|
||||||
btrootfsimg = os.path.join (bttargetdir, 'ogclient.img')
|
btrootfsimg = os.path.join (bttargetdir, 'ogclient.img')
|
||||||
btrootfsmnt = os.path.join (bttargetdir, 'ogclientmount')
|
btrootfsmnt = os.path.join (bttargetdir, 'ogclientmount')
|
||||||
btrootfsimglabel = 'ogClient'
|
|
||||||
log_file = '/tmp/boot-tools_installation.log'
|
|
||||||
versionboottools = 'ogLive'
|
|
||||||
if 'i386' == osarch:
|
if 'i386' == osarch:
|
||||||
btvirtualdisksize = '2000' # tamaño maximo limitado por schroot 2GB para 32 bits
|
btvirtualdisksize = '2000' # tamaño maximo limitado por schroot 2GB para 32 bits
|
||||||
else:
|
else:
|
||||||
btvirtualdisksize = '3G'
|
btvirtualdisksize = '3G'
|
||||||
return btdir, bttargetdir, btrootfsimg, btrootfsmnt, btrootfsimglabel, log_file, versionboottools, btvirtualdisksize
|
return bttargetdir, btrootfsimg, btrootfsmnt, btvirtualdisksize
|
||||||
|
|
||||||
def GetOsInfo1 (type_client):
|
def GetOsInfo (type_client):
|
||||||
if 'precise' == type_client: # ogLive 1.0.4-rc2 basado en Ubuntu 12.04 LTS.
|
if 'precise' == type_client: # ogLive 1.0.4-rc2 basado en Ubuntu 12.04 LTS.
|
||||||
osdistrib='ubuntu'
|
osdistrib='ubuntu'
|
||||||
oscodename='precise'
|
oscodename='precise'
|
||||||
|
@ -131,11 +127,6 @@ def GetOsInfo1 (type_client):
|
||||||
oshttp=None
|
oshttp=None
|
||||||
return osdistrib, oscodename, osrelease, osarch, oshttp
|
return osdistrib, oscodename, osrelease, osarch, oshttp
|
||||||
|
|
||||||
def GetOsInfo2 (versionboottools, oscodename, osrelease, osarch, gitrelease):
|
|
||||||
nameisoclient ='-'.join ([versionboottools, oscodename, osrelease, osarch, gitrelease])
|
|
||||||
namehostclient = '-'.join ([versionboottools, oscodename, gitrelease])
|
|
||||||
return nameisoclient, namehostclient
|
|
||||||
|
|
||||||
def mkrootfs (btrootfsimg, btrootfsimglabel, btrootfsmnt, btvirtualdisksize, bttargetdir, osarch):
|
def mkrootfs (btrootfsimg, btrootfsimglabel, btrootfsmnt, btvirtualdisksize, bttargetdir, osarch):
|
||||||
logger.info (f'Creación y formateo del disco virtual "{btrootfsimg}" "{btvirtualdisksize}" MB')
|
logger.info (f'Creación y formateo del disco virtual "{btrootfsimg}" "{btvirtualdisksize}" MB')
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[General]
|
[General]
|
||||||
|
|
||||||
logging_level = INFO
|
logging_level = INFO
|
||||||
|
rootfs_image_label = ogClient
|
||||||
|
|
||||||
debconf_settings =
|
debconf_settings =
|
||||||
kexec-tools kexec-tools/load_kexec boolean true
|
kexec-tools kexec-tools/load_kexec boolean true
|
||||||
|
|
55
mkoglive.py
55
mkoglive.py
|
@ -15,7 +15,7 @@ from boottools import utils, apt, btog
|
||||||
|
|
||||||
os.chdir (curdir)
|
os.chdir (curdir)
|
||||||
|
|
||||||
def _logging (lvl='INFO'):
|
def _logging (lvl='INFO', logfile='/tmp/boot-tools_installation.log'):
|
||||||
numeric_level = getattr (logging, lvl.upper(), None)
|
numeric_level = getattr (logging, lvl.upper(), None)
|
||||||
if numeric_level is None:
|
if numeric_level is None:
|
||||||
numeric_level = getattr (logging, 'INFO')
|
numeric_level = getattr (logging, 'INFO')
|
||||||
|
@ -24,7 +24,7 @@ def _logging (lvl='INFO'):
|
||||||
format='%(levelname)s %(asctime)s (%(funcName)s) %(message)s',
|
format='%(levelname)s %(asctime)s (%(funcName)s) %(message)s',
|
||||||
level=numeric_level,
|
level=numeric_level,
|
||||||
handlers = [
|
handlers = [
|
||||||
logging.FileHandler ('/tmp/boot-tools_installation.log'),
|
logging.FileHandler (logfile),
|
||||||
logging.StreamHandler (sys.stdout),
|
logging.StreamHandler (sys.stdout),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -49,8 +49,8 @@ def _get_pxepkg():
|
||||||
logger.info (f'PXE package is "{pxepkg}"')
|
logger.info (f'PXE package is "{pxepkg}"')
|
||||||
return pxepkg
|
return pxepkg
|
||||||
|
|
||||||
def _mkrootfs():
|
def _mkrootfs (btrootfsimg, btrootfsmnt, btrootfsimglabel, btvirtualdisksize, bttargetdir, osarch):
|
||||||
logger.info ('Stage 3.1 - create, partition and format the rootfs')
|
logger.info ('Stage 1.1 - create, partition and format the rootfs')
|
||||||
rc = subprocess.run (f'file "{btrootfsimg}" |grep -q "partition 1 *: ID=0x83"', shell=True).returncode
|
rc = subprocess.run (f'file "{btrootfsimg}" |grep -q "partition 1 *: ID=0x83"', shell=True).returncode
|
||||||
if (rc): ## 'file|grep' failed
|
if (rc): ## 'file|grep' failed
|
||||||
try: btog.mkrootfs (btrootfsimg, btrootfsimglabel, btrootfsmnt, btvirtualdisksize, bttargetdir, osarch)
|
try: btog.mkrootfs (btrootfsimg, btrootfsimglabel, btrootfsmnt, btvirtualdisksize, bttargetdir, osarch)
|
||||||
|
@ -61,8 +61,8 @@ def _mkrootfs():
|
||||||
## para hacer schroot --cosas, el mntpt tiene que estar desmontado
|
## para hacer schroot --cosas, el mntpt tiene que estar desmontado
|
||||||
## si está montado da un pete tal que 'E: 10mount: mount: /run/schroot/mount/IMGogclient-7fbf51a2-e37e-48e5-8e5d-83f8901fc7ed: wrong fs type, bad option, bad superblock on /dev/loop1, missing codepage or helper program, or other error.'
|
## si está montado da un pete tal que 'E: 10mount: mount: /run/schroot/mount/IMGogclient-7fbf51a2-e37e-48e5-8e5d-83f8901fc7ed: wrong fs type, bad option, bad superblock on /dev/loop1, missing codepage or helper program, or other error.'
|
||||||
|
|
||||||
def _debootstrap():
|
def _debootstrap (btrootfsimg, btrootfsmnt, osarch, oscodename, oshttp):
|
||||||
logger.info ('Stage 3.2 - debootstrap system')
|
logger.info ('Stage 1.2 - debootstrap system')
|
||||||
logger.debug ('Try creation of a file within chroot (this operation may fail with "... etc/resolv.conf: No such file or directory"--that is ok)')
|
logger.debug ('Try creation of a file within chroot (this operation may fail with "... etc/resolv.conf: No such file or directory"--that is ok)')
|
||||||
logger.debug ('Running \'schroot --chroot IMGogclient -- stat /etc\'')
|
logger.debug ('Running \'schroot --chroot IMGogclient -- stat /etc\'')
|
||||||
cp = subprocess.run (['schroot', '--chroot', 'IMGogclient', '--', 'stat', '/etc'])
|
cp = subprocess.run (['schroot', '--chroot', 'IMGogclient', '--', 'stat', '/etc'])
|
||||||
|
@ -75,10 +75,10 @@ def _debootstrap():
|
||||||
sys.exit (1)
|
sys.exit (1)
|
||||||
|
|
||||||
# Incluir revisión.
|
# Incluir revisión.
|
||||||
def _initramfs_version (gitrelease, osrelease, btdir):
|
def _initramfs_version (gitrelease, osrelease, curdir):
|
||||||
## FIXME esto la incluye incondicionalmente, y luego terminamos con "OpenGnsys Client 1.2.0-rc1 gitrelease (osrelease) gitrelease (osrelease) gitrelease (osrelease) gitrelease (osrelease) gitrelease (osrelease) gitrelease (osrelease) ..."
|
## FIXME esto la incluye incondicionalmente, y luego terminamos con "OpenGnsys Client 1.2.0-rc1 gitrelease (osrelease) gitrelease (osrelease) gitrelease (osrelease) gitrelease (osrelease) gitrelease (osrelease) gitrelease (osrelease) ..."
|
||||||
#sed -i "1 s/$/ $GITRELEASE ($OSRELEASE)/" ${BTDIR}/includes/etc/initramfs-tools/scripts/VERSION.txt
|
#sed -i "1 s/$/ $GITRELEASE ($OSRELEASE)/" ${BTDIR}/includes/etc/initramfs-tools/scripts/VERSION.txt
|
||||||
utils.run (['sed', '-i', f'1 s/$/ {gitrelease} ({osrelease})/', f'{btdir}/includes/etc/initramfs-tools/scripts/VERSION.txt'])
|
utils.run (['sed', '-i', f'1 s/$/ {gitrelease} ({osrelease})/', f'{curdir}/includes/etc/initramfs-tools/scripts/VERSION.txt'])
|
||||||
|
|
||||||
def _copy_og_files (btrootfsmnt, osdistrib, oscodename):
|
def _copy_og_files (btrootfsmnt, osdistrib, oscodename):
|
||||||
_mount_rootfs()
|
_mount_rootfs()
|
||||||
|
@ -93,7 +93,7 @@ def _chroot_tasks (curdir, osrelease, osarch):
|
||||||
stdout, _ = utils.run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/chroot-tasks.py', '--osrelease', osrelease, '--osarch', osarch, '--config', args.config or 'mkoglive.cfg'])
|
stdout, _ = utils.run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/chroot-tasks.py', '--osrelease', osrelease, '--osarch', osarch, '--config', args.config or 'mkoglive.cfg'])
|
||||||
## esto deja initrd.img-6.8.0-31-generic y vmlinuz-6.8.0-31-generic en /tmp
|
## esto deja initrd.img-6.8.0-31-generic y vmlinuz-6.8.0-31-generic en /tmp
|
||||||
|
|
||||||
def _ssh_stuff():
|
def _ssh_stuff (btrootfsmnt):
|
||||||
_mount_rootfs()
|
_mount_rootfs()
|
||||||
btog.ssh_server (btrootfsmnt)
|
btog.ssh_server (btrootfsmnt)
|
||||||
btog.ssh_client (btrootfsmnt)
|
btog.ssh_client (btrootfsmnt)
|
||||||
|
@ -104,15 +104,15 @@ def _ssh_stuff():
|
||||||
## - las dos claves públicas (una de cada par) están autorizadan en el rootfs /var/lib/tftpboot/ogclient/ogclientmount/root/.ssh/authorized_keys
|
## - las dos claves públicas (una de cada par) están autorizadan en el rootfs /var/lib/tftpboot/ogclient/ogclientmount/root/.ssh/authorized_keys
|
||||||
|
|
||||||
def _mkinitrd_squashfs_isofs (bttargetdir, osrelease, btrootfsmnt, pxepkg, isolinux_tpl, nameisoclient):
|
def _mkinitrd_squashfs_isofs (bttargetdir, osrelease, btrootfsmnt, pxepkg, isolinux_tpl, nameisoclient):
|
||||||
logger.info ('Stage 6.1 - Put initrd in place')
|
logger.info ('Stage 4.1 - Put initrd in place')
|
||||||
_mount_rootfs()
|
_mount_rootfs()
|
||||||
btog.move_initrd (bttargetdir, osrelease)
|
btog.move_initrd (bttargetdir, osrelease)
|
||||||
|
|
||||||
logger.info ('Stage 6.2 - make squash filesystem')
|
logger.info ('Stage 4.2 - make squash filesystem')
|
||||||
btog.mksquashfs (bttargetdir, btrootfsmnt)
|
btog.mksquashfs (bttargetdir, btrootfsmnt)
|
||||||
utils.umount (btrootfsmnt)
|
utils.umount (btrootfsmnt)
|
||||||
|
|
||||||
logger.info ('Stage 6.3 - make iso filesystem')
|
logger.info ('Stage 4.3 - make iso filesystem')
|
||||||
btog.mkisofs (pxepkg, isolinux_tpl, bttargetdir, nameisoclient)
|
btog.mkisofs (pxepkg, isolinux_tpl, bttargetdir, nameisoclient)
|
||||||
|
|
||||||
|
|
||||||
|
@ -127,6 +127,7 @@ if config is None:
|
||||||
sys.exit (1)
|
sys.exit (1)
|
||||||
isolinux_tpl = config['General'].get ('isolinux_template')
|
isolinux_tpl = config['General'].get ('isolinux_template')
|
||||||
cfg_loglevel = config['General'].get ('logging_level')
|
cfg_loglevel = config['General'].get ('logging_level')
|
||||||
|
btrootfsimglabel = config['General'].get ('rootfs_image_label')
|
||||||
|
|
||||||
logger = _logging (args.loglevel or cfg_loglevel)
|
logger = _logging (args.loglevel or cfg_loglevel)
|
||||||
type_client = args.codename or 'host'
|
type_client = args.codename or 'host'
|
||||||
|
@ -141,37 +142,33 @@ except: pass
|
||||||
|
|
||||||
logger.info ('OpenGnsys CLIENT installation begins')
|
logger.info ('OpenGnsys CLIENT installation begins')
|
||||||
|
|
||||||
logger.info ('STAGE 1 - clone opengnsys repo')
|
|
||||||
|
|
||||||
fd = open (f'{curdir}/gitrelease', 'r') ## per the Dockerfile
|
fd = open (f'{curdir}/gitrelease', 'r') ## per the Dockerfile
|
||||||
gitrelease = fd.readline().strip()
|
gitrelease = fd.readline().strip()
|
||||||
fd.close()
|
fd.close()
|
||||||
|
|
||||||
osdistrib, oscodename, osrelease, osarch, oshttp = btog.GetOsInfo1 (type_client)
|
osdistrib, oscodename, osrelease, osarch, oshttp = btog.GetOsInfo (type_client)
|
||||||
if osdistrib is None:
|
if osdistrib is None:
|
||||||
logger.error ('GetOsInfo1() failed')
|
logger.error ('GetOsInfo() failed')
|
||||||
sys.exit (1)
|
sys.exit (1)
|
||||||
btdir, bttargetdir, btrootfsimg, btrootfsmnt, btrootfsimglabel, log_file, versionboottools, btvirtualdisksize = btog.GetVar (osarch)
|
bttargetdir, btrootfsimg, btrootfsmnt, btvirtualdisksize = btog.GetVar (osarch)
|
||||||
nameisoclient, namehostclient = btog.GetOsInfo2 (versionboottools, oscodename, osrelease, osarch, gitrelease)
|
|
||||||
logger.info (':'.join ([osdistrib, oscodename, osrelease, osarch, oshttp]))
|
logger.info (':'.join ([osdistrib, oscodename, osrelease, osarch, oshttp]))
|
||||||
|
|
||||||
logger.info ('STAGE 2 - install software in the VM')
|
logger.info ('STAGE 1 - create and bootstrap rootfs')
|
||||||
pxepkg = _get_pxepkg()
|
_mkrootfs (btrootfsimg, btrootfsmnt, btrootfsimglabel, btvirtualdisksize, bttargetdir, osarch)
|
||||||
|
_debootstrap (btrootfsimg, btrootfsmnt, osarch, oscodename, oshttp)
|
||||||
|
|
||||||
logger.info ('STAGE 3 - create and bootstrap rootfs')
|
logger.info ('STAGE 2 - copy files to the rootfs')
|
||||||
_mkrootfs()
|
_initramfs_version (gitrelease, osrelease, curdir)
|
||||||
_debootstrap()
|
|
||||||
|
|
||||||
logger.info ('STAGE 4 - copy files to the rootfs')
|
|
||||||
_initramfs_version (gitrelease, osrelease, btdir)
|
|
||||||
_copy_og_files (btrootfsmnt, osdistrib, oscodename)
|
_copy_og_files (btrootfsmnt, osdistrib, oscodename)
|
||||||
|
|
||||||
logger.info ('STAGE 5 - perform tasks within the chroot')
|
logger.info ('STAGE 3 - perform tasks within the chroot')
|
||||||
_chroot_tasks (curdir, osrelease, osarch)
|
_chroot_tasks (curdir, osrelease, osarch)
|
||||||
|
|
||||||
_ssh_stuff()
|
_ssh_stuff (btrootfsmnt)
|
||||||
|
|
||||||
logger.info ('STAGE 6 - generate distribution files')
|
logger.info ('STAGE 4 - generate distribution files')
|
||||||
|
pxepkg = _get_pxepkg()
|
||||||
|
nameisoclient = '-'.join (['ogLive', oscodename, osrelease, osarch, gitrelease])
|
||||||
_mkinitrd_squashfs_isofs (bttargetdir, osrelease, btrootfsmnt, pxepkg, isolinux_tpl, nameisoclient)
|
_mkinitrd_squashfs_isofs (bttargetdir, osrelease, btrootfsmnt, pxepkg, isolinux_tpl, nameisoclient)
|
||||||
|
|
||||||
logger.info ('OpenGnsys installation finished')
|
logger.info ('OpenGnsys installation finished')
|
||||||
|
|
Loading…
Reference in New Issue