diff --git a/tpfs/vol.c b/tpfs/vol.c
index 9bd36c2a19b7fd3a28cc5a49d02934be9b4db2c2..239fe5f4d557f767c7da321147f741bf211277cc 100644
--- a/tpfs/vol.c
+++ b/tpfs/vol.c
@@ -29,4 +29,23 @@ void load_mbr()
 
     mbr.magic = MBR_MAGIC;
     mbr.nb_vols = 0;
+}
+
+void save_mbr()
+{
+    int i;
+    unsigned char buffer[sizeof(mbr_t)];
+
+    buffer[0] = mbr.magic & 255;
+    buffer[1] = (mbr.magic >> 8) & 255;
+    buffer[2] = mbr.nb_vols;
+    for (i = 0; i < mbr.nb_vols; i++)
+    {
+        buffer[3 + (i * 4)] = mbr.vols[i].sector;
+        buffer[4 + (i * 4)] = mbr.vols[i].cylinder;
+        buffer[5 + (i * 4)] = mbr.vols[i].nb_sectors;
+        buffer[6 + (i * 4)] = mbr.vols[i].type;
+    }
+
+    write_sector(0, 0, buffer);
 }
\ No newline at end of file
diff --git a/tpfs/vol.h b/tpfs/vol.h
index af09f09b6bf6b61d94d52e70b2303e152214d99c..9f01df6d3c05b8dd7959465dbae17539d995902f 100644
--- a/tpfs/vol.h
+++ b/tpfs/vol.h
@@ -30,4 +30,6 @@ typedef struct mbr_s
 
 void load_mbr(void);
 
+void save_mbr(void);
+
 #endif // VOL_H