Mount Btrfs "unknown filesystem type"

Bonjour,
Voilà je fais mumuse avec un nouveau disque dur et je voulais tester Btrfs.
Malheureusement j’ai le joli message d’erreur suivant

mount -t btrfs /dev/mapper/vg_X-lv_A /rep_de_dest mount: unknown filesystem type 'btrfs'

Du coup je regarde à droite à gauche, j’ai bien installé le package “[mono]btrfs-tools[/mono]”, même s’il ne semble pas être fautif, j’ai fait un [mono]man mount[/mono] et je ne trouve pas le support de ce type de FS dans la liste des FS supporté :

[quote]-t, --types vfstype
The argument following the -t is used to indicate the filesystem type. The filesystem types which are currently supported include: adfs, affs, autofs, cifs, coda, coherent, cramfs, debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs, ubifs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs, xiafs. Note that coherent, sysv and xenix are equivalent and that xenix and coherent will be removed at some point in the future - use sysv instead. Since kernel version 2.1.21 the types ext and xiafs do not exist anymore. Earlier, usbfs was known as usbdevfs. Note, the real list of all supported filesystems depends on your kernel.[/quote]

J’ai vérifier ma partition et elle semble OK :

# fsck.btrfs /dev/mapper/vg_venabulis-lv_coffre checking extents checking fs roots checking root refs found 28672 bytes used err is 0 total csum bytes: 0 total tree bytes: 28672 total fs tree bytes: 8192 btree space waste bytes: 23875 file data blocks allocated: 0 referenced 0 Btrfs Btrfs v0.19

Je suis allé faire un tour sur le Wiki mais il n’y a rien de particulié.
Et une recherche avec notre cher espion ne me donne rien de concluant, des panne de fs ou des pertes de fichier mais rien sur mon problème.
Pour info les manip sont faites sur un CubieBoard, donc archi armhf et Cubian (Debian 7.0).

Le support de btrfs dépend plus du noyau que de mount

$ cat /proc/filesystems
$ lsmod | grep btrfs

Qui te dit que ton problème ne serait pas, justement, une panne de fs qui pourrait mener à une perte de fichiers ? Tu ne serais pas le premier à perdre des fichiers avec btrfs …

Pour écarter les soupçons, tester sous un autre système, par exemple, démarrer depuis un live-cd.

Je ne peux pas booter sur un live-CD puisque je n’ai pas de lecteur sur ce genre de machine :005

#lsmod Module Size Used by xt_multiport 2467 1 iptable_filter 1541 1 ip_tables 13037 1 iptable_filter x_tables 17206 3 ip_tables,xt_multiport,iptable_filter cpufreq_userspace 3532 0 cpufreq_fantasy 3855 0 cpufreq_powersave 1242 0 cpufreq_conservative 5720 0 mali 113847 0 ump 57087 1 mali gpio_sunxi 8593 0
En effet il manque quelques petits trucs :mrgreen:

Sur un système “normal” (AMD64) j’ai ça :

$lsmod | grep btrfs btrfs 766929 1 raid6_pq 95238 1 btrfs libcrc32c 12426 1 btrfs zlib_deflate 25500 1 btrfs xor 21040 1 btrfs

Je viens de regarder avec [mono]module-assistant[/mono] mais je ne trouve rien qui parle de ce module.

Sans module btrfs, ça risque de marcher moins bien …

Btrfs en tant que module (M) ou en tant qu’élément compris (Y) Pour (Y) (re)voir /proc/filesystems.
Btrfs omis (N), N: Nicht/No/Niente/Nada … rien .
Btrfs fait partie des options régulières du noyau.

Kconfig btrfs.

