Cover Image

انتقال یک Arch به هارد جدید

امین 17 ژوئن 2024 زمان خواندن: 3 دقیقه

اخیرا یک هارد SSD خریدم و بر آن شدم تا آرچی که روی HDD نصب داشتم منتقل کنم روی SSD. کار سختی نیست، ولی باید چهارچوب قضیه رو توی ذهنتون ترسیم کنین و بدونین که دقیقا قراره چه کاری بکنین. 

سناریوهای مختلف و روش های مختلفی برای این کار وجود داره. اصطلاحا به این کار میگن clone کردن. یعنی شما یک کپی نظیر به نظیر از یک فایل سیستم (درایو) در یک فایل سیستم دیگه می‌سازید. و پیکربندی های مربوط به بوت لودر رو هم انجام میدید و سیستم با دیسک جدید بالا میاد.

تیتروار قراره چه کار بکنیم؟

  • پارتیشن بندی دیسک جدید
  • کلون کردن پارتیشنی که آرچ روی اون نصبه روی پارتیشن یک دیسک جدید.
  • نصب مجدد پکیج کرنل 
  • نصب بوت لودر (مثلا grub) روی دیسک جدید
  • تغییر محتوای fstab بر اساس پارتیشن های جدید

چند سناریو رو مطرح میکنم:

  1. شما یک لپتاپ دارید که فقط یک هارد HDD داره. میخواید اون رو با یک SSD اینترنال SATA تعویض کنید.
    • خب یا باید هر دو هارد همزمان روشن باشن که بتونین اطلاعات رو کلون کنید، مثلا یک باکس خالی هارد اکسترنال دارید که HDD رو میذارید داخلش و SSD رو هم میذارید داخل لپتاپ. یا مثلا لپتاپ شما دو تا پورت SATA داره و میتونید هر دو هارد رو همزمان متصل کنید. (مثلا جای DVD ROM)
    • یا اینکه امکان روشن بودن همزمان هاردها رو ندارید. در این صورت باید اول از HDD اطلاعات رو کلون کنید روی یک فلش مموری، بعد HDD رو در بیارید و SSD رو جایگزین کنید و سپس از روی فلش مموری کلون کنید روی SSD.
  2. شما یک لپتاپ دارید که میخواید HDD رو نگه دارید، و یک SSD از نوع NVMe بهش اضافه کنید و سیستم عامل رو از روی HDD به اون منتقل کنید.

اینکه چه سناریویی با شما همخوانی داره، خدا میدونه! به تعداد آدم ها راه هست برای پارتیشن بندی برای لینوکس! من در این مطلب کلیت ماجرا رو میگم. شما بر اساس شرایط خودتون باید عمل کنید.

توجه: من هیچ ضمانتی برای سالم موندن دیتای شما نمیکنم. شما خودتون باید با مطالعه ویکی آرچ به یک جمع بندی برسید و مراحل رو دقیق طی کنید.

پارتیشن بندی

اول اینکه بهتره پارتیشن بندی شما در دیسک جدید، مشابه پارتیشن بندی در دیسک قبلی باشه. البته این ضروری نیست، اما متفاوت کردن اینها دردسرهای خودش رو خواهد داشت. مثلا اگه یک پارتیشن boot دارید و یک پارتیشن root دارید و یک پارتیشن home سعی کنید در دیسک جدید هم همین ها رو بسازید. با فرمت یکسان. اما اندازشون مهم نیست. مثلا میتونید در دیسک جدید پارتیشن boot رو ۱ گیگ انتخاب کنید درحالی که قبلا ۲۰۰ مگابایت بوده! مثلا!

کسی که آرچ نصب کرده، قاعدتا باید با fdisk و پارتیشن بندی آشنا باشه. کاری که میکنید اینه که یک نسخه لایو آرچ رو با یک مموری بالا میارید و دیسک جدید رو با fdisk پارتیشن بندی میکنید. در این مرحله باید دقت کنید که قصد پارتیشن‌بندی از نوع gpt دارید یا mbr؟

کلون اطلاعات روی مقصد

اینکه بتونید اطلاعات رو مستقیم روی SSD کلون کنید یا اول روی یک مموری کلون کنید و بعد از روی اون روی SSD کلون کنید، وابسته به شرایط خاص شما است. اگر مستقیم اینکار رو بکنید خیلی کار راحت تری خواهید داشت. من برای اینکار از rsync استفاده کردم. روش های مختلفی هست، اما من این روش رو انتخاب کردم. یک نمونه از دستور rsync برای کلون رو در زیر میبینیم:

