summaryrefslogtreecommitdiffstats
path: root/src/utils/probe.py
Commit message (Collapse)AuthorAgeFilesLines
* grub: replace legacy grub install scriptsAlejandro Sirgo Rica2024-10-221-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Translate old legacy grub scripts into grub.py Implement ogGrubInstallMbr as install_main_grub() and ogGrubInstallPartition as install_linux_grub(). Add grub configuration file generator through the classes GrubConfig and MenuEntry. Ensure EFI tree structure compatibility with legacy code. The structure of the created folders in the ESP is non-standard, efi binaries are usually located in the folder below the EFI/ directory. Structure used by ogClient: EFI/ ├── grub/ │ └── Boot/ │ ├── BOOTX64.CSV │ ├── grub.cfg │ ├── mmx64.efi │ ├── shimx64.efi │ ├── BOOTX64.EFI │ ├── grubx64.efi │ └── ogloader.efi ... The function _mangle_efi_folder handles the folder structure after grub-install to comply with the location expected by ogLive. install_linux_grub() installs a grub local to each Linux install to enable chainloading, each grub is located in EFI/Part-xx-yy/ in UEFI. The local linux BIOS grub in legacy scripts is unreliable, grub-install reports a failure during the install process. install_main_grub() installs a global grub in EFI/grub/ to show a grub menu when the pxe boot fails. The global grub contains entries to every installed os. No global grub is installed for BIOS systems, a Boot partition would be required to store the grub configuration.
* src: check if the system is hibernated before /image/createAlejandro Sirgo Rica2024-10-021-0/+7
| | | | | | | Mount the system partition in readonly mode and check for the hiberfil.sys file if the target system is a Windows. Fail the image creation process if the target system is hibernated.
* sw_inventory: consolidate os_probe logicAlejandro Sirgo Rica2024-09-251-1/+1
| | | | | | | | Reuse os_probe() function from probe.py and change the fallback case to "unknown" to prevent OS id mismatch in ogserver. The OS id mismatch causes the images to stop being associated with partitions after the /refresh command.
* utils: remove bogus cache not found error after refresh commandAlejandro Sirgo Rica2024-06-071-1/+0
| | | | | | Remove log message "Cannot find device path to cache" spamming logs during operations such as refresh in clients without CACHE partition.
* utils: rename cache_probe() to get_cache_dev_path()OpenGnSys Support Team2024-05-091-4/+7
| | | | | | | | This method reports the /dev path to cache partition, rename it. Add explicit check if blkid is successful. And add logging to report that device path to cache is not found.
* utils: implement linux distro id detectionAlejandro Sirgo Rica2024-03-081-0/+22
| | | | | | | The OS probe logic must be able to check a distro programmatically, add get_linux_distro_id to return an id whitout versioning. Ensure the availability of 'ubuntu' when we need to ensure certain features are only used with a supported system.
* utils: handle missing file in getlinuxversion functionAlejandro Sirgo Rica2024-03-081-11/+15
| | | | | | The function getlinuxversion receives a path to the os-release file. The case of not being able to open it was not handled and thus causing an unwanted exception.
* probe: add basic os family detectionJose M. Guisado2024-03-041-0/+16
| | | | | | | | Add a basic OS family enumeration: OSFamily. Add utility function that probes for an installed Linux or Windows system, returns the corresponding enum value, OSFamily.UNKNOWN otherwise.
* probe: detect 64 bit operating systemsJose M. Guisado2022-05-091-2/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OpenGnsys partition images store OS information, including the OS name appended with "64 bits" when the OS is meant for 64 bit machines. The detected OS name when probing (refresh) is important, if it differs from what's stored in the DB OpenGnsys will wipe last image restored information when running a refresh. See actualizaConfiguracion from legacy ogserver (ogAdmServer.c) code: dato = dbi_result_get_uint(result, "idnombreso"); if (idsoi == dato) { swu = false; } ... if (swu) { result_update = dbi_conn_queryf(dbi->conn, "UPDATE ordenadores_particiones SET " " codpar=0x%s," " tamano=%s," " uso=%s," " idsistemafichero=%d," " idnombreso=%d," " idimagen=0," " idperfilsoft=0," " fechadespliegue=NULL" " WHERE idordenador=%d AND numdisk=%s AND numpar=%s",
* utils: fix winreghives path stringJose M. Guisado2022-04-281-1/+1
| | | | | | | Adds missing slash in the windows reghives path f-string. When calling os_probe inside refresh (live/ogOperations) the mountpoint is passed without a trailing slash.
* live: detect cache partitions in new refreshJose M. Guisado2022-04-281-0/+9
| | | | | | | Detects OpenGnsys cache partition when building the partition setup of a live system. OpenGnsys labels a Linux/ext4 partition as "CACHE".
* utils: decode probing subprocess stdoutJose M. Guisado2022-04-271-2/+2
| | | | | | Cannot replace str ('\n') when stdout is a bytes object. Also fixes some typos (i.e: proc_releaseid stdout was used twice).
* Add utils modulesJose M. Guisado2022-04-211-0/+83
* disk.py Disk discovery * fs.py Uses psutil to fetch fs usage information * menu.py ogBrowser menu generation * net.py: gets nic status information IP address, MAC address and ethernet speed. * probe.py: probes mountpoints for operating systems Uses hivexget command to try fetching Windows installation information. Looks for /etc/os-release for probing linux systems.