Senin, 31 Desember 2018

Membuat konfigurasi Snapper

PERHATIAN: Tulisan ini hanya berlaku untuk openSUSE Leap 15.0 ke atas atau Tumbleweed saja. Karena sebagian fitur dalam tulisan ini tidak ada di versi sebelumnya.

Jika kita memasang openSUSE dengan pilihan baku, menggunakan filesystem BtrFS, akan secara otomatis dibuatkan snapshot yang bisa dikelola oleh Snapper. Tapi snapshot yang dibuat hanya akan ada pada root saja dan tidak termasuk subvolume yang ada di dalamnya. Snapshot akan secara otomatis dibuat ketika kita membuka modul YaST atau memasang/menghapus paket dengan menggunakan perintah zypper.

Subvolume yang ada di dalam partisi root adalah:

  • /home (jika tidak dipisah dari partisi root)
  • /var
  • /usr/local
  • /tmp
  • /srv
  • /root
  • /opt
  • /boot/grub2/x86_64-efi
  • /boot/grub2/i386-pc

Apapun isi yang berada di dalam direktori dari subvolume di atas tidak akan dimasukkan ke dalam snapshot yang dibuat, sehingga kita tidak bisa melakukan rollback/undochange terhadap konten yang berada di dalam subvolume tersebut.

Saya biasanya membuat konfigurasi Snapper untuk sebagian subvolume tersebut. Diantara yang saya buat adalah /home (karena saya tidak pernah memisahkan HOME dari root), /var, /usr/local, /srv, /root dan /opt.

Untuk membuat konfigurasi dari masing-masing subvolume, jalankan perintah-perintah berikut (semua perintah su -c di bawah bisa diganti dengan sudo dan menghilangkan tanda petik jika Anda memasang paket sudo):

su -c "snapper -c home create-config /home" (untuk subvolume /home jika tidak dipisah dari root)

su -c "snapper -c var create-config /var"

su -c "snapper -c local create-config /usr/local"

su -c "snapper -c srv create-config /srv"

su -c "snapper -c su create-config /root" (jangan menggunakan nama konfigurasi root karena sudah digunakan oleh konfigurasi bawaan untuk partisi root, jadi gunakan su atau nama lain saja)

su -c "snapper -c opt create-config /opt"

Setelah selesai membuat konfigurasi, kita bisa melihat semua konfigurasi dengan perintah:

su -c "snapper list-configs"

Secara baku, semua konfigurasi Snapper yang dibuat secara manual akan membuat snapshot berdasarkan waktu (timeline) dan akan dibuat setiap jam. Jadi, jika komputer kita hidup 24 jam, dalam sehari semalam Snapper akan membuat 24 snapshot di semua konfigurasi. Untuk saya ini terlalu banyak. Apalagi saat membuat dan menghapus snapshot, komputer kadang terasa berat. Sehingga saya memilih mematikan opsi ini dan menggantinya dengan membuat snapshot saat boot.

Untuk mematikan opsi baku ini, kita bisa menjalankan perintah berikut:

su -c "snapper -c home set-config TIMELINE_CREATE=no"

Jalankan perintah tersebut untuk konfigurasi lainnya.

Untuk melihat hasil perubah konfigurasi, jalankan:

su -c "snapper -c home get-config" (untuk konfigurasi home)

Untuk konfigurasi lain, ganti home dengan nama konfigurasi yang ingin diubah/dilihat (root, local, var, srv, su dan opt).

Dan untuk membuat snapshot pada saat boot secara otomatis, kita bisa memodifikasi dan mengaktifkan service snapper-boot. Caranya, salin file snapper-boot.service dan snapper-boot.timer dari /usr/lib/systemd/system ke /etc/systemd/system dengan perintah:

su -c "cp /usr/lib/systemd/system/snapper-boot* /etc/systemd/system/

Lalu edit /etc/systemd/system/snapper-boot.service. Ubah --cleanup-algorithm number menjadi --cleanup-algorithm timeline dengan perintah:

su -c "sed -i 's/cleanup-algorithm number/cleanup-algorithm timeline/' /etc/systemd/system/snapper-boot.service"

