Thursday, 27 November 2014

[BSD] DragonFly BSD 4.0 chào Việt Nam

Một trong vài tin hot nhất trong giới công nghệ trong ngày hôm qua (25 Nov 2014) chính là việc DragonFly BSD release bản 4.0.

..WARNING:: Bài viết hướng tới super user / experienced user, có thể coi như 1 bài tut và làm theo từng bước.

DragonFly BSD (DFBSD) là gì?
"dragon fly" trong tiếng Việt là con chuồn chuồn.


Một hệ điều hành UNIX-like, tách ra và phát triển từ hệ điều hành FreeBSD bản 4.8 (BSD version 4.x được đánh giá là phiên bản hệ điều hành ổn định (stable) nhất của mọi thời đại)
Tác giả chính: Matthew Dillon, từng là một developer của FreeBSD, lý do tách ra do mâu thuẫn về quan điểm khi có một thay đổi lớn về kiến trúc ở bản FreeBSD 5 (đọc thêm ở trang chủđây)

Để làm gì?
Chơi cho vui :3
Với một hệ điều hành nhỏ, lượng developer không lớn, sẽ dễ dàng hơn cho các dân chơi hiểu sâu hơn về hệ điều hành, kernel ..., bởi với lực lượng không đông đảo, người ta sẽ tập trung nguồn lực vào những thứ được xem là quan trọng nhất. Xem thêm về system design ở đây.

Bài viết này sẽ thử nghiệm cài đặt một workstation chạy trên một máy ảo Virtualbox để dev python với vim, pip, tmux trên DragonFly BSD 4.0

1. Download và cài đặt
Link trang chủ: http://www.dragonflybsd.org/download/
Link download trực tiếp: http://mirror-master.dragonflybsd.org/iso-images/dfly-x86_64-4.0.1_REL.iso.bz2

Tải xong giải nén dùng lệnh:
bunzip2 filepath
Git repo (~ 800 MB) cho developer:
# git clone git://git.dragonflybsd.org/dragonfly.git dragonfly
Quá trình cài đặt rất hiển nhiên, không có gì phải nói nhiều nếu bạn đã từng cài Ubuntu server hay một OS nào đó tương tự.

Vài chú ý:
Từ Virtualbox, chọn OS Type là BSD, chọn FreeBSD 64bit (DFBSD tách ra (fork) từ FreeBSD 4.8 nên có thể xem nó như FreeBSD, và bản 4.0 đã bỏ hoàn toàn việc hỗ trợ kiến trúc 32bit i386), nên chọn > 10GB đĩa cứng, RAM 512 là thừa dùng.
Chọn setting cho máy ảo vừa tạo, mục network set là Bridged Adapter để có thể ssh vào một cách dễ dàng khi cài đặt xong.

Sau khi boot lên từ file ISO đã down, enter để chọn lựa chọn đầu tiên, đăng nhập với user ``root`` để nghịch trực tiếp hoặc user ``installer`` để thực hiện cài đặt (Không cần nhập password). Xem hướng dẫn chi tiết ở đây.

2. Cài đặt workspace để dev python2.7
2.1. Cài đặt các package
DFBSD sử dụng pkg để quản lý các binary package (tương tự apt hay yum trên các GNU/Linux OS).
pkg update
pkg install python27 py27-pip vim tmux
chọn ``y`` để xác nhận và đợi một lúc (hoặc có thể cài tmux trước để chạy lệnh cài đặt ở một cửa sổ riêng).

Sau khi cài đặt thành công:
# python
Python 2.7.8 (default, Nov 14 2014, 13:35:42)
[GCC 4.7.4 [DragonFly] Release/2014-06-12] on dragonfly4
Type "help", "copyright", "credits" or "license" for more information.
>>> print "Hello Vietnam"
Hello Vietnam

Nếu đã cài đặt thành công mà không gõ được lệnh, hãy thử tìm trong thư mục /usr/local/bin và chạy file chương trình bằng path đầy đủ. Ví dụ:
dùng /usr/local/bin/python thay vì chỉ gõ python.

Có thể dùng pip để cài các Python package cần thiết khác như virtualenv, ipython, ipdb, requests ...
# pip install virtualenv ipython ipdb requests
...
Successfully installed virtualenv ipython ipdb requests
Cleaning up...

Có một điều hơi thú vị là khi cài vim thì nó lại depends ruby 2.x, tcl86, nên cài xong vim thì cũng có cả ruby, tcl chơi luôn:
# irb
irb(main):001:0>

# tclsh8.6
% echo hello thon
hello thon

Xem thông tin về các pkg đã cài đặt:
# pkg info | tail # hoặc dùng less thay tail để xem đầy đủ thay vì 10 pkg cuối danh sách
tcl86-8.6.3                    Tool Command Language
tiff-4.0.3_4                   Tools and library routines for working with TIFF images
tmux-1.9.a_2                   Terminal Multiplexer
vim-7.4.430_2                  Improved version of the vi editor
xcb-util-0.3.9_3,1             Module with libxcb/libX11 extension/replacement libraries
xcb-util-renderutil-0.3.9      Convenience functions for the Render extension
xextproto-7.3.0                XExt extension headers
xineramaproto-1.2.1            Xinerama extension headers
xorg-fonts-truetype-7.7_1      X.Org TrueType fonts
xproto-7.0.26                  X11 protocol headers