config BTRFS_FS
	tristate "Btrfs filesystem (EXPERIMENTAL) Unstable disk format"
	depends on EXPERIMENTAL
	select LIBCRC32C
	select ZLIB_INFLATE
	select ZLIB_DEFLATE
	select LZO_COMPRESS
	select LZO_DECOMPRESS
	help
	  Btrfs is a new filesystem with extents, writable snapshotting,
	  support for multiple devices and many more features.

	  Btrfs is highly experimental, and THE DISK FORMAT IS NOT YET
	  FINALIZED.  You should say N here unless you are interested in
	  testing Btrfs with non-critical data.

	  To compile this file system support as a module, choose M here. The
	  module will be called btrfs.

	  If unsure, say N.

En découlent
config BTRFS_FS_POSIX_ACL
config BTRFS_FS_CHECK_INTEGRITY

[quote=“Mimoza”]…Je ne peux pas booter sur un live-CD …[/quote]Si tu n’as pas de lecteur CD, tu pourrais créer une clef USB (ou carte SD) avec un image “iso” “debian Live” => debian.org/CD/live/

Bon les gens faut lire jusqu’au bout les explication … Je travail sur CETTE machine donc pas de liveCD dispo !!! Mais il est vrai que je pourrais tester une autre distrib, genre Lubuntu qui est la distrib “officiel”.

@etxeberrizahar : Je n’ai pas de répertoire /boot/config* et le contenu du fichier [mono]filesystems[/mono] ressemble à ça :

cat /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev cgroup nodev cpuset nodev tmpfs nodev devtmpfs nodev binfmt_misc nodev debugfs nodev securityfs nodev sockfs nodev pipefs nodev anon_inodefs nodev rpc_pipefs nodev configfs nodev devpts reiserfs ext3 ext2 ext4 nodev ramfs vfat msdos iso9660 hfsplus hfs nodev nfs nodev nfs4 nodev cifs ntfs nodev autofs fuseblk nodev fuse nodev fusectl udf ocfs2 nodev ocfs2_dlmfs

Pas de Btrfs en vue, donc pas de support, je me renseigne pour l’ajouter.

Puisque /proc/filesystems ne trahit pas le support de btrfs, il y a lieu de penser qu’il te faudrait installer ou compiler à ta main un noyau qui le supporte.

Ce n’est pas un répertoire, c’est un fichier qui se trouve en /boot
sous la forme config- version $(uname -r)

/boot/config-2.6.32
/boot/config-3.2
/boot/config-3.10

Autrement, en /proc/config.gz.

[code]
config IKCONFIG
tristate “Kernel .config support”
—help—
This option enables the complete Linux kernel “.config” file
contents to be saved in the kernel. It provides documentation
of which kernel options are used in a running kernel or in an
on-disk kernel. This information can be extracted from the kernel
image file with the script scripts/extract-ikconfig and used as
input to rebuild the current kernel or to build another kernel.
It can also be extracted from a running kernel by reading
/proc/config.gz if enabled (below).

config IKCONFIG_PROC
bool "Enable access to .config through /proc/config.gz"
depends on IKCONFIG && PROC_FS
—help—
This option enables access to the kernel configuration file
through /proc/config.gz.[/code]

Sauf erreur de ma part, si la gestion d’un système de fichiers est en module, alors celui-ci n’apparaît dans /proc/filesystems que si le module correspondant est chargé.

Hélas il semble que cette option pourtant fort pratique n’est toujours pas activée dans les noyaux Debian.

Question pour Mimoza : quelle est la version/variante et la provenance du noyau actif ?

Tant que nous ne saurons pas ce que ce noyau a dans [strike]les tripes[/strike] son config, tant que nous ne saurons pas si le noyau est affublé de «Y» comme yes de «M» comme module ou de N «is not set» face à BTRFS_FS, nous ne faisons que tourner autour du pot.

$ man proc

[code]
/proc/filesystems
A text listing of the filesystems which are supported by the kernel, namely filesystems
which were compiled into the kernel or whose kernel modules are currently loaded. (See
also filesystems(5).) If a filesystem is marked with “nodev”, this means that it does
not require a block device to be mounted (e.g., virtual filesystem, network filesystem).

          Incidentally, this file may be used by mount(8) when no filesystem is specified  and  it
          didn't manage to determine the filesystem type.  Then filesystems contained in this file
          are tried (excepted those that are marked with "nodev").[/code]