# rsync -aAXHv --exclude='/dev/*' --exclude='/proc/*' --exclude='/sys/*' --exclude='/tmp/*' --exclude='/run/*' --exclude='/mnt/*' --exclude='/media/*' --exclude='/lost+found/' --exclude='/home/*/.cache/*' --exclude='/home/*/.thumbnails/*' --exclude='/home/*/.gvfs/*' --exclude='/home/*/.local/share/Trash/*' --exclude='/va/lib/dhcpcd/*' --exclude='/var/cacche/pacman/*' /hda1 /sda2

دستور بالا محتوای داخل مسیر /hda1 رو در مسیر /sda2 کلون میکنه. منهای مواردی که استثنا قایل شدیم. اما این دو تا مسیر از کجا اومدن؟!

شما وقتی با لایو بالا میاید، و دیسک SSD رو پارتیشن بندی میکنید، باید پارتیشن های مبدا و مقصد رو مونت کنید که بتونید اونها رو بخونید. من در اینجا دو تا فولدر به این نامها ساختم، پارتیشن های مربوطه رو داخل اونها مونت کردم، و عملیات رو در اونها شروع کردم. حالا ممکنه مقصد اولیه شما یک فلش مموری باشه، یا مستقیم خود SSD.

اگر مقصد اولیه شما فلش مموری است، بایستی فلش مموری رو هم فرمت کرده باشید. مثلا یه فلش مموری بردارید و فرمت اون رو به ext4 تغییر بدید. تا وقتی اطلاعات از روی پارتیشن root میخوان روی فلش کپی بشن، مشکلی پیش نیاد. در این صورت برای کپی اطلاعات از روی فلش مموری به SSD دیگه نیازی به excludeها نداریم و دستور ما خلاصه میشه. مثلا:

# rsync -aAXHv /sdc1 /sda2

در این مثال، sdc1 فلش مموری ما است، و sda2 پارتیشن SSD ما است.

در روش دیگه ای تحت عنوان Partclone اطلاعات به صورت یک فایل ایمیج ذخیره میشن، و بعد از روی اون ایمیج استخراج میشن. من این روش رو نرفتم. اما به نظرم برای مواقعی که میخواید از فلش مموری استفاده کنید بد نباشه.

نصب بوت لودر

بعد از اینکه اطلاعات پارتیشن های خودتون رو کلون کردید، نوبت نصب بوت لودر روی دیسک جدید میرسه. باز اینجا باتوجه به شرایط شما، مراحل متفاوت خواهد بود. اما درست مثل وقتیه که موقع نصب آرچ بوت لودر رو نصب کردید. بنابراین:

  1. ابتدا باید پارتیشن بوت جدید رو که با fdisk ساخته بودیم و flag مربوط به boot رو هم بهش داده بودیم، در مسیر /sda2/boot مونت کنیم. (شای مسیر پارتیشن بوت شما /sda2/efi باشه)
  2. سپس arch-chroot کنیم داخل مسیر جدیدی که کلون شده (در مثال ما در مسیر /sda2)
  3. سپس باید پکیج کرنل رو یکبار دیگه نصب کنیم تا ایمیج کرنل داخل پوشه /boot قرار بگیرن.
  4. سپس بوت لودر رو نصب میکنیم. مثلا برای گراب بسته به اینکه UEFI هستید یا BIOS طبق ویکی نصب کنید.
  5. نهایتا منوی گراب رو هم آپدیت کنید.

تغییر fstab

اگر از fstab استفاده میکنید (لابد میپرسید مگه میشه استفاده نکرد؟!) باید اطلاعات داخل اون رو هم ویرایش کنید و مسیرهای پارتیشن های جدید رو داخلش جایگزین کنید.

نهایتا میتونید مسیرهای جدید رو چک کنید ببینید همه چیز سرجاشون هستن یا نه. و بعد سیستم رو ریبوت کنید و اگر مشکلی وجود داشت بر اساس اینکه چه پیامی دریافت میکنید مشکل رو بر طرف کنید. اگر هم مشکلی وجود نداشت که چه خوب. شما سیستمون رو با موفقیت کلون کردید. با تمام تنظیمات و پکیج هایی که طی ماه ها و حتی سالها نصبشون کردید!

اولین نفری باشید که دیدگاهی ارسال می کند!




حاصل سر و کله زدن های من با لینوکس