Yang dilakukan di atas adalah untuk membuat snapshot saat boot untuk konfigurasi root. Untuk membuat hal yang sama untuk konfigurasi lain, salin snapper-boot.service dan snapper-boot.timer yang baru saja kita edit menjadi snapper-boot-home.service dan snapper-boot-home.timer (untuk konfigurasi home). Lalu ubah --config root di file snapper-boot-home.service menjadi --config home dengan perintah:

su -c "sed -i 's/config root/config home/' /etc/systemd/system/snapper-boot-home.service"

Ulangi proses di atas untuk konfigurasi var, local, srv, su dan opt. Ubah juga deskripsinya jika perlu.

Setelah selesai dengan proses di atas, sesuaikan opsi TIMELINE_LIMIT sesuai kebutuhan. Saya mengubahnya menjadi seperti ini:

  • TIMELINE_LIMIT_DAILY=3-10
  • TIMELINE_LIMIT_HOURLY=4-10
  • TIMELINE_LIMIT_MONTHLY=0
  • TIMELINE_LIMIT_WEEKLY=2-10
  • TIMELINE_LIMIT_YEARLY=0
Atur semua konfigurasi tersebut dengan perintah:

su -c "snapper -c root set-config TIMELINE_LIMIT_DAILY=3-10 TIMELINE_LIMIT_HOURLY=4-10 TIMELINE_LIMIT_MONTHLY=0 TIMELINE_LIMIT_WEEKLY=2-10 TIMELINE_LIMIT_YEARLY=0"

Ulangi proses di atas untuk konfigurasi home, var, local, srv, su dan opt.

Setelah selesai dengan semua proses di atas, jalankan service untuk semua konfigurasi dengan perintah:

su -c "systemctl enable snapper-boot.timer (untuk konfigurasi root)
su -c "systemctl enable snapper-boot-home.timer (untuk konfigurasi home)
su -c "systemctl enable snapper-boot-var.timer (untuk konfigurasi var)
su -c "systemctl enable snapper-boot-local.timer (untuk konfigurasi local)
su -c "systemctl enable snapper-boot-srv.timer (untuk konfigurasi srv)
su -c "systemctl enable snapper-boot-su.timer (untuk konfigurasi su)
su -c "systemctl enable snapper-boot-opt.timer (untuk konfigurasi opt)

Setelah menjalankan semua service, setiap kali komputer dijalankan, Snapper akan membuat snapshot untuk semua konfigurasi. Ini akan membuat booting komputer terasa sedikit lebih lambat walaupun tidak akan terlalu jauh berbeda. Karena saat membuat snapshot, Snapper butuh waktu sekitar beberapa detik.

Membuat konfigurasi Snapper ini sangat berguna bagi kita yang suka coba-coba pada komputer. Ketika terjadi masalah karena coba-coba tersebut, atau kurang puas dengan hasil uji coba, kita bisa mengembalikan komputer ke kondisi semula. Juga sangat berguna bagi yang menginginkan fitur factory reset seperti yang saya buat di komputer saya. Tentang fitur factory reset ini akan saya tulis tahun depan.

Senin, 24 Desember 2018

Apa yang terpasang di komputer saya 2.0

Ini adalah pembaruan dari tulisan dengan judul yang sama yang saya tulis pada tanggal 24 Juli 2018. Alasan artikel ini ditulis ulang adalah karena saya mengubah software-software yang terinstall di komputer saya. Jadi tulisan lama sudah tidak relevan lagi.

Setelah mencoba beberapa bulan menggunakan aplikasi-aplikasi Flatpak, akhirnya saya memutuskan untuk kembali menggunakan aplikasi-aplikasi dari repositori resmi openSUSE. Alasannya karena pembaruan aplikasi Flatpak jauh lebih besar daripada dari repositori asli, walaupun saya menggunakan openSUSE Tumbleweed yang tidak menggunakan delta update sedangkan pembaruan Flatpak menggunakan delta update. Saya memperbarui openSUSE Tumbleweed sebulan sekali. Dalam sebulan, openSUSE Tumbleweed rata-rata hanya menghabiskan sekitar 500 MB data, sedangkan Flatpak dalam jangka waktu yang sama bisa menghabiskan dua sampai tiga kali lipat.

Jika dimulai dari selesai instalasi openSUSE seperti yang saya tulis di artikel openSUSE minimal install, inilah yang saya pasang dan/atau saya gunakan sehari-hari. Dan sebagai informasi, ketika melakukan instalasi openSUSE, saya tidak memasang Desktop Environment dan Display Manager. Yang saya pasang saat proses instalasi openSUSE di proses pemilihan paket hanya tiga saja, yaitu xf86-input-libinput, snapper-zypp-plugin dan grub2-snapper-plugin. Jadi paket session (plasma5-session) dan paket dm (sddm) di bawah tidak perlu dipasang lagi jika Anda sudah memasangnya ketika memasang openSUSE. Berikut daftarnya:

  • glibc-locale: su -c "zypper install glibc-locale"
  • btrfsmaintenance: su -c "zypper install btrfsmaintenance"
  • kernel-firmware: su -c "zypper install kernel-firmware"
  • ucode-intel: su -c "zypper install ucode-intel"
  • plasma5-session: su -c "zypper install plasma5-session"
  • sddm: su -c "zypper install sddm"
  • plasma-nm5: su -c "zypper install plasma-nm5"
  • plasma5-pa: su -c "zypper install plasma5-pa"
  • alsa-plugins-pulse: su -c "zypper install alsa-plugins-pulse"
  • fonts-config: su -c "zypper install fonts-config"
  • upower: su -c "zypper install upower"
  • dolphin: su -c "zypper install dolphin"
  • kate: su -c "zypper install kate"
  • konsole: su -c "zypper install konsole"
  • ark: su -c "zypper install ark"
  • gwenview5: su -c "zypper install gwenview5"
  • okular: su -c "zypper install okular"
  • spectacle: su -c "zypper install spectacle"
  • kio-extras5: su -c "zypper install kio-extras5"
  • ffmpegthumbs: su -c "zypper install ffmpegthumbs"
  • falkon: su -c "zypper install falkon"
  • ca-certificates-mozilla: su -c "zypper install ca-certificates-mozilla"
  • vlc: su -c "zypper install vlc"
  • phonon4qt5-backend-vlc: su -c "zypper install phonon4qt5-backend-vlc"
  • libreoffice-writer: su -c "zypper install libreoffice-writer"
  • libreoffice-calc: su -c "zypper install libreoffice-calc"
  • libreoffice-impress: su -c "zypper install libreoffice-impress"
  • libreoffice-qt5: su -c "zypper install libreoffice-qt5"
  • kdenlive: su -c "zypper install kdenlive"
  • frei0r-plugins: su -c "zypper install frei0r-plugins"
  • gimp: su -c "zypper install gimp"
  • inkscape: su -c "zypper install inkscape"
  • audacity: su -c "zypper install audacity"
  • stellarium: su -c "zypper install stellarium"
  • MozillaThunderbird: su -c "zypper install MozillaThunderbird"
  • kmozillahelper: su -c "zypper install kmozillahelper"
  • appmenu-gtk3-module: su -c "zypper install appmenu-gtk3-module"
  • appmenu-gtk2-module: su -c "zypper install appmenu-gtk2-module"
  • gtk3-metatheme-breeze: su -c "zypper install gtk3-metatheme-breeze"
  • gtk2-metatheme-breeze: su -c "zypper install gtk2-metatheme-breeze"
  • kde-gtk-config5-gtk3: su -c "zypper install kde-gtk-config5-gtk3"
  • kde-gtk-config5-gtk2: su -c "zypper install kde-gtk-config5-gtk2"
  • libwebkit2gtk-4_0-37: su -c "zypper install libwebkit2gtk-4_0-37"

Sedangkan aplikasi-aplikasi yang saya gunakan yang tidak dipasang lewat repositori openSUSE adalah:

  • JDownloader download manager
  • Munadi simple athan
  • Telegram Desktop
  • Zekr

Untuk mengetahui fungsi dan/atau deskripsi dari paket-paket yang dipasang melalui repositori openSUSE, Anda bisa menjalankan perintah zypper info nama-paket. Perintah ini bisa dijalankan sebagai pengguna biasa, tidak usah menggunakan root atau dengan sudo.