Langsung ke konten

Topic archive

Linux

Ekosistem sistem operasi open-source yang dikenal karena fleksibilitas, developer tooling, serta penggunaannya yang luas pada server, platform cloud, perangkat embedded, dan workstation.

66 articles
Linux 19 Sep 2026 4 min read

timerfd Membaca Jumlah Expiration Periodik

Timer periodik dapat mencapai expiration beberapa kali sebelum event loop yang sibuk kembali mendapat waktu CPU. Linux timerfd tidak mereduksi keterlambatan itu menjadi notifikasi “timer aktif” semata. read() yang berhasil mengembalikan counter unsigned 64-bit berisi jumlah expiration yang terakumulasi sejak timer diaktifkan atau sejak read sebelumnya yang berhasil. Counter tersebut mengubah semantik penanganan timer yang terlambat. Readiness menyatakan setidaknya satu expiration sedang tertunda; nilai yang dibaca dari descriptor menyatakan berapa banyak periode yang telah berlalu.

Linux 19 Sep 2026 4 min read

signalfd Mengubah Sinyal Linux Menjadi Event File Descriptor

Sinyal POSIX konvensional dapat menginterupsi thread pada hampir semua batas instruksi lalu memindahkan kontrol ke signal handler. Alur kontrol asinkron tersebut membatasi operasi yang aman di dalam handler dan menambah kerumitan pada program yang control plane utamanya sudah berjalan melalui epoll, poll, atau select. Linux signalfd() menyediakan antarmuka pengiriman yang berbeda. Proses memblokir sinyal tertentu melalui signal mask biasa, membuat signalfd untuk himpunan tersebut, lalu menerima sinyal pending dengan membaca record signalfd_siginfo terstruktur dari descriptor. Pada antarmuka kernel, objek tersebut tetap berupa sinyal; hanya proses konsumsinya yang dipindahkan ke I/O file descriptor biasa.

Linux 19 Sep 2026 4 min read

Seal memfd Membatasi Mutasi Shared Memory Setelah Handoff

Descriptor dari memfd_create() merujuk ke file anonim dengan penyimpanan pada infrastruktur filesystem berbasis memori. Handoff descriptor saja tidak membekukan objek tersebut: proses yang masih memiliki akses yang sesuai dapat menulis byte, melakukan truncate, atau memperbesar file. File seal Linux menambahkan pembatasan yang ditegakkan kernel sehingga mutasi tertentu gagal setelah producer menyatakan objek selesai dibuat. Mekanisme ini mengubah handoff shared memory dari sekadar konvensi menjadi transisi state yang ditegakkan pada objek file.

Linux 19 Sep 2026 5 min read

Request Multishot io_uring Bertahan Melintasi Event Completion

Request io_uring biasa memiliki siklus hidup sederhana: userspace mengirim satu SQE dan kemudian menerima satu CQE. Operasi multishot mengubah hubungan tersebut. Satu request yang dikirim dapat tetap aktif di kernel dan menghasilkan beberapa completion queue entry ketika event yang cocok terjadi. Persistensi itu mengubah asumsi satu CQE per request menjadi protokol siklus hidup yang eksplisit. State penentunya dibawa oleh IORING_CQE_F_MORE: ketika flag ini ada, request asal masih dapat menghasilkan completion lain; ketika flag tidak ada, request multishot tersebut telah berakhir.

Linux 19 Sep 2026 5 min read

process_madvise Menerapkan Memory Advice Lintas Batas Proses

Sebuah proses dapat memakai memory untuk pekerjaan yang koordinasinya berada di komponen lain. Linux process_madvise() memungkinkan koordinator eksternal menerapkan virtual-memory advice terpilih ke rentang dalam proses target tanpa menyuntikkan kode ke proses tersebut. Target diidentifikasi melalui pidfd, sedangkan rentang alamat diberikan sebagai array struct iovec. Susunan ini memisahkan keputusan memory policy dari kode yang memiliki mapping. Runtime manager, service supervisor, atau memory controller dapat meminta perlakuan berorientasi reclaim atau prefetch untuk proses lain, dengan tetap tunduk pada dukungan kernel dan pemeriksaan permission. System call ini tidak memindahkan ownership mapping, tidak membekukan target, dan tidak membuat address space target menjadi statis.

