Cara Menginstal Ubuntu di FreeBSD | Kompatibilitas Biner Linux
· 2 min read · Label UnixBSD
Artikel ini akan membahas prosedur untuk menginstal sistem Ubuntu dasar ke dalam Linux Binary Compatibility bawaan FreeBSD, sehingga aplikasi desktop berbasis Ubuntu dan Debian, seperti Signal, Spotify, dan Netflix, dapat berjalan langsung di FreeBSD. Pembahasan dalam artikel ini menggunakan Ubuntu 20.04 yang akan diinstal ke dalam sistem FreeBSD 13.2 Stable untuk arsitektur AMD64 64-bit.
Linux Binary Compatibility bawaan FreeBSD memungkinkan pengguna FreeBSD, yang menjalankan arsitektur i386 32-bit, amd64 64-bit, atau arm64 64-bit, untuk menginstal dan menjalankan biner Linux 32-bit dan 64-bit langsung di mesin FreeBSD. Hal ini dilakukan melalui tabel panggilan sistem, yang berarti, aplikasi Linux dapat berjalan tanpa emulasi atau virtualisasi. Linux Binary Compatibility bawaan FreeBSD diperkenalkan pada tahun 90-an.
Jika lembar data ZFS Linux telah dibuat, lanjutkan dengan membuat direktori untuk Sistem Dasar Ubuntu.
Aktifkan Sistem Dasar Ubuntu.
Unduh dan instal Ubuntu Base System ke direktori kompatibilitas Linux.
Memperbaiki tautan dinamis (penerjemah ELF) dengan tautan simbolik.
Setelah itu, anda Restart Ubuntu.
Jika skrip di atas telah dijalankan, berarti kita telah mengaktifkan Linux Binary Compatibility di FreeBSD dan menginstal sistem dasar Ubuntu di dalamnya. Dengan Ubuntu Linux yang aktif di FreeBSD, sekarang kita dapat menginstal repositori Ubuntu di FreeBSD. Sekarang kita menguji dengan memperbarui Ubuntu dengan skrip dasar Ubuntu, yaitu "apt update".
Dari tampilan skrip di atas, semuanya berjalan normal. Kita lanjutkan lagi dengan meng-upgrade Ubuntu.
Untuk menginstal aplikasi Ubuntu pada komputer FreeBSD, yang perlu Anda perhatikan adalah mengubah command prompt. Perhatikan contoh berikut.
Skrip di atas menjelaskan root@ns1:~ # adalah command prompt FreeBSD, Anda tidak dapat menjalankan aplikasi Ubuntu di command prompt ini. Setelah menjalankan perintah chroot /compat/ubuntu /bin/bash, command prompt akan berubah menjadi root@ns1:/#, artinya kita aktif di command prompt Ubuntu dan dapat menginstal aplikasi Ubuntu di command prompt root@ns1:/#.
Linux Binary Compatibility bawaan FreeBSD memungkinkan pengguna FreeBSD, yang menjalankan arsitektur i386 32-bit, amd64 64-bit, atau arm64 64-bit, untuk menginstal dan menjalankan biner Linux 32-bit dan 64-bit langsung di mesin FreeBSD. Hal ini dilakukan melalui tabel panggilan sistem, yang berarti, aplikasi Linux dapat berjalan tanpa emulasi atau virtualisasi. Linux Binary Compatibility bawaan FreeBSD diperkenalkan pada tahun 90-an.
1. Kernel untuk Ubuntu Linux
Langkah pertama yang harus dilakukan untuk menjalankan Ubuntu di FreeBSD adalah mengaktifkan kernel Linux Ubuntu di komputer FreeBSD. Pada dasarnya FreeBSD memiliki kompatibilitas biner bawaan dengan Linux. Hal ini memungkinkan untuk menjalankan biner Ubuntu dan Linux. Hal ini diaktifkan dengan memuat modul kernel Linux. Berikut ini adalah kernel Linux di FreeBSD.kldload linux
kldload linux64
kldload fdescfs
kldload linprocfs
kldload tmpfs
kldload linsysfs
Agar kernel Linux dapat aktif pada mesin FreeBSD, sehingga saat komputer di-restart, kernel dapat langsung dibaca oleh FreeBSD. Masukkan skrip kernel Linux pada file /boot/loader.conf.
root@ns1:~ # ee /boot/loader.conf
linux_load="YES"
linux64_load="YES"
fdescfs_load="YES"
linprocfs_load="YES"
tmpfs_load="YES"
linsysfs_load="YES"
Skrip di atas akan menjadikan kernel Ubuntu Linux permanen pada sistem FreeBSD. Setelah kernel menjadi permanen, buat skrip rc.d dalam berkas /etc/rc.conf.
root@ns1:~ # ee /etc/rc.conf
kld_list="linux linux64 cuse fusefs /boot/modules/i915kms.ko"
linux_enable="YES"
ubuntu_enable="YES"
2. Buat Skrip Sistem Dasar Ubuntu di rc.d FreBSD
Ketik skrip berikut untuk mulai mengaktifkan Sistem Dasar Ubuntu.root@ns1:~ # touch /usr/local/etc/rc.d/ubuntu
root@ns1:~ # chmod +x /usr/local/etc/rc.d/ubuntu
root@ns1:~ # ee /usr/local/etc/rc.d/ubuntu
#!/bin/sh
#
# PROVIDE: ubuntu
# REQUIRE: archdep mountlate
# KEYWORD: nojail
#
. /etc/rc.subr
name="ubuntu"
desc="Ubuntu for FreeBSD Linux Binary Compatibility"
rcvar="ubuntu_enable"
start_cmd="${name}_start"
stop_cmd=":"
unmounted()
{
[ `stat -f "%d" "$1"` == `stat -f "%d" "$1/.."` -a `stat -f "%i" "$1"` != `stat -f "%i" "$1/.."` ]
}
ubuntu_start()
{
local _tmpdir
load_kld -e 'linux(aout|elf)' linux
case `sysctl -n hw.machine_arch` in
amd64)
load_kld -e 'linux64elf' linux64
;;
esac
if [ -x "/compat/ubuntu/sbin/ldconfigDisabled" ]; then
_tmpdir=`mktemp -d -t linux-ldconfig`
/compat/ubuntu/sbin/ldconfig -C ${_tmpdir}/ld.so.cache
if ! cmp -s "${_tmpdir}/ld.so.cache" "/compat/ubuntu/etc/ld.so.cache"; then
cat "${_tmpdir}/ld.so.cache" > "/compat/ubuntu/etc/ld.so.cache"
fi
rm -rf ${_tmpdir}
fi
load_kld pty
if [ `sysctl -ni kern.elf64.fallback_brand` -eq "-1" ]; then
sysctl kern.elf64.fallback_brand=3 > /dev/null
fi
if [ `sysctl -ni kern.elf32.fallback_brand` -eq "-1" ]; then
sysctl kern.elf32.fallback_brand=3 > /dev/null
fi
sysctl compat.linux.emul_path="/compat/ubuntu"
unmounted "/compat/ubuntu/dev" && (mount -o nocover -t devfs devfs "/compat/ubuntu/dev" || exit 1)
unmounted "/compat/ubuntu/dev/fd" && (mount -o nocover,linrdlnk -t fdescfs fdescfs "/compat/ubuntu/dev/fd" || exit 1)
unmounted "/compat/ubuntu/dev/shm" && (mount -o nocover,mode=1777 -t tmpfs tmpfs "/compat/ubuntu/dev/shm" || exit 1)
unmounted "/compat/ubuntu/home" && (mount -t nullfs /home "/compat/ubuntu/home" || exit 1)
unmounted "/compat/ubuntu/proc" && (mount -o nocover -t linprocfs linprocfs "/compat/ubuntu/proc" || exit 1)
unmounted "/compat/ubuntu/sys" && (mount -o nocover -t linsysfs linsysfs "/compat/ubuntu/sys" || exit 1)
unmounted "/compat/ubuntu/tmp" && (mount -t nullfs /tmp "/compat/ubuntu/tmp" || exit 1)
unmounted /dev/fd && (mount -o nocover -t fdescfs fdescfs /dev/fd || exit 1)
unmounted /proc && (mount -o nocover -t procfs procfs /proc || exit 1)
true
}
load_rc_config $name
run_rc_command "$1"
Skrip di atas akan mengaktifkan Ubuntu Base System pada komputer FreeBSD. Jadi, saat komputer melakukan boot ulang/me-restart sistem FreeBSD, komputer akan secara otomatis membaca skrip Ubuntu Base System di atas. Mari kita coba memulai ulang Ubuntu Base System sekarang.
root@ns1:~ # service ubuntu restart
3. Buat Direktori Kompatibilitas Linux Lembar Data ZFS
Lembar data ZFS Linux digunakan untuk membuat snapshot, menghapus file, dan menghapus seluruh isi volume dengan aman tanpa mengganggu sistem file direktori FreeBSD. Ikuti skrip di bawah ini untuk membuat lembar data ZFS untuk Linux.root@ns1:~ # zfs create -o compression=on -o mountpoint=/compat zroot/compat
root@ns1:~ # zfs snapshot -r zroot/compat@2022-04-22
root@ns1:~ # mkdir -p /compat/ubuntu/{dev/fd,dev/shm,home,proc,sys,tmp}
root@ns1:~ # service ubuntu restart
compat.linux.emul_path: /compat/ubuntu -> /compat/ubuntu
4. Menginstal Sistem Dasar Ubuntu ke Direktori Kompatibilitas Linux
File instalasi Sistem Dasar Ubuntu adalah "debootstrap". File ini akan digunakan untuk mengunduh dan menginstal sistem dasar Ubuntu dengan menentukan target Ubuntu, seperti focal untuk Focal Fossa, yang merupakan versi Ubuntu 20.04 LTS.root@ns1:~ # pkg install linux-sublime-text4
root@ns1:~ # pkg install debootstrap
root@ns1:~ # debootstrap --arch=amd64 --no-check-gpg focal /compat/ubuntu
I: Configuring netcat-openbsd...
I: Configuring isc-dhcp-client...
I: Configuring debconf-i18n...
I: Configuring vim-tiny...
I: Configuring ca-certificates...
I: Configuring libapt-pkg6.0:amd64...
I: Configuring gir1.2-glib-2.0:amd64...
I: Configuring whiptail...
I: Configuring keyboard-configuration...
I: Configuring libpython3.8-stdlib:amd64...
I: Configuring python3.8...
I: Configuring libxml2:amd64...
I: Configuring libpython3-stdlib:amd64...
I: Configuring apt...
I: Configuring apt-utils...
I: Configuring python3...
I: Configuring python3-six...
I: Configuring python3-gi...
I: Configuring shared-mime-info...
I: Configuring python3-netifaces...
I: Configuring lsb-release...
I: Configuring python3-cffi-backend...
I: Configuring python3-pkg-resources...
I: Configuring python3-dbus...
I: Configuring python3-yaml...
I: Configuring netplan.io...
I: Configuring ubuntu-advantage-tools...
I: Configuring python3-nacl...
I: Configuring networkd-dispatcher...
I: Configuring python3-pymacaroons...
I: Configuring console-setup-linux...
I: Configuring console-setup...
I: Configuring kbd...
I: Configuring ubuntu-minimal...
I: Configuring libc-bin...
I: Configuring systemd...
I: Configuring ca-certificates...
I: Base system installed successfully.
root@ns1:~ # cd /compat/ubuntu/lib64/
root@ns1:/compat/ubuntu/lib64 # rm ./ld-linux-x86-64.so.2
root@ns1:/compat/ubuntu/lib64 # ln -s ../lib/x86_64-linux-gnu/ld-2.31.so ld-linux-x86-64.so.2
root@ns1:/compat/ubuntu/lib64 # service linux restart
root@ns1:/compat/ubuntu/lib64 # service ubuntu restart
compat.linux.emul_path: /compat/ubuntu -> /compat/ubuntu
5. Konfigurasi Ubuntu
Untuk mengonfigurasi Ubuntu pada sistem FreBSD, kita harus masuk ke chroot jail, yang akan membatasi proses konfigurasi ke sistem berkas dasar Ubuntu. Jika Ubuntu menampilkan pesan tentang ID grup yang hilang, hal ini dapat diabaikan. Anda akan melihat bahwa Command Prompt akan berubah.root@ns1:~ # chroot /compat/ubuntu /bin/bash
root@ns1:/# printf "%b\n" "0.0 0 0.0\n0\nUTC" > /etc/adjtime
root@ns1:/# dpkg-reconfigure tzdata
Current default time zone: 'Asia/Jakarta'
Local time is now: Sun Jul 9 14:31:08 WIB 2023.
Universal Time is now: Sun Jul 9 07:31:08 UTC 2023.
root@ns1:/# printf "APT::Cache-Start 251658240;" > /etc/apt/apt.conf.d/00aptitude
root@ns1:/# printf "APT::Cache-Start 251658240;" > /etc/apt/apt.conf.d/00aptitude
root@ns1:/# printf "deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.list
root@ns1:/# exit
exit
root@ns1:~ #
root@ns1:~ # chroot /compat/ubuntu /bin/bash
root@ns1:/# apt update
Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [970 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal/main Translation-en [506 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [22.0 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal/restricted Translation-en [6212 B]
Get:6 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [8628 kB]
Get:7 http://archive.ubuntu.com/ubuntu focal/universe Translation-en [5124 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [144 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal/multiverse Translation-en [104 kB]
Fetched 15.8 MB in 9s (1715 kB/s)
Reading package lists... Done
Building dependency tree... Done
All packages are up to date.
root@ns1:/# apt list --upgradable
Listing... Done
root@ns1:/# apt upgrade
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@ns1:/# apt autoremove
Reading package lists... Done
Building dependency tree... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@ns1:/# apt clean
root@ns1:/#
Sempurna, semua konfigurasi tidak ada yang salah dan Ubuntu telah berjalan normal di komputer FreeBSD. Sekarang Anda dapat menginstal program berbasis Ubuntu di FreeBSD. Untuk lebih meyakinkan, kami menguji pemasangan aplikasi NGINX di Ubuntu.root@ns1:~ # chroot /compat/ubuntu /bin/bash
root@ns1:/# apt update
Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
root@ns1:/# apt install nginx
Reading package lists... Done
Building dependency tree... Done
The following additional packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libfreetype6 libgd3 libjbig0 libjpeg-turbo8 libjpeg8
libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libpng16-16
libtiff5 libwebp6 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4 libxslt1.1 nginx-common nginx-core
Suggested packages:
libgd-tools fcgiwrap nginx-doc ssl-cert
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libfreetype6 libgd3 libjbig0 libjpeg-turbo8 libjpeg8
libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libpng16-16
libtiff5 libwebp6 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4 libxslt1.1 nginx nginx-common nginx-core
0 upgraded, 25 newly installed, 0 to remove and 0 not upgraded.
Need to get 3851 kB of archives.
After this operation, 12.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
root@ns1:~ # chroot /compat/ubuntu /bin/bash
root@ns1:/#
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar