Slackers Mengharapkan Kehadiran Kernel 3.2

 Widya Walesa  |  2011/11/23 17:50:47 WIB  |  2016/07/29 01:42:26 WIB

slackware_logo.pngMenarik untuk dicermati. Slackers yang ikut serta dalam poll saya mulai dua minggu yang lalu kebanyakan memilih kernel 3.2 sebagai kernel standar di Slackware yang akan datang. Seri kernel 2.6 dan 3.0 hanya didukung oleh masing-masing dua pemilih, sedangkan seri kernl 3.1 hanya didukung oleh 3 pemilih. 13 pemilih lainnya mengharapkan kehadiran kernel 3.2.

Apakah ini berarti massa slackers sudah benar-benar mencoba menjadi bagian dari komunitas teknologi masa depan? Mengganti kebiasaan Slackware yang selalu berjalan pelan tapi pasti dengan sesuatu yang sangat progresif bisa jadi melanggar sesuatu yang ditabukan di Slackware. Saya sendiri berharap dengan tindakan progresif tersebut maka dukungan Slackware terhadap perangkat dan teknologi yang lebih maju dapat diperoleh pengguna Slackware. Jadi label bahwa Slackware itu jadul bisa diubah sedikit demi sedikit.

Tetapi apakah hal ini akan benar-benar terjadi? Hanya Tuhan dan Patrick Volkerding yang tahu.

Hasil Uji Kernel 2.6.38.8 dan 3.0.4 di HP Compaq 435

 Widya Walesa  |  2011/09/11 21:20:40 WIB  |  2016/03/18 23:26:39 WIB

slackware_logo Setelah masa libur Idul Fitri 1432H berlalu, meminjam istilah si Tukul, kembali ke Linux. Selama dua minggu berselang saya mencoba mengoptimasi kernel Linux 2.6.38.8 dan 3.0.4 di mainan baru HP Compaq 435 dengan spesifikasi sebagai berikut:

00:00.0 Host bridge: Advanced Micro Devices [AMD] Pavilion DM1Z-3000 Host bridge
00:01.0 VGA compatible controller: ATI Technologies Inc Device 9802
00:01.1 Audio device: ATI Technologies Inc Device 1314
00:11.0 SATA controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
00:12.0 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:12.2 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 42)
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA) (rev 40)
00:14.3 ISA bridge: ATI Technologies Inc SB7x0/SB8x0/SB9x0 LPC host controller (rev 40)
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge (rev 40)
00:14.5 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:15.0 PCI bridge: ATI Technologies Inc Device 43a0
00:15.1 PCI bridge: ATI Technologies Inc Device 43a1
00:15.3 PCI bridge: ATI Technologies Inc Device 43a3
00:16.0 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:16.2 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 0 (rev 43)
00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 1
00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 2
00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 3
00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 4
00:18.5 Host bridge: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 6
00:18.6 Host bridge: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 5
00:18.7 Host bridge: Advanced Micro Devices [AMD] Family 12h/14h Processor Function 7
02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device 5209 (rev 01)
02:00.1 SD Host controller: Realtek Semiconductor Co., Ltd. Device 5209 (rev 01)
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 05)
07:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
Bus 002 Device 002: ID 04f2:b249 Chicony Electronics Co., Ltd 
Bus 004 Device 005: ID 0cf3:3005 Atheros Communications, Inc. 

Notebook ini menggunakan kartu audio HDA ATI SB dengan chipset Realtek ALC270 yang memiliki jalur audio-video HDMI dan audio TRS. Agar dapat digunakan oleh desktop (KDE) secara biasa (mode TRS) saya harus menambahkan opsi seperti ini ke snd-hda-intel, bisa dimasukkan ke /etc/modprobe/sound.conf agar dimuat saat boot:

options snd-hda-intel index=1

Karena antarmuka HDMI dikenali pertama dan antarmuka audio analog ATI SB dikenali sebagai antarmuka kedua. Jadi untuk membalikkan keadaan agar desktop KDE hanya menggunakan ATI SB, kita memaksa kernel untuk mengaktifkan antarmuka kedua sebagai antarmuka pertama (index=1). Bunyilah notebook saya.