Linux 19 Sep 2026 5 min read

pidfd_getfd Menduplikasi Descriptor Aktif Lintas Batas Proses

Sebuah proses dapat memperoleh descriptor baru yang merujuk ke open file description yang sama dengan descriptor milik proses lain tanpa meminta proses target mengirimkannya. Linux menyediakan operasi ini melalui pidfd_getfd(). Descriptor hasilnya berada di descriptor table caller, tetapi objek kernel di belakangnya tetap sama dengan descriptor target. Perbedaan tersebut penting karena nomor descriptor hanya merupakan entri pada descriptor table sebuah proses. Open file description membawa state seperti posisi file saat ini dan file status flags. Duplikasi lintas proses karena itu memberikan referensi ke instance file kernel yang sudah ada, bukan membuka ulang pathname atau membuat instance independen.

Linux 19 Sep 2026 5 min read

PID File Descriptor Memberi Linux Referensi Stabil untuk Siklus Hidup Proses

PID numerik dapat menunjuk satu proses saat ini dan proses lain pada waktu berikutnya. PID file descriptor di Linux mengubah batas tersebut: pidfd adalah file descriptor yang merujuk sebuah task, sehingga operasi proses dapat tetap terikat pada objek kernel yang dituju tanpa mengulang pencarian berdasarkan PID numerik. Perbedaan ini relevan bagi supervisor, service manager, container runtime, dan perangkat lunak lain yang mengamati siklus hidup proses. PID berguna sebagai nama, tetapi bukan capability yang tahan terhadap penggunaan ulang. Pidfd dapat dipertahankan selama jeda antara identifikasi proses dan operasi terhadap proses tersebut.

Linux 19 Sep 2026 6 min read

PAGEMAP_SCAN Mengelompokkan State Page Table Menjadi Rentang Alamat

Rentang alamat virtual yang besar dapat memiliki hanya sedikit transisi state page. Membaca satu entri pagemap untuk setiap virtual page memang memperlihatkan state pada granularitas page, tetapi user space harus memeriksa rangkaian entri yang panjang. Linux PAGEMAP_SCAN memindahkan filtering ke kernel dan melaporkan span yang cocok sebagai record struct page_region. Interface ini berupa ioctl() pada /proc/PID/pagemap. Request berisi interval alamat, predicate kategori, return mask, dan output vector. Kernel berjalan melalui page table lalu menghasilkan region berurutan yang properti page terpilihnya memenuhi request. Bentuk inspeksi page table berubah dari stream nilai per-page menjadi query rentang yang sudah difilter.

Linux 19 Sep 2026 6 min read

openat2 Membatasi Resolusi Path pada Boundary Kernel

Sebuah pathname yang dimulai di dalam directory tepercaya dapat berakhir pada objek di luar directory tersebut sebelum open() selesai. Parent component, symbolic link, magic link, mount point, dan perubahan namespace secara concurrent semuanya ikut menentukan pathname lookup Linux. Memeriksa string sebelum membukanya karena itu tidak menetapkan lokasi akhir resolusi yang dilakukan kernel. Linux openat2() menempatkan pembatasan di dalam operasi lookup itu sendiri. Pemanggil memberikan directory file descriptor, open flag biasa, dan kebijakan resolve melalui struct open_how. Kernel kemudian menerapkan batas tersebut saat menelusuri setiap path component yang relevan. Security boundary berpindah dari validasi awal atas teks pathname ke operasi yang benar-benar melakukan resolusi.

Linux 19 Sep 2026 4 min read

openat2 Membatasi Resolusi Path Linux pada Operasi Open

Sebuah pathname dapat berubah makna ketika proses sedang me-resolve-nya. Rename direktori, symbolic link, mount point, dan komponen .. dapat mengarahkan lookup keluar dari direktori yang dimaksud program sebagai batas. Linux openat2() menempelkan kebijakan resolusi langsung pada proses lookup. struct open_how memiliki bit mask resolve, sehingga kernel dapat menolak path ketika resolusinya melanggar batas yang dipilih caller, bukan hanya mengandalkan pemeriksaan yang dilakukan sebelum open(). Directory file descriptor menetapkan titik awal Seperti openat(), openat2() dapat me-resolve pathname relatif dari directory file descriptor:

