Bisa. Kadang-kadang.
Beberapa minggu yang lalu saya membeli laptop baru. Setelah masa percobaan dan yakin dia cukup operasional, saya mulai berpikir bagaimana cara untuk migrasi sistem dari laptop lama. Setelah mempertimbangkan berbagai cara, saya berpikir untuk coba tukar saja SSD nya langsung, dan lihat apakah dia berhasil boot dan berfungsi.
Foto setelah tukar SSD kedua laptop
Ternyata saya tidak sukses. Laptop lama saya berhasil boot dengan santai. Tapi laptop yang baru tidak. Di layarnya muncul pesan berikut:
Booting from Hard Disk...
dan hang.
Firmware Laptop tidak kenal UEFI
Ini disebabkan karena OS di SSD dulu diinstall dengan anggapan akan menggunakan UEFI untuk booting, sementara firmware Coreboot+SeaBIOS di laptop baru hanya bisa booting menggunakan cara BIOS tradisional. Untuk mengatasi ini kita buat sebuah partisi khusus untuk meneruskan lompatan instruksi booting agar Coreboot+SeaBIOS bisa mengenali OS kita.
Metode booting ini dikenali secara umum sebagai metode BIOS/GPT. Karena metode ini menggabungkan firmware BIOS (bukan UEFI), dengan tabel partisi ala UEFI (GPT).
Berbagai petunjuk di internet (Debian maupun Arch) menyarankan ukuran partisi ini minimal 1 MiB. Tetapi Manjaro menyarankan 8 MiB, jadi saya pilih aman saja dan membuat dia jadi 8 MiB.
Karena sistemnya tidak bisa booting saya pakai live image dari Manjaro. Setelah berhasil boot, saya pakai GParted untuk membuat partisinya. Saya hapus partisi esp yang berisi program-program UEFI karena kita tidak pakai UEFI lagi, lalu menggunakan ruang kosong yang baru tercipta untuk menaruh 8 MiB partisi baru. Saya letakkan dia rata kiri.
Satu hal yang wajib diperhatikan adalah kita harus set flag untuk partisi ini sebagai "bios_grub" dalam GParted. Kalau pakai aplikasi lain, misalnya gdisk, nama kodenya adalah "ef02". Pokoknya harus ditandai biar firmwarenya tahu jenis peranan partisi ini.
Berikutnya adalah menginstall bootloader. Mungkin sebenarya bisa langsung saja di-install. Tapi saya was-was kalau ada referensi yang tidak sesuai, jadi saya chroot dulu ke dalam instalasi OS di SSD.
Pertama upacara persiapan dulu:
cd / sudo mount /dev/nvme0n1p2 /mnt #partisi OS di SSD saya sudo mount -t sysfs sys /mnt/sys sudo mount -t proc proc /mnt/proc sudo mount -o bind dev /mnt/dev
kalau sudah, mari kita chroot:
chroot /mnt /bin/bash
Sekarang kita install ulang bootloader:
sudo grub-install /dev/nvme0n1 #nvme0n1 adalah SSD saya
Dengan begini grub2 akan terinstall dengan skema partisi yang kita set tadi. Sekarang mari kita coba boot lagi....
Dan ternyata kita berhasil masuk ke dalam bootloader! Layar pemilihan OS berhasil muncul di layar. Saya pilih OS, dan setelah itu muncul pesan berikut:
Loading Linux 4.19.0-17... Loading initial ramdisk...
Dan berhenti di situ. Tidak bergerak... yah, paling tidak sudah berhasil masuk ke dalam drive.
Initial Ramdisk tidak Generik? Kernel Bug?
Kali ini saya tidak beruntung untuk menemukan solusi cantik. Dalam fase awal booting begini susah sekali menggali log error. Pada dasarnya bikin log adalah sebuah kemewahan dalam situasi fakir sumber daya begini. Dan akhirnya saya membuat partisi baru dan menginstall distro yang sama (versi yang sama juga) ke dalam partisi baru lagi. Fresh Install.
DAN!!
Ternyata benar-benar tidak beruntung. Debian 10 yang terbaru PUN tidak mau booting dalam Librem 14 meskipun dari fresh install. Jadi ini bukan masalah instalasi yang tidak sempurna, melainkan ada asumsi yang salah dari installer OSnya.
Oke, kalau dipikir-pikir, karena proses booting berhenti di initrd, saya baca-baca lebih lanjut lagi tentang initrd. Ternyata kebijakan Debian defaultnya adalah membuat initrd yang hanya memuat modul yang diperlukan oleh komputer yg sedang mau diinstall. Jadi kemungkinan besar inilah penyebab booting berhenti di initrd. Kasarnya, image initrd dalam sistem semuanya masih dibuat dengan asumsi dia ada di laptop yang lama.
Oke, kalau begitu kita buat image initrd generik, dan pasang dia sebagai ganti yang lama...
Tapi semestinya karena instalasi fresh, kita harusnya sudah membangun initrd dari awal. Kalau bukan itu, berarti yang tertinggal adalah bug dalam kernel. Apakah ini saatnya lapor bug?
Tapi saya malas
Debian 11 baru saja rilis beberapa hari yang lalu. Mendingan saya install Debian 11 saja daripada harus repot-repot menyelamatkan instalasi Debian 10 yang berantakan. Kernelnya juga lebih baru, versi 5.10 ke atas.
Jadinya saya install Debian 11 ke partisi baru tadi menggunakan pilihan expert, supaya bisa mengatur initrd agar menggunakan image generik, bukan yang dibikin khusus untuk laptop tertentu saja. Dan presto!! Saya berhasil login ke dalam shell.
Nanti saya akan install Debian 11 ke dalam partisi root utama. Tapi sebelum itu saya akan backup /etc, /var dan /usr dulu ke /home (/home saya punya partisi sendiri).
Sekian petualangan saya secara naif menukar SSD laptop! Kalau ada follow up, nanti edit ditambah lagi.