Langsung ke konten

Arsip

Linux

180 artikel
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.

Keamanan Siber 19 Sep 2026 6 min read

Appraisal IMA Mengikat Akses File ke Metadata Integritas

Sebuah file dapat memiliki permission read atau execute biasa tetapi tetap gagal pada pemeriksaan integritas di batas kernel. Appraisal Integrity Measurement Architecture (IMA) Linux dapat menerapkan rule policy pada hook terpilih dan mewajibkan isi file sesuai dengan metadata integritas sebelum operasi yang tercakup dilanjutkan. Kondisi ini menambahkan syarat integritas konten pada keputusan akses tanpa mengubah Unix mode bit atau otorisasi aplikasi menjadi mekanisme integritas. IMA memiliki beberapa fungsi yang saling terkait tetapi berbeda. Measurement mencatat state file dalam integrity measurement list dan dapat memperluas measurement ke TPM. Appraisal mengevaluasi file terhadap metadata integritas dan dapat menolak akses ketika policy serta mode enforcement mensyaratkan hasil yang valid. Audit mencatat state yang relevan bagi keamanan. Deployment yang hanya mengukur file memperoleh bukti mengenai state yang teramati; kondisi tersebut tidak otomatis memberikan perilaku blocking yang terkait dengan appraisal.

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.

Rekayasa Perangkat Lunak 18 Sep 2026 3 min read

timerfd Mengubah Hitungan Ekspirasi Timer Menjadi State Descriptor yang Dapat Dipoll

Sebuah timerfd Linux menjadi readable ketika timer yang dikonfigurasi mengalami ekspirasi. Byte yang dikembalikan oleh read(2) bukan timestamp atau event record: nilainya mengodekan satu integer unsigned 64-bit yang berisi jumlah ekspirasi sejak successful read sebelumnya. State timer dengan demikian masuk ke mekanisme readiness yang sama dengan socket dan pipe, sementara semantik khusus timer tetap berada di balik batas descriptor. Readiness merepresentasikan hitungan ekspirasi tertunda timerfd_create(2) membuat descriptor yang terkait dengan sebuah clock, sedangkan timerfd_settime(2) mengaktifkan atau menonaktifkan timer. Setelah setidaknya satu ekspirasi tertunda, poll(2), select(2), dan epoll(7) dapat melaporkan descriptor sebagai readable.

Rekayasa Perangkat Lunak 18 Sep 2026 4 min read

timerfd Mengubah Ekspirasi Timer Menjadi Readiness Descriptor

Sebuah timerfd menjadi readable setelah timernya mengalami ekspirasi. Notifikasi ini bukan pemanggilan signal handler dan bukan pesan byte stream. Linux mencatat ekspirasi yang pending pada objek timer lalu mengekspos status tersebut melalui file descriptor, sehingga timer dapat berada pada batas readiness yang sama dengan socket, pipe, dan descriptor lain. Interface ini lebih dari sekadar penggantian mekanisme notifikasi. Pilihan clock menetapkan domain waktu, flag arming menetapkan apakah deadline bersifat relatif atau absolut, dan setiap read yang berhasil melaporkan jumlah ekspirasi yang terakumulasi sejak read sukses sebelumnya atau konfigurasi ulang timer.

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.

Rekayasa Perangkat Lunak 18 Sep 2026 5 min read

SO_REUSEPORT Memindahkan Distribusi Listener ke Seleksi Socket

SO_REUSEPORT memungkinkan beberapa socket Linux AF_INET atau AF_INET6 melakukan bind pada alamat dan port lokal yang sama selama setiap anggota memenuhi aturan reuse-port. Pada listener TCP, distribusi koneksi masuk berpindah ke tahap sebelum accept(): kernel memilih satu listener dari grup reuse-port, lalu listener tersebut menerima koneksi pada accept queue miliknya. Pada UDP, seleksi menentukan socket yang menerima datagram masuk. Batas concurrency ini berbeda dari beberapa thread yang berbagi satu listening file description. Setiap anggota reuse-port adalah socket terpisah dengan descriptor, queue, status polling, dan lifecycle sendiri.

Rekayasa Perangkat Lunak 18 Sep 2026 3 min read

signalfd Menyalurkan Signal Tertunda melalui I/O Descriptor

Sebuah signalfd Linux menjadi readable ketika signal yang dipilih oleh mask-nya berada dalam state pending untuk konteks yang membaca. read(2) yang berhasil mengonsumsi state signal tertunda dan mengembalikan satu atau beberapa record signalfd_siginfo berukuran tetap. Penanganan signal dengan demikian dapat masuk ke event loop berbasis descriptor tanpa menjadikan handler asinkron sebagai mekanisme dispatch utama. Mask descriptor tidak memblokir signal Mask yang diberikan ke signalfd(2) memilih signal yang dapat diterima descriptor. Mask tersebut tidak mengubah signal mask milik thread pemanggil. Penggunaan normal memblokir signal itu secara terpisah dengan sigprocmask(2) atau pthread_sigmask(3) agar disposition biasa tidak berjalan sebelum signal dikonsumsi melalui descriptor.

Rekayasa Perangkat Lunak 18 Sep 2026 5 min read

seccomp User Notification Mendelegasikan Syscall Terpilih ke Supervisor

seccomp User Notification Mendelegasikan Syscall Terpilih ke Supervisor Filter seccomp dapat menghentikan system call terpilih sebelum kernel mengeksekusinya, lalu mengirim notifikasi ke supervisor di user space. Thread target tetap terblokir saat supervisor menerima event dan mengirim disposisi. Perilaku ini mengubah hasil filter menjadi handoff terkontrol pada batas kernel dan user space. Mekanismenya adalah SECCOMP_RET_USER_NOTIF. Berbeda dari action seccomp biasa, filter BPF tidak menyelesaikan keputusan sendirian. Sebuah listener file descriptor menjadi titik koordinasi untuk menerima notifikasi, mengirim respons, dan secara opsional menginjeksi file descriptor.

Rekayasa Perangkat Lunak 18 Sep 2026 4 min read

Seal pada memfd Mengubah State File Bersama Menjadi Pembatasan Monotonik

File hasil memfd_create() dapat bermula sebagai state bersama yang writable lalu berubah menjadi semakin terbatas. File seal membuat transisi itu monotonik: seal yang berhasil dipasang menjadi properti inode, berlaku pada setiap descriptor yang merujuk inode tersebut, dan tidak dapat dihapus. Sifat ini berguna ketika satu proses menyiapkan byte lalu mengirim descriptor ke proses lain. Penerima dapat memeriksa pembatasan yang ditegakkan kernel, bukan hanya bergantung pada janji protokol bahwa produsen sudah berhenti mengubah objek.

Rekayasa Perangkat Lunak 18 Sep 2026 4 min read

Seal pada Linux memfd Mengubah File Memori Mutable menjadi Transisi State yang Dipaksakan Kernel

File yang dibuat dengan memfd_create() dapat bermula sebagai penyimpanan mutable lalu memperoleh pembatasan yang dipaksakan kernel dan berlaku pada file dasarnya, bukan hanya pada satu descriptor. Dengan MFD_ALLOW_SEALING, proses dapat menambahkan seal melalui fcntl(F_ADD_SEALS) sehingga mutasi tertentu tidak lagi tersedia bagi semua pemegang file tersebut. Mekanisme ini membentuk transisi state yang tidak dapat dinyatakan oleh permission descriptor biasa. Produsen dapat mengisi byte, menetapkan ukuran file, lalu memublikasikan descriptor dengan pembatasan yang tetap melekat meskipun descriptor melintasi batas proses.

Rekayasa Perangkat Lunak 18 Sep 2026 6 min read

Seal pada Linux memfd Mengubah File Anonim Mutable Menjadi Capability Terbatas

File descriptor yang dikembalikan memfd_create() dapat bermula sebagai file anonim yang writable dan dapat diubah ukurannya, lalu beralih menjadi objek dengan operasi mutasi yang telah dikurangi secara permanen. Linux menerapkan transisi tersebut melalui file seal. Mekanisme ini melekat pada file yang mendasarinya, bukan pada satu descriptor, sehingga pengiriman descriptor duplikat melintasi batas proses tidak membentuk state sealing yang terpisah. Properti ini membuat sealing lebih dari sekadar fasilitas untuk penyimpanan sementara. Sealing mengubah otoritas yang dibawa setiap descriptor yang merujuk ke objek memfd yang sama. Transisinya monoton: seal dapat ditambahkan, tetapi tidak dapat dihapus.

Keamanan Siber 18 Sep 2026 6 min read

Seal File memfd Mengubah Memori Bersama Menjadi Batas Mutasi yang Dipaksakan Kernel