Linux 19 Sep 2026 5 min read

Notifikasi Pengguna seccomp Memindahkan System Call Terpilih ke Supervisor

Notifikasi Pengguna seccomp Memindahkan System Call Terpilih ke Supervisor Filter seccomp tidak terbatas pada mengizinkan system call atau menolaknya di kernel. Saat filter mengembalikan SECCOMP_RET_USER_NOTIF, Linux dapat menahan thread pemanggil lalu mengirim deskripsi system call yang sedang dicoba ke supervisor di user space. Mekanisme ini membentuk batas interposisi untuk call tertentu. Salah satu pemakaiannya adalah saat proses dengan privilege lebih rendah memerlukan operasi yang dimediasi proses lain, misalnya container manager yang menangani call yang tidak dapat dijalankan langsung oleh container. Batas ini sengaja lebih sempit daripada mesin kebijakan keamanan umum: state notifikasi dapat berpacu dengan memori target yang masih dapat berubah, dan dokumentasi kernel memperingatkan agar inspeksi supervisor tidak dijadikan primitive otorisasi.

Linux 19 Sep 2026 4 min read

MADV_FREE Menandai Page Anonim untuk Reclaim Tertunda

MADV_FREE tidak langsung mengganti private anonymous page dengan nol. Operasi ini menandai page yang memenuhi syarat sebagai data yang boleh dibuang, lalu Linux dapat me-reclaim-nya kemudian. Sebelum reclaim benar-benar terjadi, byte lama masih dapat terlihat. Penulisan sebelum reclaim membatalkan status tersebut pada page yang ditulis. Karakteristik waktu ini membedakan MADV_FREE dari advice yang langsung mengubah keadaan range yang terlihat oleh proses. Kontraknya adalah reclamation tertunda: aplikasi menyatakan bahwa isi lama tidak lagi diperlukan, sedangkan kernel menentukan kapan memori fisik diambil kembali.

Linux 19 Sep 2026 5 min read

Konfigurasi Wi-Fi Ubuntu Server Tanpa Menebak Backend Netplan

Blok Wi-Fi Netplan dapat valid secara sintaks tetapi tetap salah untuk Ubuntu Server tertentu. Dua nilai yang tidak aman untuk sekadar disalin dari contoh adalah nama interface dan renderer. Konfigurasi yang memakai wlp2s0 mengasumsikan mesin memang memiliki interface dengan nama tersebut. Menetapkan renderer: networkd mengasumsikan instalasi memang ditujukan menggunakan systemd-networkd; untuk Wi-Fi, backend ini juga bergantung pada wpa_supplicant. Instalasi lain mungkin sudah dikelola oleh NetworkManager. Urutan yang andal karena itu adalah inspeksi lebih dahulu, baru konfigurasi.

Linux 19 Sep 2026 5 min read

Jalur Pencarian Unit File systemd dan Prioritas Override

File service systemd tidak wajib berada di /etc/systemd/system. System manager mencari unit file di beberapa direktori, dan lokasi file berpengaruh karena urutan pencarian menentukan definisi mana yang dipakai ketika nama unit yang sama tersedia di lebih dari satu tempat. Untuk service yang dikelola administrator, /etc/systemd/system biasanya menjadi lokasi yang tepat. Package distribusi umumnya memasang unit di /usr/lib/systemd/system, sedangkan /run/systemd/system digunakan untuk konfigurasi runtime yang hilang setelah reboot. Pemisahan ini memungkinkan konfigurasi lokal menimpa default dari vendor tanpa mengedit file milik package manager.

Linux 19 Sep 2026 5 min read

Idmapped Mount Memetakan Ulang Ownership Tanpa Menulis Ulang Inode

