Index: trunk/kernel/kern/kernel_init.c
===================================================================
--- trunk/kernel/kern/kernel_init.c	(revision 381)
+++ trunk/kernel/kern/kernel_init.c	(revision 389)
@@ -273,6 +273,8 @@
             }
 
-            kinit_dmsg("\n[INFO] %s : created MMC in cluster %x / chdev = %x\n",
-                       __FUNCTION__ , channel , local_cxy , chdev_ptr );
+#if( CONFIG_KINIT_DEBUG > 1 )
+printk("\n[INFO] %s : created MMC in cluster %x / chdev = %x\n",
+__FUNCTION__ , channel , local_cxy , chdev_ptr );
+#endif
         }
         ///////////////////////////////
@@ -299,6 +301,8 @@
                 chdev_dir.dma[channel] = XPTR( local_cxy , chdev_ptr );
 
-                kinit_dmsg("\n[INFO] %s : created DMA[%d] in cluster %x / chdev = %x\n",
-                           __FUNCTION__ , channel , local_cxy , chdev_ptr );
+#if( CONFIG_KINIT_DEBUG > 1 )
+printk("\n[INFO] %s : created DMA[%d] in cluster %x / chdev = %x\n",
+__FUNCTION__ , channel , local_cxy , chdev_ptr );
+#endif
             }
         }
@@ -431,7 +435,8 @@
                     }
 
-		            kinit_dmsg("\n[INFO] %s : create chdev %s[%d] in cluster %x / chdev = %x\n",
-                    __FUNCTION__ , chdev_func_str( func ), channel , local_cxy , chdev );
-
+#if( CONFIG_KINIT_DEBUG > 1 )
+printk("\n[INFO] %s : create chdev %s[%d] in cluster %x / chdev = %x\n",
+__FUNCTION__ , chdev_func_str( func ), channel , local_cxy , chdev );
+#endif
                 }  // end if match
 
@@ -548,6 +553,8 @@
     } 
 
-    kinit_dmsg("\n[INFO] %s created PIC chdev in cluster %x at cycle %d\n",
-               __FUNCTION__ , local_cxy , (uint32_t)hal_time_stamp() );
+#if( CONFIG_KINIT_DEBUG > 1 )
+printk("\n[INFO] %s created PIC chdev in cluster %x at cycle %d\n",
+__FUNCTION__ , local_cxy , (uint32_t)hal_time_stamp() );
+#endif
     
 }  // end iopic_init()
@@ -826,5 +833,7 @@
     /////////////////////////////////////////////////////////////////////////////////
 
-    if( CONFIG_KINIT_DEBUG ) chdev_dir_display();
+#if( CONFIG_KINIT_DEBUG > 1 )
+chdev_dir_display();
+#endif
     
     // All cores enable the shared IPI channel
@@ -834,7 +843,4 @@
     // All cores initialize specific core registers
     hal_core_init( info );
-
-    kinit_dmsg("\n[INFO] %s : IRQs enabled for core[%x,%d] / SR = %x\n", 
-               __FUNCTION__ , local_cxy , core_lid , hal_get_sr() );
 
     // all cores initialize the idle thread descriptor
@@ -855,13 +861,7 @@
     core->scheduler.idle = thread;
 
-    if( (core_lid ==  0) && (local_cxy == 0) ) 
-    {
-        kinit_dmsg("\n[INFO] %s : initialized idle thread %x on core[%x,%d] / cycle %d\n",
-        __FUNCTION__ , thread->trdid , local_cxy, core_lid, (uint32_t)hal_time_stamp());
-    }
-
-    #if CONFIG_KINIT_DEBUG
-    sched_display();
-    #endif
+#if( CONFIG_KINIT_DEBUG > 1 )
+sched_display();
+#endif
 
     // CPO in cluster 0 creates the VFS root
@@ -874,5 +874,5 @@
         if( CONFIG_VFS_ROOT_IS_FATFS )
         {
-            // 1. create FATFS context in cluster 0
+            // 1. allocate memory for FATFS context in cluster 0
             fatfs_ctx_t * fatfs_ctx = fatfs_ctx_alloc();
 
@@ -910,12 +910,16 @@
 	                      vfs_root_inode_xp,             // VFS root
                           fatfs_ctx );                   // extend