Sebuah broker dapat mengalokasikan objek berbasis memori, mengisi isinya, lalu mengirim file descriptor objek itu ke proses lain melalui UNIX domain socket. Penerima dapat memperlakukan byte tersebut sebagai konfigurasi immutable, kode terkompilasi, atau artefak terserialisasi. Asumsi itu tidak aman jika pengirim atau pemegang lain masih dapat mengubah inode yang sama setelah validasi. Linux memfd_create() dan file seal menyediakan cara yang dipaksakan kernel untuk mempersempit permukaan mutasi tersebut tanpa memberi objek sebuah pathname filesystem persisten.

Rekayasa Perangkat Lunak 18 Sep 2026 5 min read

SCM_RIGHTS Mentransfer Open File Description Melintasi Batas Proses

SCM_RIGHTS memungkinkan satu proses mengirim referensi ke file yang sudah terbuka melalui Unix domain socket. Penerima memperoleh file descriptor di tabel descriptornya sendiri, tetapi transfer tersebut tidak membuka ulang pathname atau menyalin objek kernel. Pada Linux, referensi yang dihasilkan memiliki semantik setara dengan menduplikasi descriptor milik pengirim ke proses penerima. Perbedaan ini penting ketika batas proses juga menjadi batas otoritas. Supervisor dapat membuka socket, file, pipe, device, atau objek lain berbasis descriptor lalu memberikan referensi yang sudah terbentuk kepada worker. Worker menerima akses ke objek yang telah terbuka, termasuk state open-file yang dapat tetap dipakai bersama dengan pengirim.

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.

Linux 18 Sep 2026 5 min read

pidfd_getfd Menduplikasi File Descriptor Proses Lain ke Proses Pemanggil

Nomor file descriptor hanya memiliki arti di dalam tabel descriptor suatu proses, tetapi objek kernel di balik nomor tersebut dapat dipakai bersama oleh beberapa proses. Linux pidfd_getfd() menjembatani dua ruang itu: syscall ini menerima PID file descriptor beserta nomor descriptor dari proses yang dirujuk, lalu memasang descriptor duplikat pada proses pemanggil. Descriptor baru tersebut merujuk ke open file description yang sama dengan descriptor target. Properti terakhir itu merupakan batas utama. pidfd_getfd() tidak membuka ulang pathname, menyalin byte, atau membuat posisi file yang independen. Operasi ini menduplikasi referensi kernel yang sudah ada sehingga semantik state bersama dapat memengaruhi kedua proses.

Rekayasa Perangkat Lunak 18 Sep 2026 4 min read

pidfd Mengikat Operasi Proses ke Referensi Kernel yang Stabil

PID numerik menamai sebuah proses hanya selama PID tersebut masih dialokasikan kepadanya. Setelah proses berhenti dan di-reap, Linux dapat memakai kembali nomor itu untuk proses lain. PID file descriptor, atau pidfd, menyimpan referensi kernel ke task tertentu, sehingga operasi berikutnya dapat menargetkan task tersebut tanpa melakukan resolusi ulang terhadap PID numeriknya. Perbedaan ini menghilangkan satu kelas race time-of-check/time-of-use dari pengelolaan proses. pidfd tidak membuat proses tetap hidup, tidak memberi izin tambahan, dan tidak mengubah seluruh operasi proses menjadi API descriptor yang portabel.

Keamanan Siber 18 Sep 2026 5 min read

pidfd Mengikat Operasi Proses ke Referensi Kernel yang Stabil

Sebuah supervisor mencatat PID 4127, mengerjakan aktivitas lain, lalu mengirim sinyal ke 4127. Di antara kedua langkah itu, proses awal dapat berhenti dan kernel pada akhirnya dapat memberikan PID numerik yang sama kepada proses lain. Angka tersebut tetap menunjuk suatu proses, tetapi belum tentu proses yang semula hendak dipengaruhi supervisor. PID file descriptor Linux, yang umum disebut pidfd, memindahkan batas tersebut dari pencarian ulang angka menjadi file descriptor yang merujuk task tertentu. Perubahan ini sempit tetapi relevan bagi keamanan: operasi yang menerima pidfd dapat tetap terikat pada task yang dipilih saat referensi diperoleh, alih-alih kembali mencari angka yang dapat digunakan ulang.

Rekayasa Perangkat Lunak 18 Sep 2026 5 min read

