- État Nouveau
- Pourcentage achevé
- Type Évolution
- Catégorie Services locaux → VM
- Assignée à Personne
- Système d'exploitation Freebox Server V7 (Delta)
- Sévérité Basse
- Priorité Très Basse
- Basée sur la version 4.8.11
- Due pour la version Non décidée
-
Échéance
Non décidée
-
Votes
1
- HachavBanav (01/10/2024)
- Privée
Concerne le projet: Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)
Ouverte par _fvt - 08/07/2024
Ouverte par _fvt - 08/07/2024
FS#39598 - Add opensuse MicroOS image
Bonjour,
Est-il possible d’ajouter OpenSUSE MicroOS à la liste des images disponibles ?
La distribution est très légère et avec ses mises à jour atomiques automatiques, cette distribution est a mon sens parfaite pour faire tourner des containers sur la box et se maintenir toute seule.
Merci d’avance,
FVT.
Chargement...
Activer les raccourcis clavier
- Alt + ⇧ Shift + l Se connecter/Se déconnecter
- Alt + ⇧ Shift + a Ouvrir une tâche
- Alt + ⇧ Shift + m Mes recherches
- Alt + ⇧ Shift + t Rechercher par ID de tâche
Liste des tâches
- o Ouvrir la tâche sélectionnée
- j Déplacer le curseur vers le bas
- k Déplacer le curseur vers le haut
Détails de la tâche
- n Tâche suivante
- p Tâche précédente
- Alt + ⇧ Shift + e ↵ Enter Modifier cette tâche
- Alt + ⇧ Shift + w Surveiller
- Alt + ⇧ Shift + y Fermer cette tâche
Édition de la tâche
- Alt + ⇧ Shift + s Enregistrer la tâche
"Minimum 1GB of physical RAM"
je crains que ca provoque pas mal de soucis…
Bonjour,
Oui les config recommandées sont plutôt étranges sur leur site, d'après ce qu'on voit c'est lié aux besoins lors de l'installation… et avec un environement desktop.
De mon coté avec l'installation de base sans destkop environment ça tourne dans les 200-300MB.
J'ai fait en sorte que openSUSE MicroOS fonctionne parfaitement sur la Freebox Delta (et je confirme que ça marche nickel).
Il faut télécharger https://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-MicroOS.aarch64-ContainerHost-OpenStack-Cloud.qcow2 et importer directement l'image et redimensionner le disque (prévoir large dès le départ). Et vous pouvez utiliser l'integration cloud-init pour la configuration initiale.
Par contre, évitez de faire tourner k3s + home-assistant en k3s dessus, ça fait beaucoup trop d'IO constamment (surtout k3s) et si vous êtes en RAID, vous pouvez vous retrouver avec du RAID qui ne redémarre plus ou une partition btrfs qui ne se monte plus, lors d'un reboot un peu trop sauvage de la freebox (coupure electrique voire parfois reboot depuis l'interface freebox)..
Bonjour
Merci @fcrozat !
Si l'image n'est pas dispo dans la liste, vous pouvez quand même automatiser 100% de la création d'une VM MicroOS dans la freebox depuis l'API avec la lib bash :
https://github.com/nbanb/fbx-delta-nba_bash_api.sh
Pour download :
enc_dl_task_api download_url=https://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-MicroOS.aarch64-ContainerHost-OpenStack-Cloud.qcow2 download_dir=${download_dir} filename=openSUSE-MicroOS.aarch64-ContainerHost-OpenStack-Cloud.qcow2 monitor_dl_task_adv_api $id dl_task_log_api $id del_dl_task_api $idMerci @fcrozat pour le data-www-url-encode ;)
Puis la lib permet maintenant de gérer les VM directement (create, resize, start, stop…) :
Encore merci @fcrozat, sans tes suggestions sur GH je n'aurais jamais dev tout ça…!
2è solution : avec iPXE :
Recompilez iPXE avec un home made script et vous pourrez booter une VM de la freebox directement sur le net (l'iso build fait 1M)
Si ça vous interesse, je peux vous passer mon ipxe script (ça donne ça quand ça boot, le menu est customisable):
_____ _ __ ____ __ | ___| __ ___ ___| |__ _____ __ \ \ / / \/ | | |_ | '__/ _ \/ _ \ '_ \ / _ \ \/ / \ \ / /| |\/| | | _|| | | __/ __/ |_) | (_) > < \ V / | | | | |_| |_| \___|\___|_.__/ \___/_/\_\ \_/ |_| |_| ____________________/Network-config\____________________ Configuring (net0 aa:e7:cf:5b:38:72).... iPXE NetBoot / Recovery - FreeboxVM - NBA ---------- Linux RESCUE ------------------- <e> Rescue mode Debian Stable (19) <b> Busybox shell on Debian Stable ---------- Linux install ------------------ <i> Install Debian Stable <j> Install Debian Stable - Expert mode ---------- Tools and utilities ------------ <s> iPXE shell <n> iPXE network information <q> Exit iPXE and continue BIOS boot <r> Reboot computer <p> poweroff computer ---------- iPXE netboot.XYZ --------------- <x> Chain to netboot.xyz --------------------------------------------Cordialement
nbanba
Merci @fcrozat,
C'est ce que jai fait et ça tourne très bien en effet avec le cloud-init.
@nbanba ah je veux bien le script ipxe svp, fonctionne avec le lien open suse directement pour booter sur l'ISO ? cloud-init est supporté ?
Cordialement
Fvt
Bonjour
@_fvt
Cloud init doit être supporté sur le boot online (pas testé sur OpenSUZE mais le boot online perdrait beaucoup d'intérêt si cloud-init n'est pas installed)
Dans tous les cas, si vous installez vous même OpenSUZE, cloud-int est supporté par l'API de la freebox donc le sera sur votre propre image (en installant le pkg cloud-init bien sûre)
Concernant iPXE, pour boot online avec l'iso généré depuis mon script créant le custom menu iPXE :
Au démarrage selectionnez <x> puis openSUZE
Puis la version souhaitée
Pour avoir le code de ipxe :
Ensuite, j'ai fais les modifs suivantes pour que ça fonctionne (lire compile sans erreur avec les features souhaitées ):
Dans general.h :
et pour que les flèches du clavier fonctionnent dans les websocket API de la freebox avec websocat tel qu'utilisé par la lib bash pour lancer la console ou VNC (lib bash citée dans les échanges ci-dessus et disponible ici https://github.com/nbanb/fbx-delta-nba_bash_api.sh ), j'ai modifié dans console.h
Aussi, pour le support de ma PKI interne pour HTTPS, j'ai fais d'autres modifs (j'ai du revoir pas mal de trucs avec le cross-signing), je ne détaillerai pas ici mais dans l'idée c'est décrit ici : https://ipxe.org/crypto
Une fois ces modif faites, on compile avec un "EMBEDDED iPXE SCRIPT" :
/!\ Attention, ici je 'cross-compile' pour ARM64 depuis une machine de dev AMD64 avec 16 CPU dispo (-j16 dans la command):
Pour ne build que le firmware pour flasher la carte réseau, on peut faire :
Puis on en arrive enfin au script iPXE en question :
cat /usr/src/ipxe/src/_nba/ipxe_script/freebox-vm_nba_netbootxyz.ipxe #!ipxe # set esc:hex 1b set cls ${esc:string}[2J set rst ${esc:string}[3J echo ${cls} echo ${rst} set sp:hex 20 set sp ${sp:string} set tputinit:hexraw 1b5b21701b5b3f333b346c1b5b346c1b3e1b5b3f36396c echo \"${tputinit:string}\" console colour --rgb 0xa0522d 7 colour --rgb 0x4682b4 4 colour --rgb 0x2cc4e2 5 cpair --foreground 7 --background 4 0 cpair --foreground 7 --background 9 1 cpair --foreground 7 --background 6 2 echo ${sp}_____${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}_${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}__${sp}${sp}${sp}${sp}${sp}____${sp}${sp}__${sp} echo |${sp}${sp}___|${sp}__${sp}___${sp}${sp}___|${sp}|__${sp}${sp}${sp}_____${sp}${sp}__${sp}\${sp}\${sp}${sp}${sp}/${sp}/${sp}${sp}\/${sp}${sp}| echo |${sp}|_${sp}|${sp}'__/${sp}_${sp}\/${sp}_${sp}\${sp}'_${sp}\${sp}/${sp}_${sp}\${sp}\/${sp}/${sp}${sp}\${sp}\${sp}/${sp}/|${sp}|\/|${sp}| echo |${sp}${sp}_||${sp}|${sp}|${sp}${sp}__/${sp}${sp}__/${sp}|_)${sp}|${sp}(_)${sp}>${sp}${sp}<${sp}${sp}${sp}${sp}\${sp}V${sp}/${sp}|${sp}|${sp}${sp}|${sp}| echo |_|${sp}${sp}|_|${sp}${sp}\___|\___|_.__/${sp}\___/_/\_\${sp}${sp}${sp}${sp}\_/${sp}${sp}|_|${sp}${sp}|_| echo echo ____________________/Network-config\____________________ echo dhcp net0 echo echo Network info from DHCP: show net0/ip show net0/mac show net0/netmask show net0/gateway show dns route echo ________________________________________________________ echo echo #sleep 1 prompt --key 0x02 --timeout 2000 Press Ctrl-B for the iPXE command line... && shell || echo # console (not working on freebox VM or on arm64 ? - to investigate ...) : #console --picture https://iliad-strapi.s3.fr-par.scw.cloud/Freebox_Delta_Server_5671cbc6f7.png --left 32 --right 32 --top 32 --bottom 48 --keep :main-menu menu iPXE NetBoot / Recovery - FreeboxVM - NBA item --gap -- ---------- Linux RESCUE ------------------- item --key e debian-stable-rescue <e> Rescue mode Debian Stable item --key b debian-stable-busybox <b> Busybox shell on Debian Stable item --gap -- ---------- Linux install ------------------ item --key i debian-stable-install <i> Install Debian Stable item --key j debian-expert-install <j> Install Debian Stable - Expert mode item --gap -- ---------- Tools and utilities ------------ item --key s shell <s> iPXE shell item --key n net <n> iPXE network information item --key q exit <q> Exit iPXE and continue BIOS boot item --key r reboot <r> Reboot computer item --key p poweroff <p> poweroff computer item --gap -- ---------- iPXE netboot.XYZ --------------- item --key x netbootxyz <x> Chain to netboot.xyz item --gap -- -------------------------------------------- choose --default debian-stable-rescue --timeout 20000 option && goto ${option} :debian-stable-busybox kernel https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/debian-installer/arm64/linux console=ttyS0,115200n8 root=/dev/ram0 init=/bin/sh initrd https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/debian-installer/arm64/initrd.gz boot :debian-stable-rescue kernel https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/debian-installer/arm64/linux emergency/enable=true console=ttyS0,115200n8 initrd https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/debian-installer/arm64/initrd.gz boot :debian-stable-install kernel https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/debian-installer/arm64/linux console=ttyS0,115200n8 root=/dev/ram0 initrd https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/debian-installer/arm64/initrd.gz boot :debian-expert-install kernel https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/debian-installer/arm64/linux console=ttyS0,115200n8 priority=low initrd https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/debian-installer/arm64/initrd.gz boot :netbootxyz chain --autofree https://boot.netboot.xyz/ipxe/netboot.xyz-arm64.efi :net #echo 'fbxvm i PXE' | figlet | sed -e 's/ /\${sp}/g' -e 's/^\.*/echo /g' echo ${sp}${sp}__${sp}_${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}_${sp}${sp}${sp}______${sp}${sp}_______${sp} echo ${sp}/${sp}_|${sp}|____${sp}${sp}____${sp}${sp}${sp}___${sp}__${sp}___${sp}${sp}${sp}${sp}(_)${sp}|${sp}${sp}_${sp}\${sp}\/${sp}/${sp}____| echo |${sp}|_|${sp}'_${sp}\${sp}\/${sp}/\${sp}\${sp}/${sp}/${sp}'_${sp}`${sp}_${sp}\${sp}${sp}${sp}|${sp}|${sp}|${sp}|_)${sp}\${sp}${sp}/|${sp}${sp}_|${sp}${sp} echo |${sp}${sp}_|${sp}|_)${sp}>${sp}${sp}<${sp}${sp}\${sp}V${sp}/|${sp}|${sp}|${sp}|${sp}|${sp}|${sp}${sp}|${sp}|${sp}|${sp}${sp}__//${sp}${sp}\|${sp}|___${sp} echo |_|${sp}|_.__/_/\_\${sp}${sp}\_/${sp}|_|${sp}|_|${sp}|_|${sp}${sp}|_|${sp}|_|${sp}${sp}/_/\_\_____| echo ___________________________________________________________ echo echo _______________________ echo Network info from DHCP: echo show net0/ip show net0/mac show net0/netmask show net0/gateway echo echo ___________________ echo DNS info from DHCP: echo show dns echo echo _____________________ echo Route info from DHCP: echo route echo echo echo ___________________________________________________________ prompt --key 0x04 --timeout 20000 Press Ctrl-D for iPXE main menu... && goto main-menu || goto main-menu :shell #echo 'i PXE SHELL' | figlet | sed -e 's/ /\${sp}/g' -e 's/^\.*/echo /g' echo ${sp}_${sp}${sp}${sp}______${sp}${sp}_______${sp}${sp}${sp}____${sp}${sp}_${sp}${sp}${sp}_${sp}_____${sp}_${sp}${sp}${sp}${sp}${sp}_${sp}${sp}${sp}${sp}${sp} echo (_)${sp}|${sp}${sp}_${sp}\${sp}\/${sp}/${sp}____|${sp}/${sp}___||${sp}|${sp}|${sp}|${sp}____|${sp}|${sp}${sp}${sp}|${sp}|${sp}${sp}${sp}${sp} echo |${sp}|${sp}|${sp}|_)${sp}\${sp}${sp}/|${sp}${sp}_|${sp}${sp}${sp}\___${sp}\|${sp}|_|${sp}|${sp}${sp}_|${sp}|${sp}|${sp}${sp}${sp}|${sp}|${sp}${sp}${sp}${sp} echo |${sp}|${sp}|${sp}${sp}__//${sp}${sp}\|${sp}|___${sp}${sp}${sp}___)${sp}|${sp}${sp}_${sp}${sp}|${sp}|___|${sp}|___|${sp}|___${sp} echo |_|${sp}|_|${sp}${sp}/_/\_\_____|${sp}|____/|_|${sp}|_|_____|_____|_____| echo shell :reboot #echo 'reboot' | figlet | sed -e 's/ /\${sp}/g' -e 's/^\.*/echo /g' echo ${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}_${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}_${sp}${sp}${sp} echo ${sp}_${sp}__${sp}___|${sp}|__${sp}${sp}${sp}___${sp}${sp}${sp}___${sp}|${sp}|_${sp} echo |${sp}'__/${sp}_${sp}\${sp}'_${sp}\${sp}/${sp}_${sp}\${sp}/${sp}_${sp}\|${sp}__| echo |${sp}|${sp}|${sp}${sp}__/${sp}|_)${sp}|${sp}(_)${sp}|${sp}(_)${sp}|${sp}|_${sp} echo |_|${sp}${sp}\___|_.__/${sp}\___/${sp}\___/${sp}\__| reboot :poweroff #echo 'poweroff' | figlet | sed -e 's/ /\${sp}/g' -e 's/^\.*/echo /g' echo ${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}${sp}__${sp}${sp}__${sp} echo ${sp}_${sp}__${sp}${sp}${sp}_____${sp}${sp}${sp}${sp}${sp}${sp}_____${sp}_${sp}__${sp}___${sp}${sp}/${sp}_|/${sp}_| echo |${sp}'_${sp}\${sp}/${sp}_${sp}\${sp}\${sp}/\${sp}/${sp}/${sp}_${sp}\${sp}'__/${sp}_${sp}\|${sp}|_|${sp}|_${sp} echo |${sp}|_)${sp}|${sp}(_)${sp}\${sp}V${sp}${sp}V${sp}/${sp}${sp}__/${sp}|${sp}|${sp}(_)${sp}|${sp}${sp}_|${sp}${sp}_| echo |${sp}.__/${sp}\___/${sp}\_/\_/${sp}\___|_|${sp}${sp}\___/|_|${sp}|_|${sp}${sp} echo |_|${sp}${sp} poweroff :exit exitEnsuite, vous modifiez la VM pour qu'elle boot sur l'iso iPXE (avec la lib bash ça donne):
Puis on lance la VM et on se connecte au websocket de la freebox pour accéder à la console depuis le shell courant (avec la lib bash ça donne):
ou en 1 seule commande :
NB:
pour quitter la console websocket j'ai mis la valeur 'hex 11' qui correspond à CTRL+K comme 'control kill' au lieu de CTRL+\Q = 'control quit' (trop chiant à tapper sur un clavier pas qwerty)
N'hésitez pas à demander si besoin d'aide,
Cordialement
nbanba