Oke lanjut ke kernelnya. Pada dasarnya konfigurasi kernel yang saya lakukan untuk kedua versi tersebut adalah sama, yaitu menggunakan basis config-generic-smp-2.6.38.7-smp (slackware-current).

# cd /usr/src/linux-2.6.38.8
# cat ${PATH}/config-generic-smp-2.6.38.7-smp > .config
# make oldconfig
# make bzImage
# make modules
# make modules_install
# cp arch/x86/boot/bzImage /boot/vmlinuz-generic-smp-2.6.38.8-smp
# depmod -a 2.6.38.8-smp
# cd /boot
# mkinitrd -c -k 2.6.38.8-smp -m ext4 -f ext4 -r /dev/sda1 -o initrd-2.6.38.8-smp -L
(saya tambah 'opsi -L' soalnya saya menggunakan LVM2 untuk partisi selain / (ROOT))
edit lilo dan
# lilo -v

Hampir tidak ada perubahan kecuali beberapa driver yang tidak saya butuhkan untuk menjalankan komputer-komputer yang saya gunakan (mis. driver SATA, tipe partisi) saya keluarkan dari vmlinuz untuk mengurangi ukurannya. Tetapi karena ukuran driver ext4 cukup besar (sekitar 400kB), maka saya tetap menggunakan initrd untuk memuat driver ext4 saat boot. Perbedaan antara kernel 2.6 dan 3.x adalah pada driver RTC (Real Time Clock). Di kernel 3.x driver RTC harus dimuat oleh kernel sesegera mungkin karena akan digunakan untuk mengkalibrasi clock CPU, utamanya yang menggunakan multi CPU (SMP). Jadi sebenarnya pilihannya ya kalau menggunakan SMP, driver RTC harus masuk ke vmlinuz itu saja.

Tetapi sekali lagi HP ACPI berulah dengan kernel 3.0.4. Jadi begini, kode AML (ACPI Machine Language) yang digunakan di notebook ternyata membutuhkan dua buffer untuk mengaktifkan beberapa fitur pengontrol perangkat nirkabel yang ada. Nah, kernel hanya menyediakan satu buffer saja setelah kode AML dimuat ke kernel sehingga inisiasi buffer kedua oleh AML dianggap ilegal oleh kernel dan proses pemuatan kode ACPI untuk pengontrol perangkat nirkabel akhirnya tidak jadi dimuat oleh kernel dan ujung2nya fitur kontrol perangkat nirkabel menjadi tidak dapat digunakan di kernel 3.0.4 meskipun perangkat2nya jelas2 terlihat oleh kernel dan program2 user (mis. rfkill).

Sampai saat ini masih belum ada titik terang untuk mengatasi hal ini. Dan karena kasus ini juga terjadi di FreeBSD 8.x maka banyak pengembang2 opensource yang menyatakan bahwa kode inisiasi pemuatan AML di kernel sudah benar, yang keliru adalah kode AML itu sendiri. Salah sendiri kenapa memutuskan menggunakan dua buffer berbeda untuk memuat kode ACPI-nya. Notebook HP Compaq saya yang lain (berbasis Intel) juga tidak mengalami gangguan yang sama dan fitur nirkabel dapat berjalan normal. Jadi saya yakin bahwa yang keliru adalah kode AML dari BIOS yang digunakan. Tidak ada yang bisa saya lakukan. Masa saya harus ganti laptop lagi? Belum ada 3 bulan pakai laptop ini...

Atas dasar itu, maka saya memutuskan untuk menghentikan sementara penggunaan kernel 3.0.4 dan menggunakan kernel 2.6.38.8 di keseharian saya. Toh konfigurasi generic dari kernel 2.6.38.7-smp milik Slackware sudah dapat mengaktifkan semua fitur notebook ini. Perihal saya menggunakan compat-wireless adalah karena saya ingin menggunakan driver perangkat nirkabel (wifi dan bluetooth) secara lebih optimal karena patch perbaikan dan optimasi akan masuk ke compat-wireless terlebih dahulu sebelum digabung ke kode kernel oleh Linus di waktu yang akan datang.