Systèmes de fichiers compilés au sein du noyau OU ceux dont les modules soient chargés ( filesystems which were compiled into the kernel OR whose kernel modules are currently loaded.)
Test chez moi. Les systèmes de fichiers compilés au sein du noyau y apparaissent.
Système de fichiers reiserfs non chargé, module compris dans le config du noyau en cours d’utilisation (CONFIG_REISERFS_FS=m).
Nulle trace de reiserfs en /proc/filesystems.
Un

modprobe reiserfs

plus tard, reiserfs y apparaît.

Mimoza : Que donnerait

modprobe btrfs

?

La distro utilisé est une Cubian, une dérivé de Debian au même titre qu’une Raspian.

# uname -a Linux XXX 3.4.67+ #4 SMP PREEMPT Wed Nov 6 08:31:09 CST 2013 armv7l GNU/Linux

# modprobe btrfs FATAL: Module btrfs not found.

# ls /boot boot.cmd boot.scr script.bin script.fex uEnv.txt uImage

Je penche sur le fait que ce module n’ai pas été inclus lors de la compilation du noyau. Bon ce n’est pas essentiel mais ça fait bizarre de pouvoir créer une partition que l’on ne peut pas monter par la suite. :033

C’est simple : prend les sources de la distribution en question et regarde si l’option est activée ou non, et si oui sous forme de module ou en dur.

:006

linux-sunxi.org/U-boot

[quote]Compilation

First of all you need a suitable toolchain installed and added to your PATH. Then proceed as follows.

Clone sunxi version of u-boot git repository:

git clone github.com/linux-sunxi/u-boot-sunxi.git

Go to the project directory and execute the build commands. Replace the board name in the third command with the one you are working with. Cubieboard is used in this example. The full list of supported boards is included in the 'u-boot-sunxi/boards.cfg' file you just cloned.

cd u-boot-sunxi
make distclean CROSS_COMPILE=arm-linux-gnueabihf-
make Cubieboard CROSS_COMPILE=arm-linux-gnueabihf-

Here, “CROSS_COMPILE=arm-linux-gnueabihf-” is the architecture designation which should match your toolchain and “Cubieboard” should be replaced by your board model. See the boards.cfg file for possible board configuration variants.[/quote]
Où il apparait que les (mauvais ?) réflexes acquis de longue date en linux sous PC n’ont pas lieu de s’appliquer sans adaptation. Comme tu le disais, pas de /boot/config*. Voir selon boards.cfg, les fichiers de config prédéfinis seraient attachés au modèle.

github.com/mmplayer/linux-sunxi … /sunxi-3.4

github.com/linux-sunxi/u-boot-sunxi/wiki

Contenu de /boot et fonctions

[quote]
uEnv.txt support

This version of u-boot support uEnv.txt, and will look for it in the first partition FAT /uEnv.txt or extX /uEnv.txt or extX /boot/uEnv.txt. uEnv.txt contains variables on the form variable=value, one per line. If the variable uenvcmd is set then u-boot will run the commands listed in this variable.[/quote]

boot.scr

[quote]
This version of u-boot supports boot.scr, and will look for it in the first partition FAT /boot.scr or extX /boot.scr or extX /boot/boot.scr. boot.scr contains your needed uboot commands for loading script.bin, kernel. initrd (optional), setting kernel parameters and booting.

To create boot.scr first make a u-boot script boot.cmd with the u-boot commands you need for booting your system. An example follows:

setenv bootargs console=ttyS0 root=/dev/mmcblk0p1 rootwait panic=10 ${extra} ext2load mmc 0 0x43000000 boot/script.bin ext2load mmc 0 0x48000000 boot/uImage bootm 0x48000000

Then translate this to a boot.scr by using the mkimage command

mkimage -C none -A arm -T script -d boot.cmd boot.scr[/quote]

script.bin