Xem thêm các option khác ở ``man pkg``.

2.2 cấu hình SSH server
để có thể ssh vào và code :3
Do DFBSD setting mặc định cho SSH server  khá "bảo mật", nên phải chỉnh lại một chút cho tiện.

mở file
sửa 2 dòng tương ứng thành giá trị sau:
PermitRootLogin yes
PasswordAuthentication yes
rồi restart ssh server:
# /etc/rc.d/sshd restart
Stopping sshd.
Starting sshd.
Giờ gõ ifconfig để xem địa chỉ của máy ảo và ssh từ ngoài vào với user root / password đã set lúc cài đặt.

Quá trình thực hiện các điều nói trên rất trơn chu và không gặp bất cứ lỗi gì, nên nếu ai gặp phải vấn đề gì thì... cố mà tìm hiểu.

3. Cài trình duyệt để xem phim con ếch
Ở đây sẽ dùng w3m để làm text-base web brower.
# pkg install w3m
Avalon repository is up-to-date.
All repositories are up-to-date.
The following 2 packages will be affected (of 0 checked):

New packages to be INSTALLED:
        w3m: 0.5.3_4
        boehm-gc: 7.4.2_1

The process will require 2 MB more space.
902 KB to be downloaded.

Proceed with this action? [y/N]: y
Fetching w3m-0.5.3_4.txz: 100%  698 KB 102.1k/s    00:07    ^
Fetching boehm-gc-7.4.2_1.txz: 100%  204 KB  41.7k/s    00:05
Checking integrity... done (0 conflicting)
[1/2] Installing boehm-gc-7.4.2_1: 100%
[2/2] Installing w3m-0.5.3_4: 100%
# w3m dragonbsd.org
w3m: Command not found.
# /usr/local/bin/w3m dragonbsd.org
w3m: Can't load dragonbsd.org.
# /usr/local/bin/w3m dragonflybsd.org # (mở shell mới sẽ không cần gõ full path nữa)
4. Linh tinh
DFBSD sử dụng redmine để quản lý project 

Hết.

2 comments:

  1. Sau khi cài (trên laptop), việc quan trọng nhất là phải có mạng, và với thời đại hiện nay thì mạng dây là điều khó tưởng, phải cấu hình wifi bằng text luôn:

    Với wifi dùng WPA, sửa file: /etc/wpa_supplicant.conf

    network={
    ssid="myssid"
    psk="mypsk"
    }

    Sau đó thêm vào file /etc/rc.conf

    wlans_ath0="wlan0"
    ifconfig_wlan0="WPA SYNCDHCP"

    Thay ath0 bằng interface wireless card trên máy bạn (trên BSD thường là ath0).
    (theo hd ở https://www.freebsd.org/doc/en/books/handbook/network-wireless.html)


    Rồi reboot, nếu ngon lành sẽ có mạng. Giờ thì cài tmux và xorg
    Sau khi cài xong xorg, gõ startx để chạy "X"
    Màn hình thời cổ đại của X sẽ hiện lên với cái xterm xấu mù, giờ thì cài đủ thứ và bắt đầu dùng.

    Sau nỗ lực không ngừng và hy sinh mất mấy tiếng cuộc đời để dual boot DFBSD với Ubuntu bằng Grub2, mình đã thất bại và xin tạm biệt DFBSD từ đây :-h.

    Quá trình cấu hình grub khá phức tạp, dựa theo hướng dẫn ở: https://wiki.archlinux.org/index.php/GRUB#Automatically_generating_using_.2Fetc.2Fgrub.d.2F40_custom_and_grub-mkconfig , nhưng không lấy được UUID của FS bên DFBSD (ufs2 và hammer đều không được).

    Bao giờ có laptop không phải chạy Linux nữa mình sẽ thăm bạn lại sau. Bái bai T.T

    ReplyDelete
    Replies
    1. Update: sau lần thử cuối cùng thì dùng chain loading đã giúp dual boot ubuntu (15.04) và DFBSD:

      Nội dung file custom của grub.d sau khi sửa:

      $ cat /etc/grub.d/40_custom
      #!/bin/sh
      exec tail -n +3 $0
      # This file provides an easy way to add custom menu entries. Simply type the
      # menu entries you want to add after this comment. Be careful not to change
      # the 'exec tail' line above.
      menuentry 'DragonFly' {
      set root=(hd0,msdos1)
      chainloader +1
      }
      # https://help.ubuntu.com/community/Grub2%20Other%20Os

      Với (hd0,msdos1) tương đương với partition /dev/sda1 trên Linux.
      Hoặc có thể xem cụ thể bằng lệnh ls trong grub.

      (lúc máy bật lên và được chọn các OS, bấm phím ``c`` để vào chế độ prompt và gõ ls, bâm ESC để quay lại menu chọn OS.)

      Vậy là đã có thể vừa làm vừa chơi :x hú hú

      Chú ý rằng để dùng được chain loading, lúc cài DFBSD phải chọn cài bootloader.

      Delete