openat2 Membatasi Resolusi Path di Dalam Batas Direktori

Pathname bukan referensi objek yang stabil. Di antara direktori awal dan komponen akhir, resolusi path Linux dapat mengikuti symbolic link, melewati mount point, memproses .., atau menjumpai link khusus dari pseudo-filesystem. openat2() memungkinkan caller memasang batas pada operasi resolusi tersebut sehingga kernel dapat menolak lookup yang keluar dari boundary yang ditetapkan. Perbedaannya lebih kuat daripada memeriksa string yang sudah dinormalisasi sebelum open(). Validasi string memeriksa sintaks. openat2() dapat membatasi traversal aktual oleh kernel ketika objek filesystem dan topologi mount ikut menentukan hasil lookup.

Linux 18 Sep 2026 5 min read

Notifikasi User Seccomp Mendelegasikan System Call Terpilih ke Supervisor

Filter seccomp dapat menghentikan system call terpilih sebelum dieksekusi lalu mengubahnya menjadi request pada listener file descriptor. Thread pemanggil tetap terblokir saat supervisor userspace memeriksa notifikasi dan mengembalikan hasil. Mekanisme ini membentuk batas mediasi yang lebih sempit daripada tracing setiap system call dan lebih dinamis daripada menanam seluruh keputusan langsung di classic BPF. Mekanismenya adalah SECCOMP_RET_USER_NOTIF. Filter mengembalikan action tersebut untuk operasi yang memerlukan mediasi eksternal. Filter yang dipasang dengan SECCOMP_FILTER_FLAG_NEW_LISTENER menghasilkan listener file descriptor, lalu supervisor memakai ioctl notifikasi seccomp pada descriptor tersebut.

Linux 18 Sep 2026 5 min read

mseal Mengunci Tata Letak dan Permission Mapping Memori

Sebuah proses dapat membentuk mapping memori dengan alamat, ukuran, dan protection bit tertentu, lalu mengubah mapping itu melalui operasi seperti munmap(), mprotect(), atau mremap(). Linux mseal() menambahkan transisi state satu arah: virtual memory area terpilih dapat disegel sehingga sejumlah perubahan mapping berikutnya ditolak oleh kernel. Mekanisme ini melindungi struktur mapping, bukan byte yang tersimpan di dalamnya. Mapping writable yang disegel tetap dapat ditulis melalui store biasa. Sealing membatasi operasi yang dapat menghapus mapping, memindahkannya, menggantinya, atau mengubah atribut yang tercakup oleh aturan sealing.

Linux 18 Sep 2026 6 min read

membarrier Memindahkan Biaya Pengurutan Memori ke Jalur Koordinasi yang Jarang

Full hardware memory barrier pada jalur yang sangat sering dieksekusi dapat membebankan biaya pada setiap operasi, meskipun koordinasi lintas thread hanya terjadi sesekali. Linux membarrier() menyediakan penempatan biaya yang berbeda: jalur koordinasi yang jarang dapat meminta event pengurutan pada sekumpulan thread tertentu, sementara jalur yang sering dapat cukup memakai pengurutan pada level compiler dalam desain yang sesuai. Mekanisme ini bukan pengganti umum untuk atomic, lock, atau memory model suatu bahasa pemrograman. membarrier() adalah primitive sinkronisasi khusus Linux untuk desain yang correctness-nya sudah memiliki pasangan yang presisi antara jalur yang sering dan jalur koordinasi yang jarang.

Rekayasa Perangkat Lunak 18 Sep 2026 7 min read

MAP_SHARED mmap Menghubungkan Write Memori dengan State Page Berbasis File

Mapping MAP_SHARED yang writable memungkinkan proses mengubah state berbasis file dengan memory store biasa. Byte diakses melalui virtual memory, bukan dikirim lewat write(), tetapi mapping tersebut tetap berpartisipasi dalam state filesystem: perubahan dapat terlihat melalui shared mapping lain dan file I/O, lalu dirty page dapat ditulis kembali ke storage. Antarmuka ini menyatukan beberapa mekanisme ke dalam satu rentang alamat. CPU store, page fault, residensi page cache, writeback filesystem, dan persistensi storage dapat terlibat dalam siklus hidup byte yang sama. Menyamakan store yang berhasil dengan output file yang sudah durable menghapus batas yang tetap dipisahkan oleh sistem operasi.