From 5ecf9f3b2af51b5dd569a94749dba1f809819c53 Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Tue, 20 Aug 2024 12:54:50 +0200 Subject: [PATCH] refs #596 simplify some variables, pass parameters to functions --- boottools/btog.py | 13 ++--------- mkoglive.cfg | 1 + mkoglive.py | 55 ++++++++++++++++++++++------------------------- 3 files changed, 29 insertions(+), 40 deletions(-) diff --git a/boottools/btog.py b/boottools/btog.py index 5e2218b..f42c001 100644 --- a/boottools/btog.py +++ b/boottools/btog.py @@ -12,20 +12,16 @@ from . import utils logger = logging.getLogger ('boottools') def GetVar (osarch): - btdir = '/tmp/opengnsys/oglive_builder' bttargetdir = '/var/lib/tftpboot/ogclient/' btrootfsimg = os.path.join (bttargetdir, 'ogclient.img') btrootfsmnt = os.path.join (bttargetdir, 'ogclientmount') - btrootfsimglabel = 'ogClient' - log_file = '/tmp/boot-tools_installation.log' - versionboottools = 'ogLive' if 'i386' == osarch: btvirtualdisksize = '2000' # tamaño maximo limitado por schroot 2GB para 32 bits else: 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. osdistrib='ubuntu' oscodename='precise' @@ -131,11 +127,6 @@ def GetOsInfo1 (type_client): oshttp=None 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): logger.info (f'Creación y formateo del disco virtual "{btrootfsimg}" "{btvirtualdisksize}" MB') diff --git a/mkoglive.cfg b/mkoglive.cfg index 708a93a..16507d7 100644 --- a/mkoglive.cfg +++ b/mkoglive.cfg @@ -1,6 +1,7 @@ [General] logging_level = INFO +rootfs_image_label = ogClient debconf_settings = kexec-tools kexec-tools/load_kexec boolean true diff --git a/mkoglive.py b/mkoglive.py index 58e24ad..71a7f37 100755 --- a/mkoglive.py +++ b/mkoglive.py @@ -15,7 +15,7 @@ from boottools import utils, apt, btog os.chdir (curdir) -def _logging (lvl='INFO'): +def _logging (lvl='INFO', logfile='/tmp/boot-tools_installation.log'): numeric_level = getattr (logging, lvl.upper(), None) if numeric_level is None: numeric_level = getattr (logging, 'INFO') @@ -24,7 +24,7 @@ def _logging (lvl='INFO'): format='%(levelname)s %(asctime)s (%(funcName)s) %(message)s', level=numeric_level, handlers = [ - logging.FileHandler ('/tmp/boot-tools_installation.log'), + logging.FileHandler (logfile), logging.StreamHandler (sys.stdout), ], ) @@ -49,8 +49,8 @@ def _get_pxepkg(): logger.info (f'PXE package is "{pxepkg}"') return pxepkg -def _mkrootfs(): - logger.info ('Stage 3.1 - create, partition and format the rootfs') +def _mkrootfs (btrootfsimg, btrootfsmnt, btrootfsimglabel, btvirtualdisksize, bttargetdir, osarch): + 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 if (rc): ## 'file|grep' failed 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 ## 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(): - logger.info ('Stage 3.2 - debootstrap system') +def _debootstrap (btrootfsimg, btrootfsmnt, osarch, oscodename, oshttp): + 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 ('Running \'schroot --chroot IMGogclient -- stat /etc\'') cp = subprocess.run (['schroot', '--chroot', 'IMGogclient', '--', 'stat', '/etc']) @@ -75,10 +75,10 @@ def _debootstrap(): sys.exit (1) # 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) ..." #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): _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']) ## 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() btog.ssh_server (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 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() 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) 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) @@ -127,6 +127,7 @@ if config is None: sys.exit (1) isolinux_tpl = config['General'].get ('isolinux_template') cfg_loglevel = config['General'].get ('logging_level') +btrootfsimglabel = config['General'].get ('rootfs_image_label') logger = _logging (args.loglevel or cfg_loglevel) type_client = args.codename or 'host' @@ -141,37 +142,33 @@ except: pass logger.info ('OpenGnsys CLIENT installation begins') -logger.info ('STAGE 1 - clone opengnsys repo') - fd = open (f'{curdir}/gitrelease', 'r') ## per the Dockerfile gitrelease = fd.readline().strip() fd.close() -osdistrib, oscodename, osrelease, osarch, oshttp = btog.GetOsInfo1 (type_client) +osdistrib, oscodename, osrelease, osarch, oshttp = btog.GetOsInfo (type_client) if osdistrib is None: - logger.error ('GetOsInfo1() failed') + logger.error ('GetOsInfo() failed') sys.exit (1) -btdir, bttargetdir, btrootfsimg, btrootfsmnt, btrootfsimglabel, log_file, versionboottools, btvirtualdisksize = btog.GetVar (osarch) -nameisoclient, namehostclient = btog.GetOsInfo2 (versionboottools, oscodename, osrelease, osarch, gitrelease) +bttargetdir, btrootfsimg, btrootfsmnt, btvirtualdisksize = btog.GetVar (osarch) logger.info (':'.join ([osdistrib, oscodename, osrelease, osarch, oshttp])) -logger.info ('STAGE 2 - install software in the VM') -pxepkg = _get_pxepkg() +logger.info ('STAGE 1 - create and bootstrap rootfs') +_mkrootfs (btrootfsimg, btrootfsmnt, btrootfsimglabel, btvirtualdisksize, bttargetdir, osarch) +_debootstrap (btrootfsimg, btrootfsmnt, osarch, oscodename, oshttp) -logger.info ('STAGE 3 - create and bootstrap rootfs') -_mkrootfs() -_debootstrap() - -logger.info ('STAGE 4 - copy files to the rootfs') -_initramfs_version (gitrelease, osrelease, btdir) +logger.info ('STAGE 2 - copy files to the rootfs') +_initramfs_version (gitrelease, osrelease, curdir) _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) -_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) logger.info ('OpenGnsys installation finished')