السلام عليكم ورحمة الله وبركاته
موضوعنا اليوم عن ملف ال fstab وماهى هى الفوائد التى يمكن أن يقدمها لنا خلال تعاملنا اليومى مع أنظمة ال Unix-Like .
ملف الإعدادات fstab هو أحد الملفات المهمة على اى توزيعة لينوكس ,ويستخدم الملف لتمرير إعداداته إلى الكيرنل للعمل على انظمة الملفات المختلفة مثل ext2 , ext3 , reiserFs إلخ من تلك الأنواع بالإضافة إلى ربط أقسام الهاردديسك أو ال(Partitions) بأنواع نظم ملفات مختلفة أو Filesystems التى تحملها تلك الأقسام فيما يسمى بعملية ال mount .
يوجد ملف ال fstab على المسار etc/fstab/ ويحتوى الملف كما ذكرنا سابقا على اعدادات خاصة يتم تمريرها إلى الكيرنل لمعرفة انوع الأقسام المعنية من الهاردديسك وأنواع ملفات النظام الخاصة بها , كما يحتوى أيضا على بعض الخيارات التى يمكن وضعها على تلك الأقسام وسنستعرض ذلك ﻻحقا.
ولكن ما الفائدة الجوهرية للملف fstab ؟
تكمن الفائدة الجوهرية للملف لأصحاب الأجهزة ذات الإقلاع الثنائى أو فيما يعرف بال dual-boot systems حيث يوجد أكثر من نظام تشغيل , ولكل نظام تشغيل أقسام خاصة من الهاردديسك ولكل قسم نظام ملفات أو filesystem , ولسبب ما يريد المستخدم مشاركة هذه الأقسام مع نظام تشغيل آخر فيتم اللجوء إلى عملية الضم أو فيما يعرف بعملية ال mount وبعد الإنتهاء من هذه العملية نقوم بحفظ إعدادات هذه العملية فى الملف fstab لضمان استمرار عملية الmount بشكل تلقائى فى حال عمل إعادة تشغيل للجهاز .
بعد أن انتهينا من مقدمة عن الملف أصبح من الواضح أنه توجد علاقة وطيدة بين الأمر mount او عملية ال mount بشكل عام وبين الملف fstab ويتضح من ذلك عدة نقاط :
* الخيارات التى يتم اضافتها مع الأمر mount وإضافتها إلى الملف fstab متشابهة .
* فى حالة عدم وجود قسم من أقسام الهارد أو ال partition فى ملف ال fstab فإن الوحيد القادر على اضافة ذلك القسم هو المستخدم الجذر أو ال root .
* نظم الملفات الخاصة بنظام التشغيل ويندوز و المدعمة تماما ك read و write هى نظم ال fat وال fat32 , أما نظام الملفات NTFS فحتى الآن مدعم بصيغة القراءة فقط أو ال read وذلك من خلال الكيرنل ولكن فى الإصدارات الحديثة من الكيرنل تم إضافة module الكتابة فى اعدادات الكيرنل ولكن حتى الآن ما زال بشكل تجريبى ، أما لتدعيم القراءة والكتابة على نظام الملفات NTFS فيتم اللجوء إلى استخدام هذا ال driver وهو ntfs-3g.
* نظم الملفات NTFS ,VFAT , MSDOS مدعومة بشكل تلقائى فى اعدادات الكيرنل ك modules وفى حالة عدم توافر أين منها يمكن إضافتها لاحقا باستخدام الأمر modprobe وذلك بالصيغة التالية :
بشكل سريع سأتطرق إلى كيفية عمل ال mount حتى يكون الموضوع متناسق الفقرات وﻻ تحدث بلبلة لدى القارىء . كما ذكرت سابقا ان عملية ال mount الهدف منها هو ضم أقسام الهارد الغير مرئية بالنسبة للمستخدم لكى تكون متاحة ومرئية بالنسبة له ، بمعنى يوجد لديك نظامان تشغيل أحدهما نظام التشغيل ويندوز والآخر نظام التشغيل لينوكس والآن انت تعمل على نظام التشغيل لينوكس ولديك على الهاردديسك الخاص بك أربعة بارتشنات مختلفة اثنان منهم بنظام ملفات FAT32 وواحد بنظام ملفات NTFS والآخر بنظام ملفات EXT3 ، وعندما قمت بالدخول إلى نظام التشغيل لينوكس حدث شىء غريب أﻻ وهو أن الأقسام الخاصة بنظامىّ الملفات FAT32 و NTFS ﻻ يمكنك قراءة أين منهما فما العمل ؟
هل اختفت الأقسام بلا رجعة ؟ هل حدث خطأ ما ؟؟ الإجابة ﻻ ...لا تقلق فكل ما فى الأمر أن نظام التشغيل لينوكس بشكل تلقائى ﻻ يرى إﻻ القسم الذى تم تثبيته فيه ولكى تتمكن من العمل على باقى الأقسام ﻻبد من عملية ال mount التى ذكرناها سابقا ولكن كيف لنا أن نقوم بهذه العملية ؟؟
أوﻻ وبشكل بسيط جدا ﻻبد من التعرف على تلك الأقسام وأين توجد بمعنى ، يتعامل نظام التشغيل لينوكس أقسام ال hard drives بشكل مختلف تماما عن نظام التشغيل ويندوز بمعنى على نظام التشغيل ويندوز أقسام الهارد تحمل الحروف التالية C , D , E , F , G , H , I وهكذا ولكن نظام التشغيل لينوكس يتعامل مع الأقسام بشكل مختلف فمسمياته بالنسبة لل hard disks من نوع ATA تكون هكذا hda1 , hda5 , hda6 , hda7 , hda8 وذلك إذا كان الهاردديسك على توصيلة primary master أما إذا كان الهارد على توصيلة primary slave فيكون شكل المسميات هكذا hdb1 , hdb5 , hdb6 , hdb7 .
لكن ﻻحظ التالى فى ترتيب الأقسام ذكرت بالأعلى أن البارتشن رقم واحد يحمل الإسم hda1 وهو المقابل فى ويندوز للبارتشن الذى يحمل الحرف c ولكن لماذا البارتشن الثانى يحمل الإسم hda5 بدلا من hda2 ؟؟ خطأ مطبعى أليس كذلك؟؟
مهلا ليس كذلك , فى لينوكس ذكرت سابقا أن يتعامل فى مسميات أقسام الهاردديسك بشكل مختلف وقد ذكرنا ذلك فعلا فقلنا البارتشن الأول الذى يحمل الإسم hda1 مقابل للبارتشن الذى يحمل الإسم c على ويندوز والبارتشن الذى يحمل الإسم hda5 مقابل للبارتشن الذى يحمل الإسم d على ويندوز وهكذا دواليك ولكن المحور الأساسى للمشكلة هنا تسمية البارتشن الثانى على لينوكس بإسم hda5 بدلا من hda2 فكيف ذلك ؟؟
المُسمى hda5 ظهر نتيجة أن أقصى عدد لل primary partitions على أى هاردديسك يكون 4 أقسام فقط ، فلو افترضنا أنه يوجد لديك القسم c على ويندوز وهو primary partition فطبيعى سيحمل الإسم hda1 على لينوكس ، بعد ذلك يوجد لديك قسم تحت اسم extended والذى يحتوى على ال logical partitions والقسم extended فى ذاته يكون من النوع primary ويحجز الأرقام من 2 إلى 4 وبالتالى أول بارتشن logical تحت القسم extended سيحمل الرقم 5 وذلك فعلا ما يحدث مع لينوكس .
بعد أن استعرضنا نقطة مسميات أقسام الهاردديسك على لينوكس أو ال partitions ننتقل الآن إلى كيفية عرض تلك الأقسام وذلك يكون من خلال الامر التالى (فى وضعية ال root):
كما رأينا فى المثال السابق الإسم hda2 محجوز للقسم extended وتلى ذلك القسم الإسم hda5 وهو أول logical partition تحت القسم extended كما ذكرنا بأعلى .
ولكن كيف أميز البارتشنات أو أقسام الهاردديسك والتى تم عمل mount لها من التى لم يتم عمل mount لها ؟
الاجابة بسيطة قم بفتح الطرفية أو ال shell لديك وقم بكتابة الأمر التالى :
من الواضح ان البارتشن الذى يحمل الإسم hda5 لم يتم عمل mount له والآن نريد عمل mount له فكيف تتم تلك العملية ؟
الموضوع بسيط جدا لتنفيذ عملية الmount لابد من إنشاء نقطة للضم أو mount point بمعنى ﻻبد من وجود شىء ما لربط البارتشن المُراد عمل الmount له مع المكان الأصلى للبارتشن ، وفى المثال السابق المكان الأصلى للبارتشن فى المسار dev/hda5/ ولكى نستطيع تنفيذ عملية ال mount نقوم بإنشاء مجلد آخر تحت اى مسار على النظام لربط البارتشن بنقطة الضم او ال mount point .
يوجد مساران على اى توزيعة لينوكس من المفضل إنشاء نقطة الmount بهما أﻻ وهما المسار mnt/ والمسار media/ .
الآن نقوم بإنشاء نقطة ضم او mount point فى أى من المسارين السابق ذكرهما ( تنفيذ الأوامر وأنت root) :
حيث xxxxx اى إسم يخطر ببالك ﻻ توجد قيود على ذلك الإسم مطلقا .
الآن نقوم بتنفيذ أمر ال mount للبارتشن hda5 وهو من نوع نظام ملفات fat32 ويكون ذلك من خلال الأمر التالى :
وطبيعى الأمور تسرى على أى نظام ملفات آخر فلو أردنا عمل mount لبارتشن من نوع نظام ملفات ntfs نستبدل فقط كلمة vfat ب ntfs وهكذا مع أى نظام ملفات آخر .
انتهينا من الجزء الأول من الموضوع والآن إلى الجزء الثانى
موضوعنا اليوم عن ملف ال fstab وماهى هى الفوائد التى يمكن أن يقدمها لنا خلال تعاملنا اليومى مع أنظمة ال Unix-Like .
مقدمة :
ملف الإعدادات fstab هو أحد الملفات المهمة على اى توزيعة لينوكس ,ويستخدم الملف لتمرير إعداداته إلى الكيرنل للعمل على انظمة الملفات المختلفة مثل ext2 , ext3 , reiserFs إلخ من تلك الأنواع بالإضافة إلى ربط أقسام الهاردديسك أو ال(Partitions) بأنواع نظم ملفات مختلفة أو Filesystems التى تحملها تلك الأقسام فيما يسمى بعملية ال mount .
يوجد ملف ال fstab على المسار etc/fstab/ ويحتوى الملف كما ذكرنا سابقا على اعدادات خاصة يتم تمريرها إلى الكيرنل لمعرفة انوع الأقسام المعنية من الهاردديسك وأنواع ملفات النظام الخاصة بها , كما يحتوى أيضا على بعض الخيارات التى يمكن وضعها على تلك الأقسام وسنستعرض ذلك ﻻحقا.
ولكن ما الفائدة الجوهرية للملف fstab ؟
تكمن الفائدة الجوهرية للملف لأصحاب الأجهزة ذات الإقلاع الثنائى أو فيما يعرف بال dual-boot systems حيث يوجد أكثر من نظام تشغيل , ولكل نظام تشغيل أقسام خاصة من الهاردديسك ولكل قسم نظام ملفات أو filesystem , ولسبب ما يريد المستخدم مشاركة هذه الأقسام مع نظام تشغيل آخر فيتم اللجوء إلى عملية الضم أو فيما يعرف بعملية ال mount وبعد الإنتهاء من هذه العملية نقوم بحفظ إعدادات هذه العملية فى الملف fstab لضمان استمرار عملية الmount بشكل تلقائى فى حال عمل إعادة تشغيل للجهاز .
بعد أن انتهينا من مقدمة عن الملف أصبح من الواضح أنه توجد علاقة وطيدة بين الأمر mount او عملية ال mount بشكل عام وبين الملف fstab ويتضح من ذلك عدة نقاط :
* الخيارات التى يتم اضافتها مع الأمر mount وإضافتها إلى الملف fstab متشابهة .
* فى حالة عدم وجود قسم من أقسام الهارد أو ال partition فى ملف ال fstab فإن الوحيد القادر على اضافة ذلك القسم هو المستخدم الجذر أو ال root .
* نظم الملفات الخاصة بنظام التشغيل ويندوز و المدعمة تماما ك read و write هى نظم ال fat وال fat32 , أما نظام الملفات NTFS فحتى الآن مدعم بصيغة القراءة فقط أو ال read وذلك من خلال الكيرنل ولكن فى الإصدارات الحديثة من الكيرنل تم إضافة module الكتابة فى اعدادات الكيرنل ولكن حتى الآن ما زال بشكل تجريبى ، أما لتدعيم القراءة والكتابة على نظام الملفات NTFS فيتم اللجوء إلى استخدام هذا ال driver وهو ntfs-3g.
* نظم الملفات NTFS ,VFAT , MSDOS مدعومة بشكل تلقائى فى اعدادات الكيرنل ك modules وفى حالة عدم توافر أين منها يمكن إضافتها لاحقا باستخدام الأمر modprobe وذلك بالصيغة التالية :
كود:
modprobe msdos, modprobe vfat and modprobe ntfs.
عملية ال mount :
بشكل سريع سأتطرق إلى كيفية عمل ال mount حتى يكون الموضوع متناسق الفقرات وﻻ تحدث بلبلة لدى القارىء . كما ذكرت سابقا ان عملية ال mount الهدف منها هو ضم أقسام الهارد الغير مرئية بالنسبة للمستخدم لكى تكون متاحة ومرئية بالنسبة له ، بمعنى يوجد لديك نظامان تشغيل أحدهما نظام التشغيل ويندوز والآخر نظام التشغيل لينوكس والآن انت تعمل على نظام التشغيل لينوكس ولديك على الهاردديسك الخاص بك أربعة بارتشنات مختلفة اثنان منهم بنظام ملفات FAT32 وواحد بنظام ملفات NTFS والآخر بنظام ملفات EXT3 ، وعندما قمت بالدخول إلى نظام التشغيل لينوكس حدث شىء غريب أﻻ وهو أن الأقسام الخاصة بنظامىّ الملفات FAT32 و NTFS ﻻ يمكنك قراءة أين منهما فما العمل ؟
هل اختفت الأقسام بلا رجعة ؟ هل حدث خطأ ما ؟؟ الإجابة ﻻ ...لا تقلق فكل ما فى الأمر أن نظام التشغيل لينوكس بشكل تلقائى ﻻ يرى إﻻ القسم الذى تم تثبيته فيه ولكى تتمكن من العمل على باقى الأقسام ﻻبد من عملية ال mount التى ذكرناها سابقا ولكن كيف لنا أن نقوم بهذه العملية ؟؟
أوﻻ وبشكل بسيط جدا ﻻبد من التعرف على تلك الأقسام وأين توجد بمعنى ، يتعامل نظام التشغيل لينوكس أقسام ال hard drives بشكل مختلف تماما عن نظام التشغيل ويندوز بمعنى على نظام التشغيل ويندوز أقسام الهارد تحمل الحروف التالية C , D , E , F , G , H , I وهكذا ولكن نظام التشغيل لينوكس يتعامل مع الأقسام بشكل مختلف فمسمياته بالنسبة لل hard disks من نوع ATA تكون هكذا hda1 , hda5 , hda6 , hda7 , hda8 وذلك إذا كان الهاردديسك على توصيلة primary master أما إذا كان الهارد على توصيلة primary slave فيكون شكل المسميات هكذا hdb1 , hdb5 , hdb6 , hdb7 .
لكن ﻻحظ التالى فى ترتيب الأقسام ذكرت بالأعلى أن البارتشن رقم واحد يحمل الإسم hda1 وهو المقابل فى ويندوز للبارتشن الذى يحمل الحرف c ولكن لماذا البارتشن الثانى يحمل الإسم hda5 بدلا من hda2 ؟؟ خطأ مطبعى أليس كذلك؟؟
مهلا ليس كذلك , فى لينوكس ذكرت سابقا أن يتعامل فى مسميات أقسام الهاردديسك بشكل مختلف وقد ذكرنا ذلك فعلا فقلنا البارتشن الأول الذى يحمل الإسم hda1 مقابل للبارتشن الذى يحمل الإسم c على ويندوز والبارتشن الذى يحمل الإسم hda5 مقابل للبارتشن الذى يحمل الإسم d على ويندوز وهكذا دواليك ولكن المحور الأساسى للمشكلة هنا تسمية البارتشن الثانى على لينوكس بإسم hda5 بدلا من hda2 فكيف ذلك ؟؟
المُسمى hda5 ظهر نتيجة أن أقصى عدد لل primary partitions على أى هاردديسك يكون 4 أقسام فقط ، فلو افترضنا أنه يوجد لديك القسم c على ويندوز وهو primary partition فطبيعى سيحمل الإسم hda1 على لينوكس ، بعد ذلك يوجد لديك قسم تحت اسم extended والذى يحتوى على ال logical partitions والقسم extended فى ذاته يكون من النوع primary ويحجز الأرقام من 2 إلى 4 وبالتالى أول بارتشن logical تحت القسم extended سيحمل الرقم 5 وذلك فعلا ما يحدث مع لينوكس .
بعد أن استعرضنا نقطة مسميات أقسام الهاردديسك على لينوكس أو ال partitions ننتقل الآن إلى كيفية عرض تلك الأقسام وذلك يكون من خلال الامر التالى (فى وضعية ال root):
كود:
$fdisk -l Device Boot Start End Blocks Id System /dev/hda1 1 388 2933248+ 83 Linux /dev/hda2 389 557 1277640 5 Extended /dev/hda5 389 557 1277608+ b W95 FAT32
ولكن كيف أميز البارتشنات أو أقسام الهاردديسك والتى تم عمل mount لها من التى لم يتم عمل mount لها ؟
الاجابة بسيطة قم بفتح الطرفية أو ال shell لديك وقم بكتابة الأمر التالى :
كود:
$mount /dev/hda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) nfsd on /proc/fs/nfsd type nfsd (rw) rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
الموضوع بسيط جدا لتنفيذ عملية الmount لابد من إنشاء نقطة للضم أو mount point بمعنى ﻻبد من وجود شىء ما لربط البارتشن المُراد عمل الmount له مع المكان الأصلى للبارتشن ، وفى المثال السابق المكان الأصلى للبارتشن فى المسار dev/hda5/ ولكى نستطيع تنفيذ عملية ال mount نقوم بإنشاء مجلد آخر تحت اى مسار على النظام لربط البارتشن بنقطة الضم او ال mount point .
يوجد مساران على اى توزيعة لينوكس من المفضل إنشاء نقطة الmount بهما أﻻ وهما المسار mnt/ والمسار media/ .
الآن نقوم بإنشاء نقطة ضم او mount point فى أى من المسارين السابق ذكرهما ( تنفيذ الأوامر وأنت root) :
كود:
$mkdir /mnt/xxxxx
الآن نقوم بتنفيذ أمر ال mount للبارتشن hda5 وهو من نوع نظام ملفات fat32 ويكون ذلك من خلال الأمر التالى :
كود:
$mount -t vfat /dev/hda5 /mnt/xxxxx
انتهينا من الجزء الأول من الموضوع والآن إلى الجزء الثانى
تعليق