refs #596 move 02-boottoolsFsOpengnsys to a function, rename functions, reorganise code and config
parent
e6aa11e5b3
commit
bd56977510
|
@ -1,61 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
import os
|
|
||||||
import logging
|
|
||||||
import subprocess
|
|
||||||
import shutil
|
|
||||||
import argparse
|
|
||||||
|
|
||||||
svnclientdir = '/tmp/opengnsys/oglive_builder'
|
|
||||||
svnclientstructure = '/tmp/opengnsys/shared'
|
|
||||||
svnclientengine = '/tmp/opengnsys/engine'
|
|
||||||
|
|
||||||
def boottoolsFsOpengnsys (ogclientmount, osdistrib, oscodename, osrelease, osarch, oshttp):
|
|
||||||
print (':'.join ([osdistrib, oscodename, osrelease, osarch, oshttp]))
|
|
||||||
print ('Iniciando la personalización con datos del repositorio')
|
|
||||||
|
|
||||||
sources_list_in = f'{svnclientdir}/includes/etc/apt/sources.list.{osdistrib.lower()}'
|
|
||||||
sources_list_out = f'{svnclientdir}/includes/etc/apt/sources.list'
|
|
||||||
fdin = open (sources_list_in, 'r')
|
|
||||||
fdout = open (sources_list_out, 'w')
|
|
||||||
while True:
|
|
||||||
l = fdin.readline()
|
|
||||||
if not l: break
|
|
||||||
fdout.write (l.replace ('OSCODENAME', oscodename))
|
|
||||||
fdin.close()
|
|
||||||
fdout.close()
|
|
||||||
|
|
||||||
subprocess.run (f'chmod -R 775 {svnclientdir}/includes/usr/bin/*', shell=True)
|
|
||||||
|
|
||||||
os.makedirs (f'{ogclientmount}/opt/opengnsys/lib/engine/bin/', exist_ok=True)
|
|
||||||
os.makedirs (f'{ogclientmount}/usr/local/etc', exist_ok=True)
|
|
||||||
os.makedirs (f'{ogclientmount}/usr/local/lib', exist_ok=True)
|
|
||||||
os.makedirs (f'{ogclientmount}/usr/local/plugins', exist_ok=True)
|
|
||||||
|
|
||||||
subprocess.run (f'rsync -aH {svnclientdir}/includes/* {ogclientmount}/' , shell=True)
|
|
||||||
subprocess.run (f'rsync -aH {svnclientstructure}/* {ogclientmount}/opt/opengnsys/' , shell=True)
|
|
||||||
subprocess.run (f'rsync -aH {svnclientengine}/* {ogclientmount}/opt/opengnsys/lib/engine/bin/', shell=True)
|
|
||||||
|
|
||||||
if not os.path.exists (f'{ogclientmount}/etc/pci.ids'):
|
|
||||||
shutil.copy (f'{svnclientstructure}/lib/pci.ids', f'{ogclientmount}/etc/')
|
|
||||||
|
|
||||||
# Dependencias Qt para el Browser.
|
|
||||||
subprocess.run (f'rsync -aH {svnclientstructure}/etc/*.qmap {ogclientmount}/usr/local/etc', shell=True)
|
|
||||||
subprocess.run (f'rsync -aH {svnclientstructure}/lib/qtlib/* {ogclientmount}/usr/local/lib', shell=True)
|
|
||||||
subprocess.run (f'rsync -aH {svnclientstructure}/lib/fonts {ogclientmount}/usr/local/lib', shell=True)
|
|
||||||
subprocess.run (f'rsync -aH {svnclientstructure}/lib/qtplugins/* {ogclientmount}/usr/local/plugins', shell=True)
|
|
||||||
|
|
||||||
# Browser y ogAdmClient.
|
|
||||||
if os.path.exists (f'{svnclientstructure}/bin/browser'): shutil.copy (f'{svnclientstructure}/bin/browser', f'{ogclientmount}/bin/')
|
|
||||||
if os.path.exists (f'{svnclientstructure}/bin/ogAdmClient'): shutil.copy (f'{svnclientstructure}/bin/ogAdmClient', f'{ogclientmount}/bin/')
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument ('--mntpt', help='rootfs mount point', action='store', required=True)
|
|
||||||
parser.add_argument ('--osdistrib', help='OS distribution', action='store', required=True)
|
|
||||||
parser.add_argument ('--oscodename', help='OS codename', action='store', required=True)
|
|
||||||
parser.add_argument ('--osrelease', help='OS release', action='store', required=True)
|
|
||||||
parser.add_argument ('--osarch', help='OS architecture', action='store', required=True)
|
|
||||||
parser.add_argument ('--oshttp', help='OS HTTP source', action='store', required=True)
|
|
||||||
args = parser.parse_args()
|
|
||||||
boottoolsFsOpengnsys (args.mntpt, args.osdistrib, args.oscodename, args.osrelease, args.osarch, args.oshttp)
|
|
|
@ -11,5 +11,5 @@ debconf_settings2 = config['General'].get ('debconf_settings2')
|
||||||
|
|
||||||
subprocess.run (['debconf-set-selections'], input=debconf_settings2, text=True)
|
subprocess.run (['debconf-set-selections'], input=debconf_settings2, text=True)
|
||||||
|
|
||||||
os.environ['DEBIAN_FRONTEND'] = 'noninteractive'
|
## despues de esto, debconf-get-selections devuelve los valores antiguos, no se por que...
|
||||||
_run (['dpkg-reconfigure', 'console-setup', 'locales'])
|
_run (['dpkg-reconfigure', '--frontend', 'noninteractive', 'console-setup', 'locales'])
|
||||||
|
|
|
@ -311,6 +311,44 @@ def btogSetFsBase (btrootfsimg, btrootfsmnt, osarch, oscodename, oshttp):
|
||||||
logger.info (f'debootstrap --arch="{osarch}" --components=main,universe "{oscodename}" "{btrootfsmnt}" "{oshttp}" : ok')
|
logger.info (f'debootstrap --arch="{osarch}" --components=main,universe "{oscodename}" "{btrootfsmnt}" "{oshttp}" : ok')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def boottoolsFsOpengnsys (builder, og_shared, og_engine, ogclientmount, osdistrib, oscodename):
|
||||||
|
print ('Iniciando la personalización con datos del repositorio')
|
||||||
|
|
||||||
|
sources_list_in = f'{builder}/includes/etc/apt/sources.list.{osdistrib.lower()}'
|
||||||
|
sources_list_out = f'{builder}/includes/etc/apt/sources.list'
|
||||||
|
fdin = open (sources_list_in, 'r')
|
||||||
|
fdout = open (sources_list_out, 'w')
|
||||||
|
while True:
|
||||||
|
l = fdin.readline()
|
||||||
|
if not l: break
|
||||||
|
fdout.write (l.replace ('OSCODENAME', oscodename))
|
||||||
|
fdin.close()
|
||||||
|
fdout.close()
|
||||||
|
|
||||||
|
subprocess.run (f'chmod -R 775 {builder}/includes/usr/bin/*', shell=True)
|
||||||
|
|
||||||
|
os.makedirs (f'{ogclientmount}/opt/opengnsys/lib/engine/bin/', exist_ok=True)
|
||||||
|
os.makedirs (f'{ogclientmount}/usr/local/etc', exist_ok=True)
|
||||||
|
os.makedirs (f'{ogclientmount}/usr/local/lib', exist_ok=True)
|
||||||
|
os.makedirs (f'{ogclientmount}/usr/local/plugins', exist_ok=True)
|
||||||
|
|
||||||
|
subprocess.run (f'rsync -aH {builder}/includes/* {ogclientmount}/' , shell=True)
|
||||||
|
subprocess.run (f'rsync -aH {og_shared}/* {ogclientmount}/opt/opengnsys/' , shell=True)
|
||||||
|
subprocess.run (f'rsync -aH {og_engine}/* {ogclientmount}/opt/opengnsys/lib/engine/bin/', shell=True)
|
||||||
|
|
||||||
|
if not os.path.exists (f'{ogclientmount}/etc/pci.ids'):
|
||||||
|
shutil.copy (f'{og_shared}/lib/pci.ids', f'{ogclientmount}/etc/')
|
||||||
|
|
||||||
|
# Dependencias Qt para el Browser.
|
||||||
|
subprocess.run (f'rsync -aH {og_shared}/etc/*.qmap {ogclientmount}/usr/local/etc', shell=True)
|
||||||
|
subprocess.run (f'rsync -aH {og_shared}/lib/qtlib/* {ogclientmount}/usr/local/lib', shell=True)
|
||||||
|
subprocess.run (f'rsync -aH {og_shared}/lib/fonts {ogclientmount}/usr/local/lib', shell=True)
|
||||||
|
subprocess.run (f'rsync -aH {og_shared}/lib/qtplugins/* {ogclientmount}/usr/local/plugins', shell=True)
|
||||||
|
|
||||||
|
# Browser y ogAdmClient.
|
||||||
|
if os.path.exists (f'{og_shared}/bin/browser'): shutil.copy (f'{og_shared}/bin/browser', f'{ogclientmount}/bin/')
|
||||||
|
if os.path.exists (f'{og_shared}/bin/ogAdmClient'): shutil.copy (f'{og_shared}/bin/ogAdmClient', f'{ogclientmount}/bin/')
|
||||||
|
|
||||||
def boottoolsSshServer (btrootfsmnt):
|
def boottoolsSshServer (btrootfsmnt):
|
||||||
if not os.path.exists ('/root/.ssh/id_rsa'): ## crea un par de claves en la VM, no en el chroot
|
if not os.path.exists ('/root/.ssh/id_rsa'): ## crea un par de claves en la VM, no en el chroot
|
||||||
_run (['ssh-keygen', '-q', '-f', '/root/.ssh/id_rsa', '-N', ''])
|
_run (['ssh-keygen', '-q', '-f', '/root/.ssh/id_rsa', '-N', ''])
|
||||||
|
|
|
@ -1,67 +1,3 @@
|
||||||
[Packages]
|
|
||||||
|
|
||||||
basic =
|
|
||||||
dialog man-db fbset gdebi-core bash-static busybox-static locales lshw gawk git python3-openssl python3 php-cli dmidecode rpm sqlite3 os-prober moreutils jq
|
|
||||||
#console-data # ogLive anterior a Ubuntu 20.04
|
|
||||||
#subversion # ogLive anterior a Ubuntu 18.04
|
|
||||||
#php5-cli # ogLive anterior a Ubuntu 16.04
|
|
||||||
#realpath # ogLive hasta Ubuntu 16.04
|
|
||||||
#zypper # PROBAR
|
|
||||||
|
|
||||||
cloning = fsarchiver pv
|
|
||||||
#pxe-kexec # ubuntu noble: Unable to locate package
|
|
||||||
mbuffer parted gdisk chntpw clonezilla registry-tools reglookup libparse-win32registry-perl libwin-hivex-perl grokevt libhivex0 libhivex-bin rsync
|
|
||||||
|
|
||||||
compile =
|
|
||||||
build-essential libattr1 libattr1-dev uuid-dev attr make m4 gettext libmhash-dev
|
|
||||||
#libattr* # Satura el tamaño del archivo en Ubuntu 15.04
|
|
||||||
|
|
||||||
compressor = lzma zip unzip gzip lzop pigz pbzip2 lbzip2 rzip p7zip-full
|
|
||||||
|
|
||||||
filesystem_local =
|
|
||||||
squashfs-tools unionfs-fuse ntfs-3g dosfstools fatresize
|
|
||||||
#exfat-utils # ubuntu noble: has no installation candidate
|
|
||||||
dmraid dmsetup lvm2 e2fsprogs
|
|
||||||
jfsutils reiserfsprogs reiser4progs xfsprogs mhddfs hfsplus hfsprogs hfsutils nilfs-tools vmfs-tools
|
|
||||||
btrfs-progs # ogLive a partir de Ubuntu 20.04
|
|
||||||
zfsutils-linux # ogLive a partir de Ubuntu 16.04
|
|
||||||
android-tools-adb # ogLive a partir de Ubuntu 16.04
|
|
||||||
android-tools-fastboot # ogLive a partir de Ubuntu 16.04
|
|
||||||
f2fs-tools
|
|
||||||
#drbl-ntfsprogs # Eliminado
|
|
||||||
#ntfs-config # ogLive anterior a Ubuntu 20.04
|
|
||||||
#btrfs-tools # ogLive anterior a Ubuntu 20.04
|
|
||||||
#ufsutils # ogLive anterior a Ubuntu 14.04
|
|
||||||
#zfsutils # ogLive anterior a Ubuntu 16.04
|
|
||||||
#android-tools-fsutils # ogLive entre Ubuntu 16.04 y Ubuntu 20.04
|
|
||||||
|
|
||||||
filesystem_remote =
|
|
||||||
sshfs cifs-utils smbclient open-iscsi openssh-server
|
|
||||||
#nfs-common # Provoca error de instalación en Ubuntu 15.04
|
|
||||||
#bittornado # ogLive anterior a Ubuntu 20.04
|
|
||||||
|
|
||||||
monitoring = htop ncdu bwbar bmon iftop ifstat dstat hdparm sdparm blktool testdisk
|
|
||||||
|
|
||||||
networking = netpipes curl wget tftp-hpa dnsutils
|
|
||||||
#trickle # ubuntu noble: has no installation candidate
|
|
||||||
lighttpd ethtool ssmping tcpdump nmap arping ntpdate ctorrent udpcast #iptraf
|
|
||||||
|
|
||||||
testing =
|
|
||||||
screen schroot xmlstarlet
|
|
||||||
efibootmgr efitools refind grub-efi-amd64-bin grub-efi-ia32-bin grub-pc-bin ## UEFI
|
|
||||||
#libxss1 python-prctl python-six python-requests ## OGAgent
|
|
||||||
##############
|
|
||||||
fusioninventory-agent nvme-cli disktype laptop-detect
|
|
||||||
#discover casper lupin-casper xinit obconf xserver-xorg x11-xserver-utils xterm network-manager-gnome plymouth-x11 plymouth-label plymouth-theme-ubuntu-logo pcmanfm chromium-browser gtk-theme-switch gtk2-engines murrine-themes
|
|
||||||
####################################3
|
|
||||||
#gnome-icon-theme gnome-brave-icon-theme dmz-cursor-theme python-wnck python-xlib python-pyinotify python-alsaaudio python-vte maximus gpicview leafpad lxappearance lxmenu-data lxrandr lxterminal nitrogen ttf-ubuntu-font-family time synaptic libglib-perl libgtk2-perl libxml-simple-perl smartmontools gnome-disk-utility policykit-1-gnome policykit-desktop-privileges baobab lshw-gtk usb-creator-gtk wodim curlftpfs libnotify-bin cryptsetup system-config-lvm
|
|
||||||
|
|
||||||
xwindows =
|
|
||||||
v86d # VESA Kernel 3.7+
|
|
||||||
#xorg-dev xorg lxde #+300M
|
|
||||||
#roxterm gparted #+80M
|
|
||||||
#openbox midori #xvesa en compilacion
|
|
||||||
|
|
||||||
[General]
|
[General]
|
||||||
|
|
||||||
logging_level = INFO
|
logging_level = INFO
|
||||||
|
@ -130,3 +66,67 @@ isolinux_template =
|
||||||
MENU LABEL pxe
|
MENU LABEL pxe
|
||||||
KERNEL /clonezilla/live/vmlinuz1
|
KERNEL /clonezilla/live/vmlinuz1
|
||||||
APPEND initrd=/clonezilla/live/initrd1.img boot=live union=aufs noswap vga=788 ip=frommedia
|
APPEND initrd=/clonezilla/live/initrd1.img boot=live union=aufs noswap vga=788 ip=frommedia
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
|
||||||
|
basic =
|
||||||
|
dialog man-db fbset gdebi-core bash-static busybox-static locales lshw gawk git python3-openssl python3 php-cli dmidecode rpm sqlite3 os-prober moreutils jq
|
||||||
|
#console-data # ogLive anterior a Ubuntu 20.04
|
||||||
|
#subversion # ogLive anterior a Ubuntu 18.04
|
||||||
|
#php5-cli # ogLive anterior a Ubuntu 16.04
|
||||||
|
#realpath # ogLive hasta Ubuntu 16.04
|
||||||
|
#zypper # PROBAR
|
||||||
|
|
||||||
|
cloning = fsarchiver pv
|
||||||
|
#pxe-kexec # ubuntu noble: Unable to locate package
|
||||||
|
mbuffer parted gdisk chntpw clonezilla registry-tools reglookup libparse-win32registry-perl libwin-hivex-perl grokevt libhivex0 libhivex-bin rsync
|
||||||
|
|
||||||
|
compile =
|
||||||
|
build-essential libattr1 libattr1-dev uuid-dev attr make m4 gettext libmhash-dev
|
||||||
|
#libattr* # Satura el tamaño del archivo en Ubuntu 15.04
|
||||||
|
|
||||||
|
compressor = lzma zip unzip gzip lzop pigz pbzip2 lbzip2 rzip p7zip-full
|
||||||
|
|
||||||
|
filesystem_local =
|
||||||
|
squashfs-tools unionfs-fuse ntfs-3g dosfstools fatresize
|
||||||
|
#exfat-utils # ubuntu noble: has no installation candidate
|
||||||
|
dmraid dmsetup lvm2 e2fsprogs
|
||||||
|
jfsutils reiserfsprogs reiser4progs xfsprogs mhddfs hfsplus hfsprogs hfsutils nilfs-tools vmfs-tools
|
||||||
|
btrfs-progs # ogLive a partir de Ubuntu 20.04
|
||||||
|
zfsutils-linux # ogLive a partir de Ubuntu 16.04
|
||||||
|
android-tools-adb # ogLive a partir de Ubuntu 16.04
|
||||||
|
android-tools-fastboot # ogLive a partir de Ubuntu 16.04
|
||||||
|
f2fs-tools
|
||||||
|
#drbl-ntfsprogs # Eliminado
|
||||||
|
#ntfs-config # ogLive anterior a Ubuntu 20.04
|
||||||
|
#btrfs-tools # ogLive anterior a Ubuntu 20.04
|
||||||
|
#ufsutils # ogLive anterior a Ubuntu 14.04
|
||||||
|
#zfsutils # ogLive anterior a Ubuntu 16.04
|
||||||
|
#android-tools-fsutils # ogLive entre Ubuntu 16.04 y Ubuntu 20.04
|
||||||
|
|
||||||
|
filesystem_remote =
|
||||||
|
sshfs cifs-utils smbclient open-iscsi openssh-server
|
||||||
|
#nfs-common # Provoca error de instalación en Ubuntu 15.04
|
||||||
|
#bittornado # ogLive anterior a Ubuntu 20.04
|
||||||
|
|
||||||
|
monitoring = htop ncdu bwbar bmon iftop ifstat dstat hdparm sdparm blktool testdisk
|
||||||
|
|
||||||
|
networking = netpipes curl wget tftp-hpa dnsutils
|
||||||
|
#trickle # ubuntu noble: has no installation candidate
|
||||||
|
lighttpd ethtool ssmping tcpdump nmap arping ntpdate ctorrent udpcast #iptraf
|
||||||
|
|
||||||
|
testing =
|
||||||
|
screen schroot xmlstarlet
|
||||||
|
efibootmgr efitools refind grub-efi-amd64-bin grub-efi-ia32-bin grub-pc-bin ## UEFI
|
||||||
|
#libxss1 python-prctl python-six python-requests ## OGAgent
|
||||||
|
##############
|
||||||
|
fusioninventory-agent nvme-cli disktype laptop-detect
|
||||||
|
#discover casper lupin-casper xinit obconf xserver-xorg x11-xserver-utils xterm network-manager-gnome plymouth-x11 plymouth-label plymouth-theme-ubuntu-logo pcmanfm chromium-browser gtk-theme-switch gtk2-engines murrine-themes
|
||||||
|
####################################3
|
||||||
|
#gnome-icon-theme gnome-brave-icon-theme dmz-cursor-theme python-wnck python-xlib python-pyinotify python-alsaaudio python-vte maximus gpicview leafpad lxappearance lxmenu-data lxrandr lxterminal nitrogen ttf-ubuntu-font-family time synaptic libglib-perl libgtk2-perl libxml-simple-perl smartmontools gnome-disk-utility policykit-1-gnome policykit-desktop-privileges baobab lshw-gtk usb-creator-gtk wodim curlftpfs libnotify-bin cryptsetup system-config-lvm
|
||||||
|
|
||||||
|
xwindows =
|
||||||
|
v86d # VESA Kernel 3.7+
|
||||||
|
#xorg-dev xorg lxde #+300M
|
||||||
|
#roxterm gparted #+80M
|
||||||
|
#openbox midori #xvesa en compilacion
|
||||||
|
|
|
@ -10,7 +10,7 @@ import shutil
|
||||||
|
|
||||||
curdir = os.path.dirname (__file__)
|
curdir = os.path.dirname (__file__)
|
||||||
sys.path.insert (0, curdir)
|
sys.path.insert (0, curdir)
|
||||||
from boottoolsfunctions import _run, _mount, _umount, _read_config, btogGetOsInfo1, btogGetOsInfo2, btogGetVar, btogSetFsVirtual, btogSetFsAccess, btogSetFsBase, boottoolsSshServer, boottoolsSshClient, btogFsInitrd, btogFsSqfs, btogIsoGenerator
|
from boottoolsfunctions import _run, _mount, _umount, _read_config, btogGetOsInfo1, btogGetOsInfo2, btogGetVar, btogSetFsVirtual, btogSetFsAccess, btogSetFsBase, boottoolsFsOpengnsys, boottoolsSshServer, boottoolsSshClient, btogFsInitrd, btogFsSqfs, btogIsoGenerator
|
||||||
|
|
||||||
def _logging():
|
def _logging():
|
||||||
#logging.root.handlers = []
|
#logging.root.handlers = []
|
||||||
|
@ -36,7 +36,10 @@ def clone_client_dirs (ogrepo_url, ogrepo_branch, ogrepo_dir):
|
||||||
|
|
||||||
def _mount_rootfs():
|
def _mount_rootfs():
|
||||||
global btrootfsimg, btrootfsmnt
|
global btrootfsimg, btrootfsmnt
|
||||||
_mount (btrootfsimg, btrootfsmnt, opts=['-o', 'loop,offset=32256'])
|
try: _mount (btrootfsimg, btrootfsmnt, opts=['-o', 'loop,offset=32256'])
|
||||||
|
except:
|
||||||
|
logger.error ('mount failed')
|
||||||
|
sys.exit (1)
|
||||||
|
|
||||||
def _get_pxepkg():
|
def _get_pxepkg():
|
||||||
#grep "http://free.nchc.org.tw/drbl-core" /etc/apt/sources.list || echo "deb http://free.nchc.org.tw/drbl-core drbl stable" >> /etc/apt/sources.list
|
#grep "http://free.nchc.org.tw/drbl-core" /etc/apt/sources.list || echo "deb http://free.nchc.org.tw/drbl-core drbl stable" >> /etc/apt/sources.list
|
||||||
|
@ -77,10 +80,7 @@ def _debootstrap():
|
||||||
cp = subprocess.run (['schroot', '--chroot', 'IMGogclient', '--', 'stat', '/etc'])
|
cp = subprocess.run (['schroot', '--chroot', 'IMGogclient', '--', 'stat', '/etc'])
|
||||||
if (cp.returncode):
|
if (cp.returncode):
|
||||||
logger.debug (f'schroot returned code "{cp.returncode}", calling btogSetFsBase()')
|
logger.debug (f'schroot returned code "{cp.returncode}", calling btogSetFsBase()')
|
||||||
try: _mount_rootfs()
|
_mount_rootfs()
|
||||||
except:
|
|
||||||
logger.error ('mount failed')
|
|
||||||
sys.exit (1)
|
|
||||||
try: btogSetFsBase (btrootfsimg, btrootfsmnt, osarch, oscodename, oshttp)
|
try: btogSetFsBase (btrootfsimg, btrootfsmnt, osarch, oscodename, oshttp)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error (str (e))
|
logger.error (str (e))
|
||||||
|
@ -92,83 +92,61 @@ def _initramfs_version (gitrelease, osrelease, btdir):
|
||||||
#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
|
||||||
_run (['sed', '-i', f'1 s/$/ {gitrelease} ({osrelease})/', f'{btdir}/includes/etc/initramfs-tools/scripts/VERSION.txt'])
|
_run (['sed', '-i', f'1 s/$/ {gitrelease} ({osrelease})/', f'{btdir}/includes/etc/initramfs-tools/scripts/VERSION.txt'])
|
||||||
|
|
||||||
def _cerodos():
|
def _copy_files (btrootfsmnt, osdistrib, oscodename):
|
||||||
try: _mount_rootfs()
|
_mount_rootfs()
|
||||||
except:
|
builder = '/tmp/opengnsys/oglive_builder'
|
||||||
logger.error ('mount failed')
|
og_shared = '/tmp/opengnsys/shared'
|
||||||
sys.exit (1)
|
og_engine = '/tmp/opengnsys/engine'
|
||||||
|
boottoolsFsOpengnsys (builder, og_shared, og_engine, btrootfsmnt, osdistrib, oscodename)
|
||||||
logger.debug (f'running \'{curdir}/02-boottoolsFsOpengnsys.py --mntpt "{btrootfsmnt}" --osdistrib "{osdistrib}" --oscodename "{oscodename}" --osrelease "{osrelease}" --osarch "{osarch}" --oshttp "{oshttp}"\'')
|
|
||||||
stdout, _ = _run ([f'{curdir}/02-boottoolsFsOpengnsys.py', '--mntpt', btrootfsmnt, '--osdistrib', osdistrib, '--oscodename', oscodename, '--osrelease', osrelease, '--osarch', osarch, '--oshttp', oshttp])
|
|
||||||
logger.debug (f'02-boottoolsFsOpengnsys stdout follows:')
|
|
||||||
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
|
||||||
|
|
||||||
_umount (btrootfsmnt)
|
_umount (btrootfsmnt)
|
||||||
|
|
||||||
def _chroot_cerotres():
|
def _install_compile_software (curdir, osrelease, osarch):
|
||||||
logger.info ('Fase 5.1 instalar paquetes deb con apt-get')
|
logger.info ('Fase 5.1 instalar paquetes deb con apt-get')
|
||||||
logger.debug (f'running \'schroot --chroot IMGogclient -- {curdir}/03-boottoolsSoftwareInstall.py --osrelease "{osrelease}" --osarch "{osarch}"\'')
|
logger.debug (f'running \'schroot --chroot IMGogclient -- {curdir}/03-boottoolsSoftwareInstall.py --osrelease "{osrelease}" --osarch "{osarch}"\'')
|
||||||
stdout, _ = _run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/03-boottoolsSoftwareInstall.py', '--osrelease', osrelease, '--osarch', osarch])
|
stdout, _ = _run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/03-boottoolsSoftwareInstall.py', '--osrelease', osrelease, '--osarch', osarch])
|
||||||
logger.debug (f'03-boottoolsSoftwareInstall stdout follows:')
|
logger.debug (f'03-boottoolsSoftwareInstall stdout follows:')
|
||||||
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
||||||
|
|
||||||
def _chroot_cerocuatro():
|
|
||||||
logger.info ('Fase 5.2 compilar software.')
|
logger.info ('Fase 5.2 compilar software.')
|
||||||
logger.debug ('running \'schroot --chroot IMGogclient -- {}/04-boottoolsSoftwareCompile.py\'')
|
logger.debug (f'running \'schroot --chroot IMGogclient -- {curdir}/04-boottoolsSoftwareCompile.py\'')
|
||||||
#cd /
|
|
||||||
stdout, _ = _run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/04-boottoolsSoftwareCompile.py'])
|
stdout, _ = _run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/04-boottoolsSoftwareCompile.py'])
|
||||||
#cd -
|
|
||||||
logger.debug (f'04-boottoolsSoftwareCompile stdout follows:')
|
logger.debug (f'04-boottoolsSoftwareCompile stdout follows:')
|
||||||
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
||||||
|
|
||||||
def _ssh_stuff():
|
def _debconf2 (curdir):
|
||||||
logger.info ('Fase 6.1 Configurar ssh')
|
logger.info ('Fase 6.1 Configurar las locales')
|
||||||
try: _mount_rootfs()
|
|
||||||
except:
|
|
||||||
logger.error ('mount failed')
|
|
||||||
sys.exit (1)
|
|
||||||
|
|
||||||
#cd /
|
|
||||||
#schroot --chroot IMGogclient -- /usr/bin/boot-tools/boottoolsSshServer.sh ## no necesita chroot
|
|
||||||
boottoolsSshServer (btrootfsmnt)
|
|
||||||
#cd -
|
|
||||||
|
|
||||||
#schroot --chroot IMGogclient -- /usr/bin/boot-tools/boottoolsSshClient.sh ## no necesita chroot
|
|
||||||
boottoolsSshClient (btrootfsmnt)
|
|
||||||
|
|
||||||
_umount (btrootfsmnt)
|
|
||||||
|
|
||||||
## el resultado es:
|
|
||||||
## - hay un nuevo par de claves en la VM /root/.ssh
|
|
||||||
## - hay otro nuevo par de claves en el rootfs /var/lib/tftpboot/ogclient/ogclientmount/root/.ssh
|
|
||||||
## - 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 _chroot_cerocinco():
|
|
||||||
logger.info ('Fase 6.2 Configurar las locales')
|
|
||||||
logger.debug (f'running \'schroot --chroot IMGogclient -- {curdir}/05-boottoolsFsLocales.py\'')
|
logger.debug (f'running \'schroot --chroot IMGogclient -- {curdir}/05-boottoolsFsLocales.py\'')
|
||||||
stdout, _ = _run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/05-boottoolsFsLocales.py'])
|
stdout, _ = _run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/05-boottoolsFsLocales.py'])
|
||||||
logger.debug (f'05-boottoolsFsLocales stdout follows:')
|
logger.debug (f'05-boottoolsFsLocales stdout follows:')
|
||||||
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
||||||
|
|
||||||
def _chroot_ceroseis():
|
logger.info ('Fase 6.3 Crear initrd')
|
||||||
logger.info ('Fase 6.3 Crear initrd') ## what??
|
|
||||||
#cd /
|
|
||||||
#schroot -c IMGogclient -- /usr/bin/boot-tools/boottoolsInitrdGenerate.sh
|
|
||||||
logger.debug (f'running \'schroot --chroot IMGogclient -- {curdir}/06-boottoolsInitrdGenerate.py --osrelease "{osrelease}"\'')
|
logger.debug (f'running \'schroot --chroot IMGogclient -- {curdir}/06-boottoolsInitrdGenerate.py --osrelease "{osrelease}"\'')
|
||||||
stdout, _ = _run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/06-boottoolsInitrdGenerate.py', '--osrelease', osrelease])
|
stdout, _ = _run (['schroot', '--chroot', 'IMGogclient', '--', f'{curdir}/06-boottoolsInitrdGenerate.py', '--osrelease', osrelease])
|
||||||
logger.debug (f'06-boottoolsInitrdGenerate stdout follows:')
|
logger.debug (f'06-boottoolsInitrdGenerate stdout follows:')
|
||||||
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
for i in stdout.strip().split('\n'): logger.debug (' ' + i)
|
||||||
## 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 _mkinitrd (bttargetdir, osrelease):
|
def _ssh_stuff():
|
||||||
logger.info ('Fase 7.1 Generar el initrd') ## what??
|
logger.info ('Fase 6.2 Configurar ssh')
|
||||||
|
_mount_rootfs()
|
||||||
|
boottoolsSshServer (btrootfsmnt)
|
||||||
|
boottoolsSshClient (btrootfsmnt)
|
||||||
|
_umount (btrootfsmnt)
|
||||||
|
## el resultado es:
|
||||||
|
## - hay un nuevo par de claves en la VM /root/.ssh
|
||||||
|
## - hay otro nuevo par de claves en el rootfs /var/lib/tftpboot/ogclient/ogclientmount/root/.ssh
|
||||||
|
## - 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 ('Fase 7.1 Copiar el initrd a su sitio')
|
||||||
|
_mount_rootfs()
|
||||||
btogFsInitrd (bttargetdir, osrelease)
|
btogFsInitrd (bttargetdir, osrelease)
|
||||||
|
|
||||||
def _mksquashfs (bttargetdir, btrootfsmnt):
|
|
||||||
logger.info ('Fase 7.2 Generar fichero sqfs a partir del fichero img')
|
logger.info ('Fase 7.2 Generar fichero sqfs a partir del fichero img')
|
||||||
btogFsSqfs (bttargetdir, btrootfsmnt)
|
btogFsSqfs (bttargetdir, btrootfsmnt)
|
||||||
|
_umount (btrootfsmnt)
|
||||||
|
|
||||||
def _mkisofs (pxepkg, isolinux_tpl, bttargetdir, nameisoclient):
|
|
||||||
logger.info ('Fase 7.3 Generar la ISO')
|
logger.info ('Fase 7.3 Generar la ISO')
|
||||||
btogIsoGenerator (pxepkg, isolinux_tpl, bttargetdir, nameisoclient)
|
btogIsoGenerator (pxepkg, isolinux_tpl, bttargetdir, nameisoclient)
|
||||||
|
|
||||||
|
@ -200,6 +178,8 @@ osdistrib, oscodename, osrelease, osarch, oshttp = btogGetOsInfo1(type_client)
|
||||||
btdir, bttargetdir, btrootfsimg, btrootfsmnt, btrootfsimglabel, log_file, versionboottools, btvirtualdisksize = btogGetVar(osarch)
|
btdir, bttargetdir, btrootfsimg, btrootfsmnt, btrootfsimglabel, log_file, versionboottools, btvirtualdisksize = btogGetVar(osarch)
|
||||||
gitrelease, nameisoclient, namehostclient = btogGetOsInfo2(ogrepo_dir, versionboottools, oscodename, osrelease, osarch)
|
gitrelease, nameisoclient, namehostclient = btogGetOsInfo2(ogrepo_dir, versionboottools, oscodename, osrelease, osarch)
|
||||||
|
|
||||||
|
logger.info (':'.join ([osdistrib, oscodename, osrelease, osarch, oshttp]))
|
||||||
|
|
||||||
## this is convenient in case the previous run failed and we want to run this program again
|
## this is convenient in case the previous run failed and we want to run this program again
|
||||||
try: _umount (btrootfsmnt)
|
try: _umount (btrootfsmnt)
|
||||||
except: pass
|
except: pass
|
||||||
|
@ -215,25 +195,16 @@ _debootstrap()
|
||||||
|
|
||||||
logger.info ('FASE 4 - Incorporando ficheros OpenGnsys al sistema raíz rootfs')
|
logger.info ('FASE 4 - Incorporando ficheros OpenGnsys al sistema raíz rootfs')
|
||||||
_initramfs_version (gitrelease, osrelease, btdir)
|
_initramfs_version (gitrelease, osrelease, btdir)
|
||||||
_cerodos()
|
_copy_files (btrootfsmnt, osdistrib, oscodename, osrelease, osarch, oshttp)
|
||||||
|
|
||||||
logger.info ('FASE 5 - Instalar software')
|
logger.info ('FASE 5 - Instalar software')
|
||||||
_chroot_cerotres()
|
_install_compile_software (curdir, osrelease, osarch)
|
||||||
_chroot_cerocuatro()
|
|
||||||
|
|
||||||
logger.info ('FASE 6 - Personalizar el sistema creado')
|
logger.info ('FASE 6 - Personalizar el sistema creado')
|
||||||
|
_debconf2 (curdir)
|
||||||
_ssh_stuff()
|
_ssh_stuff()
|
||||||
_chroot_cerocinco()
|
|
||||||
_chroot_ceroseis()
|
|
||||||
|
|
||||||
logger.info ('FASE 7 - Generar distribucion')
|
logger.info ('FASE 7 - Generar distribucion')
|
||||||
_mkinitrd (bttargetdir, osrelease)
|
_mkinitrd_squashfs_isofs (bttargetdir, osrelease, btrootfsmnt, pxepkg, isolinux_tpl nameisoclient)
|
||||||
try: _mount_rootfs()
|
|
||||||
except:
|
|
||||||
logger.error ('mount failed')
|
|
||||||
sys.exit (1)
|
|
||||||
_mksquashfs (bttargetdir, btrootfsmnt)
|
|
||||||
_umount (btrootfsmnt)
|
|
||||||
_mkisofs (pxepkg, isolinux_tpl, bttargetdir, nameisoclient)
|
|
||||||
|
|
||||||
logger.info ('OpenGnsys installation finished')
|
logger.info ('OpenGnsys installation finished')
|
||||||
|
|
Loading…
Reference in New Issue