Inode yang sama dapat terlihat memiliki ownership berbeda melalui dua mount point tanpa chown() rekursif. Idmapped mount Linux menempelkan ID mapping pada sebuah mount, sehingga penyajian ownership dan pemeriksaan permission di VFS dapat menerjemahkan user ID serta group ID untuk view tersebut sementara ownership yang disimpan filesystem tetap sama. Properti ini memisahkan metadata inode persisten dari view identitas yang diekspos pada mount tertentu. Mekanisme tersebut berguna ketika satu pohon filesystem perlu dipakai container dengan user namespace yang memetakan ID secara berbeda dari host.

Linux 19 Sep 2026 4 min read

Hex Acak Bukan Hash: Membuat Nilai Acak Kriptografis di Linux

Perintah seperti openssl rand -hex 32 sering disebut sebagai cara membuat “hash acak.” Hasilnya memang terlihat seperti digest SHA-256: 64 karakter heksadesimal. Namun, tidak ada operasi hash di sana. OpenSSL menghasilkan 32 byte acak lalu meng-encode-nya sebagai heksadesimal. Perbedaannya penting. Fungsi hash mengubah input menjadi digest berukuran tetap. Cryptographically secure random number generator menghasilkan byte yang tidak dapat diprediksi. Jika kebutuhannya adalah token, session secret, kredensial API, nonce, atau nilai acak baru lainnya, bagian yang penting adalah byte acaknya. Melakukan hashing setelahnya biasanya tidak menambah ketidakpastian yang berguna.

Linux 19 Sep 2026 5 min read

eventfd Mengubah Notifikasi Kernel Menjadi Counter yang Dapat Dipantau

Proses Linux dapat memberi sinyal bahwa ada pekerjaan melalui file descriptor tanpa memindahkan byte stream antara producer dan consumer. eventfd() membuat counter 64-bit yang dikelola kernel dan readiness-nya dapat diamati oleh poll(), select(), atau epoll. Operasi write menambah counter; operasi read mengonsumsi state yang telah terakumulasi sesuai mode descriptor. Bentuk ini membedakan eventfd dari pipe. Pipe mempertahankan urutan byte. Eventfd mempertahankan state counter. Saat aplikasi memerlukan sinyal wakeup beserta sedikit state terakumulasi, perbedaan ini menghilangkan buffering dan framing yang diperlukan oleh byte stream.

Linux 19 Sep 2026 5 min read

close_range Menjadikan Pembersihan File Descriptor Satu Operasi Linux

Proses yang bersiap menjalankan program lain sering memiliki batas sederhana: descriptor 0, 1, dan 2 tetap tersedia, sedangkan semua descriptor yang lebih tinggi harus hilang. Memanggil close() berulang sampai batas angka yang diperkirakan atau mengiterasi /proc/self/fd mengubah batas tersebut menjadi pemindaian di userspace. Linux close_range() menyatakan interval itu secara langsung. Kernel menerapkan satu operasi pada setiap file descriptor terbuka dari first sampai last, termasuk kedua ujungnya. Melalui flag, interface yang sama dapat mengisolasi descriptor table bersama atau menandai interval sebagai close-on-exec alih-alih langsung menutupnya.

Linux 19 Sep 2026 4 min read

CLONE_INTO_CGROUP Menempatkan Child ke cgroup Target Saat Dibuat

CLONE_INTO_CGROUP Menempatkan Child ke cgroup Target Saat Dibuat Proses yang dibuat di satu cgroup lalu dipindahkan ke cgroup lain memiliki interval singkat tetapi nyata di cgroup awal. Selama interval itu, accounting, resource control, dan freezer state berasal dari penempatan awal, bukan dari tujuan. Linux menyediakan CLONE_INTO_CGROUP agar clone3() dapat menempatkan child langsung ke target cgroup v2 sebagai bagian dari pembuatan proses. Mekanisme ini mengubah batas penempatan. Alih-alih membuat task lalu memperbaiki membership cgroup sesudahnya, pemanggil menentukan tujuan sebelum child ada.

Linux 19 Sep 2026 4 min read

Cara Linux Memetakan USB-UART ESP32 ke /dev/ttyUSB0 di Fedora