+
+            // 6. check initialisation
+            vfs_ctx_t   * vfs_ctx = &fs_context[FS_TYPE_FATFS];
+            assert( (((fatfs_ctx_t *)vfs_ctx->extend)->sectors_per_cluster == 8),
+            __FUNCTION__ , "illegal value for FATFS context in cluster %x\n", local_cxy );
         }
         else
         {
-            printk("\n[PANIC] in %s : root FS must be FATFS\n", __FUNCTION__ );
-            hal_core_sleep();
-        }
-
-        // register VFS root inode in process_zero
+            _panic("\n[PANIC] in %s : root FS must be FATFS\n", __FUNCTION__ );
+        }
+
+        // register VFS root inode in process_zero descriptor of cluster 0
         process_zero.vfs_root_xp = vfs_root_inode_xp;
         process_zero.vfs_cwd_xp  = vfs_root_inode_xp;
@@ -945,24 +949,30 @@
         if( CONFIG_VFS_ROOT_IS_FATFS )
         {
-            // allocate memory for FATFS context
-            fatfs_ctx_t * fatfs_ctx = fatfs_ctx_alloc();
-
-            assert( (fatfs_ctx != NULL) , __FUNCTION__ , "cannot create FATFS context\n" );
-
-            // get local pointer on VFS context for FATFS
+            // 1. allocate memory for local FATFS context
+            fatfs_ctx_t * local_fatfs_ctx = fatfs_ctx_alloc();
+
+            assert( (local_fatfs_ctx != NULL) , __FUNCTION__ ,
+            "cannot create FATFS context in cluster %x\n", local_cxy );
+
+            // 2. get local pointer on VFS context for FATFS
             vfs_ctx_t   * vfs_ctx = &fs_context[FS_TYPE_FATFS];
 
-            // copy VFS context from cluster 0 to local cluster
+            // 3. get local pointer on FATFS context in cluster 0 
+            fatfs_ctx_t * remote_fatfs_ctx = hal_remote_lpt( XPTR( 0 , &vfs_ctx->extend ) );
+
+            // 4. copy FATFS context from cluster 0 to local cluster
+            hal_remote_memcpy( XPTR( local_cxy , local_fatfs_ctx ), 
+                               XPTR( 0 ,         remote_fatfs_ctx ), sizeof(fatfs_ctx_t) );
+
+            // 5. copy VFS context from cluster 0 to local cluster
             hal_remote_memcpy( XPTR( local_cxy , vfs_ctx ), 
-                               XPTR( 0 , vfs_ctx ),
-                               sizeof(vfs_ctx_t) );
-
-            // copy FATFS context from cluster 0 to local cluster
-            hal_remote_memcpy( XPTR( local_cxy , fatfs_ctx ), 
-                               XPTR( 0 , fatfs_ctx ),
-                               sizeof(fatfs_ctx_t) );
-
-            // update extend field in local copy of VFS context
-            vfs_ctx->extend = fatfs_ctx;
+                               XPTR( 0 ,         vfs_ctx ), sizeof(vfs_ctx_t) );
+
+            // 6. update extend field in local copy of VFS context
+            vfs_ctx->extend = local_fatfs_ctx;
+
+            // 7. check initialisation
+            assert( (((fatfs_ctx_t *)vfs_ctx->extend)->sectors_per_cluster == 8),
+            __FUNCTION__ , "illegal value for FATFS context in cluster %x\n", local_cxy );
         }
 
@@ -1062,4 +1072,5 @@
     {
         process_init_create();
+        vfs_display( vfs_root_inode_xp );
     }
 
@@ -1082,5 +1093,5 @@
         print_banner( (info->x_size * info->y_size) , info->cores_nr );
 
-        kinit_dmsg("\n\n*** memory fooprint for main kernet objects ***\n\n"
+        kinit_dmsg("\n\n***** memory fooprint for main kernet objects\n\n"
                    " - thread descriptor  : %d bytes\n"
                    " - process descriptor : %d bytes\n"
