Il y a eu beaucoup de questions sur les disques RAM et je connais les ramfs et les tmpfs qui permettent l'utilisation de ram comme périphérique bloc. Cependant, mon intérêt est d'utiliser une plage d'adresses de mémoire fixe comme périphérique de bloc.
Cela découle de la nécessité d'utiliser la RAM non volatile disponible dans mon système. J'ai 6 Go de RAM disponibles et 8 Go de RAM non volatile présents. La sortie de / proc / iomem me donne ce qui suit
100000000-17fffffff: RAM système
180000000-37fffffff: réservé
Ici, la région de 6 Go à 14 Go correspond à la région RAM non volatile qui est marquée par la carte mémoire du BIOS E820 comme réservée. Mon intention principale est d'utiliser cette NVRAM comme périphérique bloc sous Linux. Ceci est utile pour tester les systèmes NVRAM. Existe-t-il une commande linux déjà présente qui me permettrait d'utiliser cette région comme périphérique bloc, ou dois-je écrire mon propre pilote de périphérique noyau pour faciliter la même chose?
Réponses:
Je ne suis pas un expert des pilotes de périphériques, mais voici quelques conseils pour votre R&D:
Quelques autres sources pertinentes:
la source
Avant l'introduction de
tmpfs
/initramfs
il étaitramdisk
utilisé pour charger lesinitrd
images, un bloc de blocs de taille fixe prédéfini, je pense contigu, au moins sur les implémentations antérieures.Le pilote de bloc lui-même n'a pas de paramètres pour l'adresse mémoire, seulement la taille, mais le noyau utilisé pour charger les images initrd à une adresse prédéfinie (par config) donc un coup d'œil dans le code du noyau main / init pourrait aider (je soyez surpris si le ramdisk n'est plus supporté pour initrd mais comme initramfs existe depuis de nombreuses années, je n'utilise plus de ramdisk ).
La source du pilote était pilote / bloc / rd.c , si je vois bien maintenant drivers / block / brd.c .
Sinon, à la recherche de disque virtuel, j'ai trouvé une implémentation qui semble intéressante:
Disque sur RAM - Jouer avec les pilotes de bloc
la source