Dual boot FreeBsd / Debian

ben non justement, il fait partie du slice. C’est bien ça le problème.

Oui j’ai vérifié et il y a la place, c’est bien ça qui est bizarre.

Non aucun, juste HDD Harddisk.

Tout à fait.

je n’ai pas vérifié pour le chemin de support amovible, et lors de l’installation debian, j’ai mis non à cette question, comme je le fait toujours. je devrais peut etre essayer de dire oui.

Oui je peux sectionner une partition EFI, soit celle de FreeBsd, soit celle de Debian.

ben non, car là c’est sur la partition EFi créé avec debian, et dans ce cas l’installation s’est passée correctement. Pas d’erreur à grub-install, ni à update-grub.

Il faut vraiment que je voie ça.

root@faust:~ # mount
/dev/gpt/rootfs on / (ufs, local, soft-updates)
devfs on /dev (devfs, local, multilabel)
devfs on /var/dhcpd/dev (devfs, local, multilabel)



ls /dev/ada0
ada0%   ada0p1% ada0p2% ada0p3% ada0p4% ada0p5% ada0p6% ada0p7%


root@faust:~ # fdisk /dev/ada0
******* Working on device /dev/ada0 *******
parameters extracted from in-core disklabel are:
cylinders=1984533 heads=16 sectors/track=63 (1008 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=1984533 heads=16 sectors/track=63 (1008 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 238 (0xee),(EFI GPT)
    start 1, size 2000409263 (976762 Meg), flag 0
        beg: cyl 0/ head 0/ sector 1;
        end: cyl 1023/ head 254/ sector 63
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>



root@faust:~ # gpart show
=>        40  2000409191  ada0  GPT  (954G)
          40      409600     1  efi  (200M)
      409640        1024     2  freebsd-boot  (512K)
      410664   106171048     3  freebsd-ufs  (51G)
   106581712    16777216     4  freebsd-swap  (8.0G)
   123358928         304        - free -  (152K)
   123359232      487424     5  linux-data  (238M)
   123846656       98304     6  efi  (48M)
   123944960   585936896     7  linux-lvm  (279G)
   709881856  1290527375        - free -  (615G)

Ici BOOT et BOOTEFI sont les label que j’ai donné à mes partitions montées sur /boot et /boot/efi dans Debian:

root@faust:~ # ls /dev/gpt
BOOT    BOOTEFI bootfs  rootfs  swapfs

Quand on à monter l’une des partitions Debian, la 5 par exemple, qui est en ext4, je n’y arrive pas:

root@faust:~ # mount -t ext4 /dev/ada0p5 /mnt/disk5
mount: /dev/ada0p5: Operation not supported by device

root@faust:~ # mount -t ext4 -o ro /dev/gpt/BOOT /mnt/disk5
mount: /dev/gpt/BOOT: Operation not supported by device

rien à faire.

voici comment j’ai fait mon dial boot debian / freeBSD

Merci :slight_smile:
J’ai testé sur ma VM de test.
La seule chose c’est que je n’arrive pas à faire démarrer l’OPNsense.
kfreebsd /boot/loader ne fonctionne pas. Le fichier est indiqué comme non disponible

par contre j’ai bien le menu Grub pour la partie debian .

Si je demarre directement sur le disque via le bios, c’est l’opnsense qui demarre (ce qui est normal à priori)

root@vmsdualsrv01:~# fdisk -l /dev/sda
Disque /dev/sda : 180 GiB, 193273528320 octets, 377487360 secteurs
Modèle de disque : VBOX HARDDISK
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : F4874EEA-F7D4-11E9-BB95-000EC4D223F5

Périphérique     Début       Fin  Secteurs Taille Type
/dev/sda1           40    409639    409600   200M Système EFI
/dev/sda2       409640    410663      1024   512K Amorçage FreeBSD
/dev/sda3       410664 106581711 106171048  50,6G UFS FreeBSD
/dev/sda4    106581712 123358927  16777216     8G Partition d'échange FreeBSD
/dev/sda5    123359232 123750399    391168   191M Système EFI
/dev/sda6    123750400 377485311 253734912   121G LVM Linux

j’ai utilisé pour le menu OPNSense, /dev/sda1,2 et 3 sans aucun succès. /boot/loader existe bien pourtant:

image

le grub est installé sur la partition EFI n°5, la partition efi n°1 est la partition efi originelle de l’OPNSense

Je ne vois aucun diskabel BSD sur ce disque, seulement une table de partition GPT , et BSD utilise des partitions GPT standard que Linux peut voir.

Visiblement c’est pour une amorçage BIOS, pas EFI.
Je me demande si la commande kfreebsd de GRUB peut fonctionne ainsi en mode EFI pour charger un loader et non un noyau FreeBSD. Il faudrait peut-être plutôt essayer de charger directement le noyau (fichier kernel ?)

Je ne connais rien à FreeBSD, mais j’essaierais de chaîner un chargeur EFI avec la commande chainloader. Je vois par exemple un fichier loader.efi dans /boot. Il doit aussi être dans la partition EFI /dev/sda1, probablement sous le chemin /efi/boot/bootx64.efi.

J’ai essayé avec kernel et fbreebsd.
Avec chainloader j’ai utilisé:
menuentry « OPNSense » {
insmod ufs2
set root=(hd0,1)
chainloader +1
#kfreebsd /boot/loader
}

Mais j’ai un message d’erreur: invalid EFI file path

(hd0,1) n’est pas un partition UFS, c’est la partition EFI de FreeBSD (/dev/sda1). Ce n’est pas elle qui contient les fichiers de /boot. Ne connaissant pas FreeBSD, j’ignore si /boot se trouve dans sda2 ou sda3.
chainloader +1̀ (charger le secteur d’amorce de la partition définie par $root) n’a de sens qu’avec l’amorçage BIOS. En amorçage EFI il faut spécifier un exécutable EFI (*.efi).
/boot/loader n’ayant pas le suffixe « .efi », je doute que ce soit un exécutable EFI. Essaie plutôt avec un des fichiers qui ont ce suffixe, je vois par exemple un loader.efi.

Mais à mon avis le plus sûr est de chaîner l’exécutable /efi/boot/bootx64.efi de la partition EFI de FreeBSD puisque c’est lui qui est chargé par le firmware.

Tu sais que tu peux faire ces essais dans le shell de GRUB (touche ‹ c ›) sans avoir besoin de modifier grub.cfg et redémarrer à chaque fois ?

Bonne idée :slight_smile:, j’avais complètement oublié cette possibilité.

j’ai donc essayé, et là je m’aperçois qu’en faisant un ls j’obtiens une liste de partition dans laquelle toutes les partitions apparaissent en tant que (hd0,gptX), plus les lvm comme (lvm/nom du volume)

quand je fais un ls (lvm/vg00-var) j’ai bien les fichiers/repertoires qu’y s’y trouvent.
par contre quand j’essaye de le faire avec la partition freebsd (hd0,gpt3) pareil.
Quand j’essaye avec la partition efi (hd0,gpt2) de freebsd j’ai erreur : système de fichier inconnu.

j’ai ajouté insmod ufs2 et insmod part_gpt, avec le root sur (hd0,gpt1) et chainloader /efi/boot/bootx64.efi, après le boot ca a marché.

Merci, ça ne fait que presque un mois que je suis là-dessus :slight_smile:

Ne me reste qu’un seul truc c’est le fwsetup dans le 30_uefi-firmware qui n’apparait pas, mais bon, je peux m’en passer.

Au final, j’ai donc:

menuentry "OPNSense" {
insmod ufs2
insmod part_gpt
insmod chain
set root=(hd0,gpt1)
chainloader /efi/boot/BOOTx64.efi
}

Sur ma VM c’est bootx64.efi sur le minipc, c’est BOOTx64.efi

Etape suivante: configurer le client dhcp pour obtenir l’ip publique de Orange.
si ca marche la base est bonne, reste plus que les éléments de sécurité à finaliser (parefeu déjà prêt), les outils de configuration et de sauvegarde, le serveur DHCP (déjà pret) et le serveur Bind (déjà prêt aussi et en mieux que sur OPNSense).

Normalement cette commande affiche les caractéristiques du volume (taille, type, UUID…). Pour afficher son contenu il faut ajouter / (+ chemin éventuel).

Pareil que quoi ?

A priori la partition EFI de FreeBSD est (hd0,gpt1), pas (hd0,gpt2). Cette dernière est désignée « FreeBSD Boot » mais j’ignore à quoi cela correspond. Peut-être un équivalent de la partition « BIOS boot » utilisée par GRUB pour l’amorçage BIOS, qui ne contient pas de système de fichiers.

Je ne pense pas que ce soit utile. part_gpt est déjà chargé et la partition EFI est de type FAT, pas UFS.

FAT n’est pas sensible à la casse donc peu importe.

30_uefi-firmware fait une vérification dans les variables EFI pour ajouter une entrée de menu « System setup ». Celle-ci ne figure pas sur toutes mes machines UEFI. Cela dépend peut-être d’une fonctionnalité du firmware UEFI. Est-ce que la commande fwsetup dans le shell de GRUB fonctionne ?

[Edit] Au fait, tu as réussi à faire en sorte que GRUB soit lancé par défaut et affiche son menu ?

j’avais oublié le « / » dans mon commentaire, mais bien réalisé sinon.

ca marche comme pour lvm :slight_smile:

C’est bien la gpt1 en fait qu’il faut que j’utilise.

oui en effet, j’ai enlevé tous les insmod.

Ben apparemment sur mon minipc si, car bootx64 n’a pas marché.

je n’ai pas testé en shell, mais au final ce n’est pas grave car je peux me rabattre sur le bios si j’ai besoin.

Oui, il est lancé par défaut (j’ai modifié le boot du BIOS pour qu’il charge Debian).

j’ai les Option:

  • Debian
  • Options avancées pour Debian GNU/Linux
  • OPNSense

Ca marche parfaitement désormais.

Au final je n’ai plus que:

menuentry "OPNSense" {
          set root=(hd0,gpt1)
          chainloader /efi/boot/BOOTx64.efi
}

Alors pourquoi avoir écrit « par contre » ? Ce n’est pas pour pinailler, j’aime bien comprendre.

mauvaise grammaire, j’avais écris autre chose au départ et j’ai oublié de corriger :slight_smile:

Pour conclure ce sujet,

Je suis venu, j’ai vu, et ces préjugés sans fondement ont été vaincus.

:sweat_smile:
certes :slight_smile: et maintenant je vais pouvoir la remplacer

Alors c’était bien la peine de faire une dual boot… (ceci dit, maintenant tu sais faire)

Ben en fait, si, parce que pour le moment, je n’ai pas pu tester en reel, donc il y a un risque que ça ne marche pas du premier coup.
Donc je fait une étape, et je garde la version OPNSense en attendant.