Dokumentasi gentoo menjelaskan bagaimana Anda dapat mengubah Linux menjadi gentoo dengan cepat. Sayangnya, instruksi tersebut terakhir diperbarui pada tahun 2014 dan jika Anda menerapkannya secara langsung, kemungkinan besar Anda akan mengalami masalah. Akan tetapi, di github Anda dapat menemukan sebuah skrip yang, menurut pembuatnya, dapat secara otomatis mengubah Linux apapun menjadi gentoo. Skrip belum diperbarui untuk waktu yang lama, tetapi setelah perubahan kecil itu berfungsi sebagaimana mestinya. Penulis skrip asli memutuskan untuk tidak menerapkan permintaan penarikan saya, tetapi memodifikasi skripnya berdasarkan saran saya. Versi skrip saya dapat ditemukan di sini .
Jadi mari kita lanjutkan dan ubah ubuntu 20.04 menjadi gentoo. Untuk melakukan ini, buat mesin virtual menggunakan gambar minimal ubuntu 20.04 dan masuk sebagai pengguna ubuntu. Setelah itu, alihkan ke pengguna root:
sudo -i
Beralih ke mode pengguna tunggal:
systemctl rescue
Dalam kondisi normal, jaringan terputus. Ini tidak terjadi di cloud oracle, tetapi proses yang diselesaikan systemd berakhir dan, akibatnya, dns berhenti bekerja. Mari kita perbaiki:
rm /etc/resolv.conf && echo 'nameserver 8.8.8.8' >/etc/resolv.conf
Sekarang Anda dapat menjalankan skrip migrasi dan minum teh, ini akan memakan waktu cukup lama:
wget -qO- https://raw.githubusercontent.com/kt97679/to-gentoo/master/to-gentoo|bash
Saat skrip selesai, Anda akan diminta untuk melakukan boot ulang. Sebelum melakukan ini, Anda perlu memastikan bahwa Anda tidak kehilangan akses root setelah reboot. Untuk melakukan ini, Anda perlu mengizinkan akses root melalui ssh:
sed -i -e '/^PermitRootLogin.*/d' /etc/ssh/sshd_config && echo -e "\nPermitRootLogin without-password" >>/etc/ssh/sshd_config
Dan perbaiki file /root/.ssh/authorized_keys:
sed -i -e 's/.*\(ssh-rsa.*\)/\1/' /root/.ssh/authorized_keys
Sekarang Anda bisa reboot, tetapi perintah reboot tidak membantu, jadi mari kita bawa beberapa artileri berat:
sync && echo 1 > /proc/sys/kernel/sysrq && echo b > /proc/sysrq-trigger
Mesin akan melakukan reboot dan setelah beberapa menit Anda akan dapat masuk melalui ssh sebagai root. Anda berada di lingkungan gentoo, tetapi Anda masih menggunakan kernel lama dan initrd. Mari perbaiki ini.
Mari aktifkan swap, tanpanya Anda tidak akan memiliki cukup memori untuk mengkompilasi kernel baru.
fallocate -l2G /var/tmp/swap && chmod 0600 /var/tmp/swap && mkswap /var/tmp/swap && swapon /var/tmp/swap
Saya tidak berencana menggunakan systemd pada mesin ini, jadi saya menutupinya dan udev:
echo -e 'sys-apps/systemd\nsys-fs/udev'> /etc/portage/package.mask/systemd
Setelah itu, Anda dapat menginstal paket yang diperlukan untuk mengompilasi kernel:
emerge gentoo-sources app-arch/lz4
Sekarang Anda bisa masuk ke direktori dengan sumber kernel,
cd /usr/src/linux
buat konfigurasi kernel baru menggunakan konfigurasi kernel yang dimuat,
yes ""|make oldconfig
dan biarkan dalam konfigurasi hanya modul-modul yang saat ini digunakan.
yes ""|make localmodconfig
Saya berencana untuk tidak menggunakan initrd pada mesin ini, jadi semua modul akan dikompilasi ke dalam kernel:
yes ""|make localyesconfig
Kami mulai mengkompilasi dan menginstal kernel:
make && make INSTALL_MOD_STRIP=1 modules_install && make install
Mesin kami sangat lemah, sehingga proses ini akan memakan waktu lama. Saat kompilasi selesai, Anda perlu memperbarui konfigurasi bootloader. Saya menambahkan opsi kernel yang digunakan di ubuntu asli.
cat >/boot/grub/grub.cfg <<EOF
set timeout=1
menuentry 'gentoo' {
linux $(ls -t /boot/vmlinuz-*|head -n1) root=/dev/sda1 console=tty1 console=ttyS0 nvme.shutdown_timeout=10 libiscsi.debug_libiscsi_eh=1
}
EOF
Masuk akal untuk mengizinkan login di konsol serial jika ada masalah jaringan:
sed -i -e 's/^#\(.*ttyS0.*\)/\1/' /etc/inittab
Sedikit tertinggal. Setelah reboot, antarmuka jaringan tidak akan bernama ens3, tetapi eth0. Anda perlu menghapus skrip inisialisasi dari antarmuka lama dan menambahkan inisialisasi yang baru:
cd /etc/init.d && rm net.ens3 && ln -s net.lo net.eth0
Jika Anda perlu masuk melalui konsol serial, Anda perlu menyetel kata sandi untuk pengguna root:
passwd
Semuanya sudah siap, Anda bisa reboot.
Jika setelah reboot Anda tidak dapat masuk ke mesin melalui ssh, buat koneksi konsol dan gunakan untuk debugging.
Anda sekarang memiliki instalasi gentoo dasar yang dapat dimodifikasi sesuai kebutuhan Anda. Ada artefak yang tersisa di sistem dari ubuntu asli. Mereka tidak lagi dibutuhkan dan dapat dihapus. Skrip dengan perintah migrasi dapat ditemukan di sini .