Board development ESP32 yang terhubung melalui bridge USB-to-UART CH341 tidak muncul di Fedora sebagai port COM seperti di Windows. Linux mengikat interface USB tersebut ke driver serial lalu mengekspos character device seperti /dev/ttyUSB0. Koneksi yang bekerja dapat menghasilkan pesan kernel berikut: usb 5-1: ch341-uart converter now attached to ttyUSB0 Baris itu mengonfirmasi enumerasi USB, binding ke driver serial ch341, dan pembuatan ttyUSB0. Karena itu, path yang digunakan flasher atau serial monitor adalah /dev/ttyUSB0.

Linux 18 Sep 2026 5 min read

userfaultfd Mengubah Page Fault Menjadi Event Userspace

Sebuah thread dapat mengalami fault pada virtual address lalu tetap terblokir sementara thread atau proses userspace lain menentukan state page yang membuat akses tersebut dapat dilanjutkan. userfaultfd menyediakan batas ini dengan mengubah page fault terpilih menjadi message pada file descriptor dan memasangkan message tersebut dengan ioctl untuk menyelesaikan fault. Mekanisme ini tidak menggantikan page-fault machinery milik kernel. Kontrol userspace disisipkan pada range dan kelas fault yang didaftarkan, sementara kernel tetap memiliki page table, pemblokiran fault, dan transisi yang membuat page dapat diakses kembali.

Linux 18 Sep 2026 4 min read

timerfd Menghitung Ekspirasi melalui I/O Descriptor

timerfd periodik tidak memerlukan satu wakeup userspace untuk setiap ekspirasi timer. Jika beberapa ekspirasi terjadi sebelum descriptor dibaca, Linux mengakumulasikannya dan mengembalikan jumlahnya dalam satu integer 8 byte. Perilaku ini menempatkan state timer dalam model readiness yang sama dengan socket, pipe, dan descriptor lain. Event loop yang terlambat juga memperoleh informasi eksplisit tentang periode yang terlewat, alih-alih beberapa ekspirasi dilebur menjadi satu notifikasi. State ekspirasi menjadi data descriptor yang dapat dibaca timerfd_create() membuat objek timer dan mengembalikan file descriptor yang merujuk kepadanya. Clock yang dipilih menentukan basis waktu timer. Pilihan umum mencakup CLOCK_MONOTONIC, CLOCK_REALTIME, dan CLOCK_BOOTTIME.

Linux 18 Sep 2026 5 min read

Ruleset Landlock Menambahkan Kontrol Akses Lokal pada Proses

Sebuah proses Linux dapat secara sukarela mengurangi akses yang sebenarnya masih diizinkan oleh UID, capability, mount namespace, dan lapisan keamanan lain. Landlock menerapkan mekanisme ini sebagai Linux Security Module yang dapat ditumpuk: proses membuat ruleset, menambahkan objek yang diizinkan, lalu menempatkan dirinya ke dalam domain Landlock. Policy yang dihasilkan merupakan pembatasan tambahan. Landlock tidak memberikan akses yang sudah ditolak oleh DAC, ACL, SELinux, AppArmor, permission mount, atau kontrol aktif lainnya. Setelah diterapkan, lapisan Landlock tidak dapat dilepas dari thread tersebut; domain Landlock berikutnya hanya dapat menambah pembatasan.

Linux 18 Sep 2026 4 min read

process_madvise Menerapkan Saran Reklamasi Memori Lintas Proses

process_madvise() memungkinkan satu proses Linux meminta tindakan manajemen memori untuk rentang virtual address milik proses lain. Target diidentifikasi melalui pidfd, sedangkan array iovec menentukan rentang pada target. Mekanisme ini memisahkan keputusan kebijakan memori dari proses yang mapping-nya menerima saran. Interface ini relevan bagi controller yang sudah memiliki informasi eksternal mengenai status workload. Runtime manager dapat menandai memori yang tidak aktif sebagai cold atau meminta reklamasi page tanpa menyisipkan kode ke proses yang dikelola. Kemampuan tersebut dibatasi oleh pemeriksaan permission, jenis advice yang didukung, dan semantik progres parsial.