Sementara ini dulu, jikalau berkenan dengan isi tulisan saya, silakan dicoba sendiri :D.

QEMU Tanpa Monitor (Headless)

 Widya Walesa  |  2011/03/31 06:29:16 WIB  |  2020/08/13 22:28:35 WIB

QemuDalam tulisan saya sebelumnya mengenai QEMU, saya telah menuliskan bagaimana menjalankan #QEMU tanpa menggunakan output monitor untuk mesin virtual kita. Jika sebelumnya saya menulis tentang fitur #VNC di QEMU, maka saat ini saya akan membahas bagaimana menjalankan QEMU tanpa monitor dan tanpa VNC. Untuk tujuan itu saya menggunakan fasilitas konsol serial yang sudah ada pada hampir semua sistem operasi termasuk linux (Slackware). Dalam tulisan ini saya tidak akan membahas pengarahan ke konsol serial untuk sistem operasi dari keluarga MS Windows atau BSD. Saya akan menggunakan sistem operasi kesayangan saya, #Slackware Linux. Apa keuntungan dari konsol serial? Kan sudah ada jaringan internet, jadi bisa menggunakan #SSH atau VNC? 

Konsol serial adalah 'barang lama' yang masih ampuh hingga sekarang. Prinsipnya sederhana saja yaitu mengarahkan semua input/output dari konsol biasa (Video Monitor, Keyboard, Mouse) ke sebuah perangkat serial sehingga dapat diakses menggunakan perangkat terminal eksternal baik berupa perangkat keras ataupun perangkat lunak. Kenapa harus menggunakan konsol serial? Apakah koneksi internet masih tidak memadai? Baik, ini adalah sebuah pertanyaan klasik. Tapi begini, mari kita bayangkan bahwa mesin kita adalah sebuah mesin kontrol yang tidak terhubung ke internet dan karena keterbatasan sumber daya energi, maka semua input/output standar tidak kita tancapkan pada mesin kita. Atau misalkan mesin kita tersebut karena suatu alasan keamanan tertentu tidak boleh berhubungan dengan internet dan tetapi harus dapat dikontrol secara berkala secara remote alias kita tidak boleh mendekat pada mesin tersebut. Tentunya masih ada perangkat-perangkat penyambung yaitu berupa kabel input/output yang sering ditancapkan pada terminal serial pada mesin tersebut. Atau dalam kasus saya saat menggunakan QEMU, saya tidak ingin QEMU membuka sebuah terminal lagi di desktop dan saya ingin agar setelah saya mengeksekusi QEMU, sistem operasi yang saya jalankan langsung tampak pada layar terminal yang sedang saya gunakan. Hemat jendela dan pastinya sumber daya . Jika alasan-alasan tersebut masih belum mencukupi, biarkan saya merenung beberapa hari/minggu untuk mengarang alasan yang lain .

Lanjut ke QEMU dulu. Nah agar QEMU tidak memunculkan terminal baru, kita dapat memaksa QEMU untuk berjalan tanpa kepala atau #headless (tanpa monitor) dengan menambahkan opsi -nographic. Secara default QEMU akan membuka port serial pertama atau di ttyS0 yang dapat kita manfaatkan dengan mengkonfigurasi OS Guest QEMU (Host OS tidak perlu diutak atik):

Pertama, konfigurasi LILO agar mengarahkan input/output boot loader ke konsol serial:

boot = /dev/sda
lba32
# Buat LILO membuka kanal konsol serial
serial = 0,57600n8

Kedua, konfigurasi kernel yang akan di-boot agar mengarahkan input/output-nya ke konsol serial:

image = /boot/vmlinuz
initrd = /boot/initrd
# Buat supaya kernel membuka kanal konsol serial
append=" console=tty0 console=ttyS0,57600n8"

ketiga, konfigurasi inittab agar membuka kanal konsol serial setelah sistem operasi selesai boot dan masuk ke init:

# Local serial lines:
s1:12345:respawn:/sbin/agetty -L ttyS0 57600 vt100

Setelah itu tinggal boot Guest OS-nya di QEMU dengan menambahkan opsi -nographic dan wallaaaaaaaaaaaa:

LILO Boot on QEMU Serial Console

Slackware kernel boot progress on QEMU serial console.

Slackware console login screen on QEMU serial console.

Slackware shutdown progress on QEMU serial console.

Meskipun berjalan dalam kondisi tanpa monitor, QEMU Monitor sendiri masih dapat diakses dengan menggunakan kombinasi tombol CTRL+a+c. QEMU Monitor akan menggunakan terminal yang sama dengan Guest OS jadi terkadang sedikit membingungkan jika tidak terbiasa.

Untuk informasi yang lebih lengkap mengenai konsol serial di linux silakan lihat di sini:

http://tldp.org/HOWTO/Remote-Serial-Console-HOWTO/index.html

Selamat mencoba.

Belajar Virtualisasi Mesin Dengan QEMU

 Widya Walesa  |  2011/03/24 02:03:29 WIB  |  2020/08/13 22:19:20 WIB

slackware-logo QEMU adalah sebuah emulator mesin virtual lintas platform yang canggih. Saya mengatakan hal ini karena jika anda telah menginstal #QEMU di sistem anda, Anda tidak akan menemukan apa-apa selain antarmuka perintah baris sederhana yang dapat dijalankan secara lokal maupun remote. Dengan kata lain, Anda dapat membangun sendiri antarmuka grafis anda untuk menjalankan QEMU. Anda dapat menggunakan shell script, yang berbasis GTK kompleks atau antarmuka Qt, atau jika Anda suka, Anda dapat membangun sendiri antarmuka berbasis web menggunakan PHP, Python, Ruby atau Perl. Maksud saya hal ini benar-benar menjadi milik Anda.

Hal lain mengapa memilih QEMU adalah faktor dependensinya. Jika Anda pengguna Slackware, maka Anda tidak perlu apa-apa lagi untuk menginstal QEMU pada sistem anda. Cukup unduh tarball-nya, kompilasi, instal dan anda sudah siap. Hanya ingat satu hal dalam membangun QEMU, sebaiknya anda menjalankan #Slackware Anda dalam init 1 atau init 3 (text mode / mode non-grafis) karena kompilasi QEMU adalah sebuah proses yang sangat membutuhkan sumber daya. Dalam sistem saya ketika saya membangun QEMU di init 4 (mode grafis), proses pembangunan selalu berhenti setelah beberapa menit karena compiler kehabisan memori.

Sebelum Anda melanjutkan, saya sarankan Anda untuk mengaktifkan dukungan virtualisasi di CPU melalui BIOS. Kemudian jangan lupa untuk memuat modul KVM dan AIO di kernel:

# /sbin/modprobe kvm-intel (kvm-amd untuk CPU AMD)
# /sbin/modprobe aio

Setelah itu anda dapat membuat disk image untuk dijadikan harddisk bagi OS Tamu di QEMU anda. Punya saya seperti ini:

# /usr/bin/qemu-img -c -f qcow2 10G

Seperti yang saya utarakan sebelumnya, anda dapat menjalankan QEMU sesuka anda, karena antarmukanya perintah baris. Berikut ini yang saya lakukan jika saya akan menginstall OS Tamu ke harddisk virtual tersebut:

# /usr/bin/qemu-system-x86_64 -localtime -monitor stdio -enable-kvm -vnc :1 -cpu kvm64 -m 1G -vga std -net nic,model=e1000 -net user,hostfwd=tcp::4222-:22 -soundhw hda -usb -usbdevice host:VENDOR_ID:PRODUCT_ID -cdrom /PATH/TO/CD-DVD-BOOT.iso -boot d -drive file=/PATH/TO/DISK.img,index=0,media=disk,if=ide,cache=writeback,aio=threads

Perintah tersebut akan menjalankan QEMU untuk membuat sebuah mesin virtual dengan spesifikasi seperti ini:

  • #KVM: Enable
  • CPU: 64-bit Compatible
  • RAM :1G
  • Kartu VGA: QEMU VESA 2.0
  • Kartu Audio: Intel HDA
  • Kartu Jaringan: Intel Gigabit Ethernet e1000
  • Boot: CD Image

Setelah OS tamu terinstall, kita dapat mem-boot OS tamu tanpa memasukkan opsi -cdrom pada saat eksekusi qemu:

# /usr/bin/qemu-system-x86_64 -localtime -monitor stdio -enable-kvm -vnc :1 -cpu kvm64 -m 1G -vga std -net nic,model=e1000 -net user,hostfwd=tcp::4222-:22 -soundhw hda -usb -usbdevice host:VENDOR_ID:PRODUCT_ID -drive file=/PATH/TO/DISK.img,index=0,media=disk,if=ide,cache=writeback,aio=threads

Opsi -localtime sangat disarankan untuk mencegah ketidaksinkronan waktu sistem dengan OS tamu. Opsi -monitor stdio dan -vnc memiliki keterkaitan dalam hal fleksibilitas kontrol terhadap OS tamu dan QEMU. Opsi -vnc menyebabkan output apapun (grafis/teks) dari OS tamu masuk ke dalam sistem VNC yang dapat diakses melalui jaringan dengan menggunakan #VNC client, misalnya KRDC milik KDE. Nah untuk dapat mengontrol QEMU secara langsung, opsi -monitor stdio akan menyebabkan monitor QEMU tetap terbuka di terminal tempat kita menjalankan QEMU dan akan otomatis tertutup jika kita melakukan shutdown pada OS tamu.

Dengan adanya monitor QEMU tersebut, kita dapat melakukan penggantian/pelepasan/penambahan CD/DVD atau perangkat eksternal seperti flashdisk, atau kita ingin mematikan mesin virtual dari luar alias tidak login ke dalam OS tamu. Dalam monitor tersebut kita juga dapat melihat sumber daya mesin virtual kita. Output OS tamu di QEMU secara default akan dijalankan via SDL dalam mode grafis (jika kita berada dalam mode X) atau dengan curses/ncurses jika kita berada dalam mode teks. Dengan kombinasi keduanya, kita dapat 'menghilangkan' dua modus output tersebut (SDL/curses) sehingga beberapa mesin virtual dapat dijalankan sekaligus tanpa kita harus kehilangan desktop dan sistem input/output untuk sistem kita. Anda dapat menggunakan opsi -nographic untuk meniadakan output dalam bentuk apapun termasuk monitor QEMU tetapi anda tetap dapat melihat OS tamu anda dengan vnc jika opsi -vnc anda aktifkan. Anda dapat menambahkan opsi -daemonize untuk membuat QEMU berjalan di balik layar. Toh anda tidak membutuhkan sebuah monitor tetap terbuka karena tidak ada yang dapat dilihat secara langsung kecuali anda mengaktifkan tty serial anda. Lihat /etc/inittab untuk mengkonfigurasi perangkat serial yang dapat diaktifkan sebagai monitor QEMU.

Untuk kenyamanan proses remote, saya menggunakan fitur port forwarding yang disediakan oleh opsi -net user,hostfwd. Saya tidak menggunakan perangkat tun/tap karena mesin virtual saya tidak saya gunakan untuk melayani pengguna di internet alias tidak perlu ada koneksi dari luar yang masuk ke dalam mesin virtual saya. Jadi fitur standar tersebut sudah cukup buat saya untuk dapat melakukan proses remote SSH ke mesin virtual saya.

Sekian dulu tulisan tentang QEMU saat ini. Untuk opsi-opsi yang lebih lengkap silakan lihat manual QEMU.

Slackware 13.1 RC1

 Widya Walesa  |  2010/05/17 18:59:22 WIB  |  2016/03/18 09:31:01 WIB

Just have my repo sync'd on last night, and now I'm proud to tell you, I'm using

Slackware64 13.1 RC1