Mohon tunggu...
Christo
Christo Mohon Tunggu... Lainnya - Hanya berusaha hidup sebaik-baiknya.

Peace seeker

Selanjutnya

Tutup

Inovasi

Sebuah Drama Mesin 64-bit dengan 32-bit EFI

21 Desember 2017   16:17 Diperbarui: 22 Desember 2017   15:06 689
+
Laporkan Konten
Laporkan Akun
Kompasiana adalah platform blog. Konten ini menjadi tanggung jawab bloger dan tidak mewakili pandangan redaksi Kompas.
Lihat foto
Inovasi. Sumber ilustrasi: PEXELS/Jcomp

Saya memiliki Macbook Putih lama dengan Intel Core 2 Duo T7200, 4GB ram, dan 60 GB HDD, baterai masih tahan 2-3 jam, fisik masih lumayan, boot time juga masih oke bahkan untuk standar komputer jaman sekarang. Hanya saja dengan OS X 10.6.8, semua jadi amat menjengkelkan. Semua software tidak lagi bisa diinstall, Chrome stuck di versi lama mengakibatkan beberapa modern webapp tidak bisa load dengan sempurna. Mau update jadi Mac OS? Nggak deh makasih. 

Sebagai pengguna Ubuntu, sudah jelas opsi pilihan saya jatuh ke OS yang satu ini. (Laptop saya sekarang Macbook Air dengan Ubuntu Mate 16.04 LTS). Tanpa banyak pikir saya masukkan DVD dengan Ubuntu Mate 16.04.3 64-bit ke dalam Superdrive lalu tekan power button sambil menekan C. Di luar ekspektasi saya, di layar hanya tertera "Select CD-ROM boot type" dan keyboard tidak berfungsi, tidak bisa melakukan apapun. 

Hal ini lumayan di luar dugaan saya karena instalasi Ubuntu di mesin Apple selalu sukses, bahkan saya telah melakukan instalasi Ubuntu 12.04 di Macbook Black sebelumnya (sama-sama Core 2 Duo). Usut punya usut, waktu itu saya menggunakan 32-bit iso, dan sekarang saya menggunakan 64-bit iso. Macbook 2,1 memang 64-bit namun ternyata menggunakan 32-bit EFI.

Setelah menelusuri ini saya menemukan  solusi sederhana untuk mengubah disk image menjadi BIOS-only (non-EFI). 

Compiling-nya simple, terimakasih kepada Thomas Schmitt (scdbackup) yang memberikan script C, untuk yang awam saya coba walk-through sedikit (walau tulisan ini bukan tutorial sebenarnya)... Simpan ini dlam satu file dengan nama terserah anda misal junaedi.c

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

static char *iso_name = {"trusty-desktop-amd64.iso"};

int main(int argc, char **argv)
{
  int fd, ret;
  unsigned char buf[2048 - 64];
  off_t lba;
  size_t buf_size = 2048 - 64;

  fd = open(iso_name, O_RDWR);
  if (fd == -1)
    goto err_ex;
  if (lseek(fd, (off_t) 32768 + 2048 + 71, SEEK_SET) == -1)
    goto err_ex;
  ret = read(fd, buf, 4);
  if (ret == -1)
    goto err_ex;
  if (ret < 4) {
    fprintf(stderr, "Cannot read 4 bytes from %s\n", iso_name);
    exit(1);
  }
  lba = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
  if (lseek(fd, lba * 2048 + 64, SEEK_SET) == -1)
    goto err_ex;
  memset(buf, 0, buf_size);
  ret = write(fd, buf, buf_size);
  if (ret == -1)
    goto err_ex;
  if (ret < buf_size) {
    fprintf(stderr, "Cannot write %d bytes to %s\n", (int) buf_size, iso_name);
    exit(1);
  }
  close(fd);
  printf("done\n");
  exit(0);
err_ex:;
  perror(iso_name);
  exit(1);
}

Jangan lupa mengganti trusty-desktop-amd64.iso dengan nama iso yang anda download. (!penting)

Supaya mudah saya menaruh junaedi.c dan iso yang saya download ke /Users/[useranda] lalu compile dengan cc:

cc -g -Wall -o junaedi junaedi.c

HALAMAN :
  1. 1
  2. 2
Mohon tunggu...

Lihat Konten Inovasi Selengkapnya
Lihat Inovasi Selengkapnya
Beri Komentar
Berkomentarlah secara bijaksana dan bertanggung jawab. Komentar sepenuhnya menjadi tanggung jawab komentator seperti diatur dalam UU ITE

Belum ada komentar. Jadilah yang pertama untuk memberikan komentar!
LAPORKAN KONTEN
Alasan
Laporkan Konten
Laporkan Akun