دستکاری پارتیشن ها و تغییر سیستمفایل ها
در این قسمت از مجومعه آموزشهای کار با خط فرمان، به نحوه دستکاری پارتیشنها و تغییر سیستمفایلها خواهیم پرداخت.
ایجاد سیستمفایل جدید
فرض کنید که میخواهیم یک درایو فلش را به جای FAT32 با یک سیستمفایل بومی لینوکس فرمتدهی کنیم. این کار مستلزم انجام دو گام است: اول (اختیاری) ایجاد یک طرح پارتیشن جدید اگر که پارتیشن موجود را دوست نداریم و دوم ایجاد یک سیستمفایل جدید بر روی درایو.
توجه: در تمرین زیر ما درایو فلش را فرمت میکنیم. پس دقت کنید از فلش درایوی استفاده کنید که اطلاعاتی بر روی آن ندارید، چرا که اطلاعات آن از بین خواهد رفت.
در ادامه نحوه دستکاری پارتیشنها با فرمان fdisk را شرح میدهیم و در آینده ایجاد یک سیستمفایل با استفاده از فرمان mkfs را توضیح خواهیم داد:
دستکاری پارتیشنها با فرمان fdisk
برنامه fdisk به ما اجازه میدهد تا به صورت مستقیم با دیوایسهای شبیه دیسک (مثل هارددیسک و فلش درایوها) در سطح پایین ارتباط برقرار کنیم.
با استفاده از این ابزار میتوان یک پارتیشن جدید بر روی دیوایس خود ایجاد کرد و یا پارتیشن فعلی را حذف و ویرایش نمود. برای کار با درایو فلش خود بایستی ابتدا آن را از روی سیستم پیاده کنیم و سپس به صورت زیر فرمان fdisk را به کار بگیریم. توجه داشته باشید که ما بایستی دیوایس را به عنوان یک دیوایس کامل در نظر بگیریم نه شماره پارتیشن.
1 2 |
[me@linuxbox ~]$ sudo umount /dev/sdb1 [me@linuxbox ~]$ sudo fdisk /dev/sdb |
پس از آنکه برنامه شروع شد خط help را میبینیم.
1 |
Command (m for help): |
با وارد کردن فرمان m فرمانهای کمکی به ما نشان داده میدهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): |
اولین کاری که میخواهیم انجام دهیم آزمودن طرح پارتیشن است. این کار را با وارد کردن فرمان p انجام میدهیم:
1 2 3 4 5 6 |
Command (m for help): p Disk /dev/sdb: 16 MB, 16006656 bytes 1 heads, 31 sectors/track, 1008 cylinders Units = cylinders of 31 * 512 = 15872 bytes Device Boot Start End Blocks Id System /dev/sdb1 2 1008 15608+ b W95 FAT32 |
در این مثال یک دیوایس ۱۶ مگابایتی که دارای یک پارتیشن و ۱۰۰۸ سیلندر میباشد را مشاهده میکنیم. ما این فرمت را به فرمت اختصاصی لینوکس تغییر خواهیم داد. به این منظور بایستی ابتدا شناسهای که به این منظور در نظر گرفته شده است را بشناسیم. برای مشاهده انواع پارتیشن موجود فرمان l را وارد کنید:
1 |
l list known partition types |
زمانی که فرمان l را وارد میکنیم. لیست انواع فرمتهای پارتیشن به ما نشان داده میشود. شناسه شماره ۸۳ شناسه اختصاصی لینوکس است. از این شماره برای تعیین نوع پارتیشن استفاده میکنیم. به این منظور فرمان t را وارد کنید. سپس از ما شناسه مورد نظر درخواست میشود. عدد ۸۳ را وارد کنید. ملاحظه میکنید که تغییر مورد نظر انجام شد:
1 |
t change a partition's system id |
تمام تغییرات مورد نظر را اعمال کردیم. تا این نقطه از کار، دیوایس ما دست نخورده باقی مانده است. تمام تغییراتی که تا اینجا اعمال کردیم فقط در حافظه مموری موجود است. برای اعمال آنها بر روی دیسک و خروج از محیط، پارتیشن w را وارد کنید. اگر تمایل داشتید که تغییرات را بدون ذخیره شدن رها کرده و از فرمان خارج شوید q را وارد نمایید.
1 2 3 4 5 6 7 8 |
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks. [me@linuxbox ~]$ |
ایجاد یک سیستمفایل جدید با فرمان mkfs
وقتی که ویرایش پارتیشن ما به پایان خود رسید زمان آن میرسد که یک سیستمفایل جدید بر روی درایو فلش خود ایجاد کنیم. به این منظور از فرمان mkfs (سرنام عبارت make filesystem) استفاده میکنیم. که قادر به ایجاد سیستمهای فایل در انواع فرمتهاست. برای ایجاد یک سیستمفایل ext3 بر روی دیوایس از گزینه –t استفاده میکنیم که در ادامه آن نام دیوایس را هم وارد میکنیم. به صورت زیر:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[me@linuxbox ~]$ sudo mkfs -t ext3 /dev/sdb1 mke2fs 1.40.2 (12-Jul-2012) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 3904 inodes, 15608 blocks 780 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=15990784 2 block groups 8192 blocks per group, 8192 fragments per group 1952 inodes per group Superblock backups stored on blocks: 8193 Writing inode tables: done Creating journal (1024 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [me@linuxbox ~]$ |
برنامه، اطلاعات زیادی را در حین ایجاد به ما نشان خواهد داد و پس از تایید هر یک، فلش ما فرمت شده و سیستمفایل جدید ایجاد میگردد.
تست و تعمیر سیستمهای فایل
در بحثهای اخیر، برخی رقمهای مرموز را در آخر هر خط از فایل /etc/fstab دیدیم. هر زمان که سیستم بوت میشود به صورت روتین یکپارچگی سیستمهای فایل، قبل از سوار شدن چک خواهد شد. این کار با استفاده از فرمان fsck (سرنام عبارت filesystem check) انجام میشود. آخرین شماره در هر ورودی fstab ترتیب دیوایسهایی که بررسی شدهاند را نشان میدهد. برای مثال دیدیم که سیستمفایل root اول بررسی شده و در ادامه آن سیستمفایل home و سیستمفایل boot بررسی شدند. دیوایسهایی که رقم آخر آنها صفر هست به صورت روتین بررسی نمیشوند.
به منظور بررسی یکپارچگی سیستمفایل، فرمان fsck میتواند سیستمهای فایل خراب را نیز به میزان آسیب وارد شده با درصد متفاوتی از موفقیت تعمیر کند.
در سیستمهای فایل یونیکس بخشهای بازیابی شده فایل در پوشه lost+found در روت سیستم قرار میگیرند.
به منظور بررسی درایو فلش (ابتدا بایستی آن را unmount کنید) فرمان زیر را وارد میکنیم:
1 |
[me@linuxbox ~]$ sudo mkfs -t vfat /dev/sdb1 |
به تجربه من تخریب سیستمفایل بسیار نادرست است، مگر اینکه مشکل سختافزاری در آن به وجود آمده باشد که باعث از بین رفتن دیسک خواهد شد. در بیشتر سیستمها، تخریب سیستمفایل در زما بوت شناسایی میشود و از بارگزاری آن جلوگیری میشود.
جابهجایی داده به صورت مستقیم از دیوایس به دیوایس
در حالی که ما معمولا داده را در کامپیوترهای خود به عنوان فایلهای سازماندهی شده در نظر میگیریم، ممکن است که داده را به شکل خام در نظر بگیریم. برای مثال اگر به یک دیسک نگاه کنیم، میبینیم که شامل شمار زیادی از بلوکهای داده است که سیستمعامل آنها را به شکل پوشهها و فایلها میبیند. اگر یک دیسک را به عنوان کلکسیونی از بلوکهای عظیم داده در نظر بگیریم، میتوانیم وظایف مفیدی کلون کردن دیوایسها را انجام دهید.
فرمان dd این وظیفه را انجام میدهد. این فرمان بلوکهایی از داده را از مکانی به مکان دیگر کپی میکند. فرمان dd از یک ترکیب یگانه استفاده میکند:
1 |
dd if=input_file of=output_file [bs=block_size [count=blocks]] |
فرض کنید که دو درایو USB به یک اندازه داریم و میخواهیم که دقیقا درایو اول را به درایو دوم کپی کنیم. اگر که هر دو درایو را به کامپیوتر متصل کنیم و آنها به دیوایسهای /dev/sdb و /dev/sdc متصل شدهاند، به راحتی میتوانیم با فرمان زیر، درایو اول را به درایو دوم کپی کنیم:
1 |
dd if=/dev/sdb of=/dev/sdc |
به شیوه دیگر اگر فقط دیوایس اول به کامپیوتر متصل شده باشد، میتوانیم محتویات آن را به یک فایل عادی کپی کرده تا برای بازیابیهای بعدی از آن استفاده کنیم:
1 |
dd if=/dev/sdb of=flash_drive.img |
هشدار: فرمان dd بسیار قدرتمند است. اگر چه نام آن از عبارت انگلیسی Data Definition (به معنی تعریف داده) گرفته شده ولی بیشتر اوقات Destroy Disk (به معنی مخرب دیسک) نامیده میشود. به این دلیل که گاها کاربران، ترکیب آن را اشتباه وارد میکنند. پس همیشه قبل از اجرای فرمان، دوباره خط فرمان را بخوانید و از ترکیب آن مطمئن گردید.
درباره فرشید نوتاش حقیقت
همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرمافزارهای آزاد/ متنباز و سیستمعامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.
نوشتههای بیشتر از فرشید نوتاش حقیقتاین سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش میشوند.
دیدگاهتان را بنویسید