Pourquoi?

Avoir Debian 13.3, Core, CorePure64, Core avec l'espace noyau 64 bits et l'espace utilisateur 32 bits et FreeDOS

Surprenant, mais TCL peut coexister sur la meme partition ext4 que debian. J'ai suivi l'installation en mode expert pour paritioner mon disque de 120 Go en 1 partition de 118 Go ext4 pour Debian et une partition FAT32 a la fin pour FreeDOS.

Apercu de l'organisation du disque et des `menuentry` a la fin

J'ai debian 13.3 installe sur /dev/sda1 (partition de 118 Go). J'ai des entrees additionnelles par /etc/grub.d/40_custom et je met a jour le grub avec sudo update-grub.


#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "core64 17.0 with 32 bit user space" {
	insmod ext2
	set root='hd0,1'
	linux /boottcl/vmlinuz64-17.0 vga=795 syslog showapps tce=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" home=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" opt=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" lang=fr_CA.UTF-8
	initrd /boottcl/rootfs-17.0.gz /boottcl/modules64-17.0.gz
}
menuentry "core64 17.0" {
	insmod ext2
	set root='hd0,1'
	linux /boottcl/vmlinuz64-17.0 vga=795 syslog showapps tce=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" home=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" opt=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" lang=fr_CA.UTF-8
	initrd /boottcl/corepure64-17.0.gz
}

menuentry "core 17.0" {
	insmod ext2
	set root='hd0,1'
	linux /boottcl/vmlinuz-17.0 vga=795 syslog showapps tce=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" home=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" opt=UUID="ab289eda-4e92-4c53-994d-1b7cfdef0d8e" lang=fr_CA.UTF-8
	initrd /boottcl/core-17.0.gz
}
menuentry "FreeDOS" {
	set root='hd0,2'
	insmod part_msdos
	insmod fat
	insmod freedos
	drivemap -s (hd0) ${root}
	parttool (hd0,1) hidden+
	freedos /kernel.sys
}

Etapes

  1. installer debian 13.3 en utilisant l'image «net install» et l'option «expert installation».
  2. Configurer la langue, le clavier, le miroir de paquets, etc...
  3. Partitionner en 2 ou 3 partitions primaires: 118 Go de ext4, 2 Go de FAT32.
  4. Compléter l'installation de Debian et Regler la partition FAT32 pour FreeDOS
  5. Creer les `menuentry` tout de suite meme si les fichiers sont manquants.
  6. Telecharger FreeDOS - FD14-FullUSB.zip
  7. Creer une carte SD ou clef USB bootable avec l'image de FreeDOS sous Debian avec
    
    sudo umount /dev/mmcblk0
    sudo cp  FD14FULL.img /dev/mmcblk0
    sudo sync
    
    Puis, redemarrer.
  8. Au démarrage, peser sur ESC pour booter dans la carte FreeDOS.
  9. Installer FreeDOS, soit FreeDOS equivalent a l'image bootable FreeDOS normalement installe
  10. Telecharger les fichiers clefs de Tiny Core Linux a partir de Debian et ajouter un `menuentry` pour demarrer Tiny Core Linux.

Regler la partition FAT32 pour FreeDOS

boot debian
sudo umount /dev/sda2
sudo fdisk /dev/sda
p pour voir les partitions, le LBA va manquer
t pour changer le type de la partition
Ma partition FAT32 est plus que 8 Go donc on a besoin de LBA donc entrer c
p pour voir les partitions, le LBA va être là
w pour écrire les changements

Si la partition doit être reformatée :

sudo mkfs.vfat -F 32 /dev/sda2

S'assurer aussi que la partition est marquée bootable (fdisk → toggle boot flag).

FreeDOS equivalent a l'image bootable

Quitter l'installation pour retrouver la ligne de command DOS. SYS D: XCOPY C:\*.* D:\ /E /H edit fdauto.bat rem cdrom (2fois) rem setup rem welcome Ensuite REBOOT ou CTRL+ALT+DELETE pour redémarrer Dans Debian, modifier /etc/grub.d/40_custom pour ajouter un menuentry pour freedos pour booter directement dans freedos, aller dans debian et sudo vim /etc/default/grub change the default entry to 2 change the default resolution to 640x480 sudo update-grub

FreeDOS normalement installe

Au lieu de quitter l'installation, continuer l'installation, mais refuser d'installer un bootloader. On s'assure de ne pas ecraser le boot sector quand l'installeur nous le demande.

Problème : FreeDOS échoue à démarrer avec le contrôleur SATA en mode AHCI

Résultat : Erreurs au démarrage :

Invalid Opcode at 88D6 10D0 0202
Bad or missing Command Interpreter

COMP D:\COMMAND.COM C:\COMMAND.COM montre de nombreuses différences entre l'image FreeDOS et l'installation sur disque.

Explication : FreeDOS n'a pas de drivers AHCI natifs. Il utilise les interruptions BIOS (INT 13h) qui ne communiquent pas avec un contrôleur SATA en mode AHCI. Le démarrage depuis USB fonctionne car il passe par le contrôleur USB, pas SATA.

Solution : Mettre le contrôleur SATA en mode IDE/Legacy dans le BIOS/UEFI.

Alternatives si on veut garder le mode AHCI :

Obtenir les fichiers pour TCL

Pour obtenir les fichiers necessaires:


#!/bin/sh
MAIN_URL="http://www.tinycorelinux.net/17.x/x86/release/distribution_files"
VMLINUZ_64="$MAIN_URL/vmlinuz64"
MODULES_64="$MAIN_URL/modules64.gz"
ROOTFS_GZ="$MAIN_URL/rootfs.gz"
wget "$VMLINUZ_64"
wget "$VMLINUZ_64.md5.txt"
md5sum -c vmlinuz64.md5.txt
wget "$MODULES_64"
wget "$MODULES_64.md5.txt"
md5sum -c modules64.gz.md5.txt
wget "$ROOTFS_GZ"
wget "$ROOTFS_GZ.md5.txt"
md5sum -c rootfs.gz.md5.txt
Et ensuite on place les fichiers dans /boottcl/

On peut aussi modifier /etc/default/grub pour selectionner l'entree desiree.

Voir aussi Compiler Rust pour i586 localement pour l'utilisation de core64 avec espace utilisateur 32 bits.