Thứ Năm, 3 tháng 1, 2013

Install Google Chrome in Ubuntu 12.04

Google Chrome không có sẵn trong Ubuntu Software Center mà chỉ có Chronium. Vì thế phải lên trang chủ của chrome để download file .deb về. Tuy vậy khi cài đặt gặp lỗi vướng vào version của gói libnss và có thể là gói libxss
Cách giải quyết :

sudo apt-get install libnss3-1d:i386
sudo apt-get install libxss1:i386
Done !!!

Chủ Nhật, 2 tháng 12, 2012

1 vai link hay, se fix sau

Link :
http://net.tutsplus.com/tutorials/the-best-way-to-learn-python/
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/
http://minhtd82.wordpress.com/top-10-bai-lab-qu%E1%BA%A3n-tr%E1%BB%8B-m%E1%BA%A1ng/

them 9/3
http://askubuntu.com/questions/100232/how-do-i-change-the-grub-boot-order

Thứ Tư, 19 tháng 9, 2012

Note Java (1)

Sau những phân vân nên học C/C++, Java hay Python thì cuối cùng mình quyết định lựa chọn Java. Quá trình cài netbean/eclipse thì chả có vấn đề gì cả, tuy nhiên mới học thì nên luyện = Notepad++ và complie = cmd là hay nhất.
Đầu tiên là vào Computer/Properties , chọn tab Advanced rồi click vào Enviroment Variables, sau đó set 1 số biến hệ thống như sau
classpath : %classpath%;.
Path : C:\Program Files\Java\jdk1.7.0\bin
JAVA_HOME : C:\Program Files\Java\jdk1.7.0\

Sau đó bắt đầu code thử 1 đoạn code kinh điển là "Hello World".
Sau đó vào cmd gõ lệnh javac để complie và gõ lệnh java FileName ( lưu ý là ko có đuôi class ).
Nếu gặp lỗi:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
Thì lỗi này nằm ở CLASSPATH, xem lại và fix
Nếu gặp lỗi này java.lang. Class UnsupportedClassVersionError thì check lại version của javac và java bằng 2 lệnh sau
javac -versíon
java -version
Nếu cùng là 1.7.0 thì ok, còn nếu lệch nhau thì phải cài lại bản jre7 ( mình cài bản jre6, dùng jdk1.7.0 nên nó ko thể chạy lệnh java FileName được). Phải mất 15ph hỏi anh google mới ngộ ra được

OK. Giờ thì bắt đầu cuộc chiến thôi nào \m/

P/s : nếu bạn muốn tìm tài liệu về java thì tốt nhất là dùng tutorial của chính Oracle, vừa đơn giản lại dễ hiểu

Thứ Hai, 3 tháng 9, 2012

GRUB recuse với Ubuntu LiveCD

Tình hình là muốn tăng dung lượng ổ C cho Windows lên bằng cách resize lại ổ D và merge cái ổ mới với ổ C. Mọi thứ thì chả có vấn đề gì nếu như ko cài dualboot với Ubuntu bản 11.04 ( hay bao nhiêu thì cũng có thể gặp vấn đề này ). Dùng Arconis làm khá nhanh việc resize ổ D, nhưng vấn đề đặt ra là khi reboot thì GRUB bị broken ( hỏng ) , con laptop tự động chạy vào giao diện
grub recuse>
nhưng mà chả gõ được cái lệnh nào trong cái này cả, nên vội vàng dùng unetbootin làm 1 cái USB cho bản ubuntu 12.04 ( bản cũ lồi tùm lum ra , ví dụ như random logout làm mất hết những thứ đang làm ... ). Lúc này thì có 2 giải pháp nghĩ ra :)) :
- GP1 : cài lại luôn ( đằng nào cũng nâng cấp ) và kết quả là mọi thứ OK vì GRUB lúc này đã được tạo lại .
- GP2 : search trên mạng cách config lại file grub.cfg ( nhớ mang máng là có lệnh chroot dùng trong trường hợp như thế này )

Và alê hấp chọn GP1 để làm, sau tầm 30ph thì có bản Ubuntu mới toanh, chạy khá mượt. Tuy vậy trong lúc cài đặt chọn giao diện TV nên khi vào gặp mấy cái thư mục rất chuối như kiểu Desktop --> Màn hình nền nên trong terminal đek dùng Tab được --> gỡ bỏ giao diện TV là okie :D, logout vào thì nó sẽ hiện thông báo là có muốn giữ tên thư mục kiểu cũ ko --> tất nhiên là ko rồi :D

Thứ 2 là sau khi resize thì phải merge, thì lúc này cái Arconis làm ăn rất chậm chạp, analyze ổ C mãi chả xong --> thay thế bằng bản EaseUS Partition Master 9.1.1 Home Edition thì rất nhanh chóng. Sau khi merge xong, reboot thì lại gặp cái vấn đề ở trên. Chọn GP2 để giải quyết cái vấn đề này ( chọn GP1 thì quá chuối + chả học hỏi được gì ). Sau 1 hồi hỏi anh Gúc-gồ thì cũng ra được cách chroot vào phân vùng root của ubuntu đã cài đăt. Sau đây là các bước làm :
- Tạo 1 USB/CD có bản Ubuntu giống với bản Ubuntu đã cài ( tốt nhất là như thế )

- Boot từ USB/CD , chọn Try Ubuntu without installing

- Ấn Ctrl + Alt + T để vào Terminal

- Xác định phân vùng nào có Ubuntu để mount, nếu ko biết thì có thể mount từ /dev/sda1 đến /dev/sdaX nào đó ( nếu ko phải thì umount ngay kẻo rắc rối về sau ), hoặc nếu biết được dung lượng của partition thì có thể check bằng lệnh sau
> sudo fdisk -l
> mount /dev/sdaX /mnt   ( lệnh unmount : umount /dev/sdaX hoặc umount /mnt )

- Tiếp theo là mount hệ thống file ảo sau :
> sudo mount --bind /dev /mnt/dev
> sudo mount --bind /proc /mnt/proc
> sudo mount --bind /sys /mnt/sys

- Để đảm bảo tiện ích ( câu lệnh ) về GRUB có thể hoạt động thì mount tiếp thư mục /usr
> sudo mount --bind /usr /mnt/usr

- Tiếp theo là chroot cho /mnt
> sudo chroot /mnt ( lúc này đã chuyển sang user root )

- Vì có thể ko có file /boot/grub/grub.cfg hoặc file này đã bị broken ( hoặc ko còn chính xác ) thì gõ lệnh sau
> update-grub2 ( có thẻ là update-grub cho các bản U cũ , nhưng bản 12.04 thì dùng Grub2)

- Sau đó là cài đặt lại grub
> grub-install /dev/sda ( chú ý ở đây là cho toàn bộ hard-disk nên ko có các số 0-9 ở sau sda, có thể là sdb hay sdc thì tùy vào trường hợp )

- Kiểm tra lại :
> grub-install --recheck /dev/sda

- Thoát khỏi chroot
> exit

- Tiến hành umount và reboot
> sudo umount /mnt/dev
> sudo umount /mnt/proc
> sudo umount /mnt/sys
> sudo umount /mnt/usr
> sudo umount /mnt/
> sudo reboot

Ok, mọi thứ đã trở lại bình thường , duy chỉ có 1 điều là giao diện boot trở thành màu đen, mất đi màu tím đặc trưng của U, nhưng vấn đề này ko quan trọng lắm, thích thì khôi phục lại dễ dàng.



Thứ Sáu, 31 tháng 8, 2012

Note Fedora (2)

Hôm nay ghost lại WinXP cho cái máy bàn chạy chậm như rùa. Cứ tưởng sẽ gặp nhiều vấn đề hay ho xảy ra  như là ko vào đc GRUB vì bị trình boot của Win ghi đè (vì PC đang dùng dualboot với cả Fedora ) nhưng ai dè chả có lỗi gì cả. Tuy nhiên gặp 2 vấn đề sau :
- Fedora vẫn vào bt, nhưng khi vào Win thì gặp thông báo: "Device not found .... Press any key to continue" và boot cảm giác hơi chậm
- Trong Windows vẫn có thể truy cập vào phân vùng cài Linux và có thể ghi đè lên đc và phân vùng đó trống không , báo free 99%

Cách giải quyết cho vấn đề 1, còn cái thứ 2 thì vào trong Disk Management rồi remove label của phân vùng đó đi để tránh người khác táy máy copy linh tinh thì vui :D. Sau đây là cách làm:
Gõ các lệnh sau ( nhớ su sang root trước ):
- grub2-set-default "Microsoft Windows XP Professional (on /dev/sda1)"
- grub2-mkconfig -o /boot/grub2/grub.cfg ( bước này là chính, còn cái bước trên chỉ là phụ, có thể làm hoặc ko (?) )

Thứ Năm, 2 tháng 8, 2012

Cấu hình Dynamic DNS trên CentOS 5.x

Đây là bài viết tiếp theo sau 2 bài DNS và DHCP trước. Vấn đề đặt ra ở đây là khi cấp phát các địa chỉ IP cho client xong thì làm thế nào để DNS cập nhập các bản ghi đó để tiện cho việc quản lý.
Ở bài này không phải cài lại từ đầu mà chỉ cần thay đổi 1 số nhỏ trong các file cấu hình của BIND và DHCP là xong.
1, Tạo key dành cho việc chứng thực giữa DHCP và BIND , tên của nó là rndckey :
- [root@srv2 ~]# rndc-confgen > /var/named/chroot/etc/rndc.key
2, Chỉnh sửa trong file rndc.key trong đường dẫn /var/named/chroot/etc/ : đặt dấu # tại các dòng in đậm, sao cho giống như file mẫu sau
# Start of rndc.conf
key "rndckey" {
     algorithm hmac-md5;
     secret "4zxdQwfZxHkp4puLMnkWCg==";
};
#options {
# default-key "rndckey";
# default-server 127.0.0.1;
# default-port 953;
#}
;
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndckey" {
# algorithm hmac-md5;
# secret "4zxdQwfZxHkp4puLMnkWCg==";
# };
#
# controls {
# inet 127.0.0.1 port 953
3, Chỉnh sửa file named.conf trong /var/named/chroot/etc/ : chú ý các dòng in đậm phải thêm vào

include "/etc/rndc.key";
options {
directory "/etc";
forwarders {208.67.222.222;};
};
zone "." {
type hint;
file "/etc/root.db";
};
zone "example.com" {
type master;
file "/var/named/example.com.db";
allow-update { key rndckey; };
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/var/named/1.168.192.db";
allow-update { key rndckey; };
};
4, Chỉnh sửa file dhcpd.conf trong /etc/ : lưu ý sửa cho đúng theo những đoạn đã in đậm

include "/etc/rndc.key";
authoritative;
server-identifier srv2.example.com;
ddns-domainname "example.com";
ddns-rev-domainname "in-addr.arpa";
ddns-updates on;
allow client-updates;

ddns-update-style interim;
DHCPARGS=eth1;
zone example.com. {
primary 192.168.1.2;
key rndckey;
}
zone 1.168.192.in-addr.arpa. {
primary 192.168.1.2;
     key rndckey;
}


subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.1.2;
option subnet-mask 255.255.255.0;
option domain-name "example.com";
option domain-name-servers 192.168.1.2;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.1.20 192.168.1.100;
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
host ns {
hardware ethernet 00:0C:29:FA:41:88;
fixed-address 192.168.1.50;
}
}
5, Trong thư mục /var/named/chroot/var/named , tạo sẵn 2 file có dạng sau và chmod cho chúng để có thể ghi vào các file :
- [root@srv2 named]# touch 1.168.192.db.jnl       ( bỏ )
- [root@srv2 named]# touch example.com.db.jnl     ( bỏ )
- [root@srv2 named]# chmod 776 example.com.db.jnl 1.168.192.db.jnl   ( bỏ )
- [root@srv2 named]# chmod 666 example.com.db 1.168.192.db
- [root@srv2 named]# chmod 770 /var/named/chroot/var/named/

6, Cấu hình selinux cho phép thực hiện update các bản ghi :
- [root@srv2 /]# setsebool -P named_write_master_zone=1

7, Khởi động lại các dịch vụ :
- [root@srv2 /]# /etc/init.d/named restart
- [root@srv2 /]# /etc/init.d/dhcpd restart

8, Test bằng cách để 1 client nhận địa chỉ IP động từ DHCP, sau đó nslookup chính địa chỉ IP mà máy đó nhận được , nếu có kết quả trả về tức là thành công. Lúc này trong đường dẫn /var/named/chroot/var/named/ sẽ tạo ra 2 file example.com.db.jnl1.168.192.db.jnl ( bắt đầu có client nhận IP từ DHCP thì lúc đó mới tạo ra 2 file trên )


P/S :
- Đã sửa dòng ddns-rev-domainname "1.168.192.in-addr.arpa"; trong file dhcpd.conf thành ddns-rev-domainname "in-addr.arpa"; vì nếu có 1.168.192 ở đầu thì nó sẽ cập nhập vào trong 1.168.192.db thành dòng có dạng
100.1.168.192    PTR   client.example.com.
 làm cho máy client không thể phân giải được địa chỉ. Nếu đúng thì phải là
100                     PTR   client.example.com.
- File 1.168.192.db sẽ trở thành có dạng như sau, file example.com.db cũng tương tự :
$ORIGIN .
$TTL 86400      ; 1 day
1.168.192.in-addr.arpa  IN SOA  example.com. root.example.com. (
                                2007121802 ; serial
                                14400      ; refresh (4 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      srv2.example.com.
$ORIGIN 1.168.192.in-addr.arpa.
1                       PTR     srv1.example.com.
$TTL 10800      ; 3 hours
100                     PTR     client.example.com.
$TTL 86400      ; 1 day
2                       PTR     srv2.example.com.
3                       PTR     srv3.example.com.

- Gạch bỏ 1 số bước ở trên.
- Làm trên CentOS 5.7 nhanh hơn 5.5 ( ? )


Thứ Tư, 1 tháng 8, 2012

Cấu hình DHCP trên CentOS 5.x

Bài này sẽ là bài kế tiếp trong bộ bài viết xây dựng 1 hệ thống dịch vụ mạng chạy trên Linux 1 cách hoàn chỉnh.
Ở bài này, chúng ta sẽ đi xây dựng dịch vụ DHCP dạng step-by-step, còn DHCP là gì thì mọi người tìm hiểu thêm :D. Ở đây chúng ta cài DHCP lên máy chủ srv2 đã cài đặt DNS ( nếu muốn rõ hơn hãy xem lại bài DNS )

1, Cài đặt các gói cần thiết :
- Cho đĩa cài đặt CentOS
- [root@srv2 ~]# mkdir /media/cdrom
- [root@srv2 ~]# mount /dev/cdrom /media/cdrom
- [root@srv2 CentOS]# cd /media/cdrom/CentOS
- [root@srv2 CentOS]# rpm -Uvh dhcp-3.0.5-23.el5_5.2.i386.rpm
- [root@srv2 CentOS]# cd /  ( quay trở lại đường dẫn "/" để chuẩn bị umount )
- [root@srv2 /]# umount /dev/cdrom

2, Cấu hình file dhcpd.conf trong đường dẫn /etc/ :
- [root@srv2 /]# less /etc/dhcpd.conf
- Ở đây ta thấy có dòng ghi 1 file sample của dhcpd.conf, chúng ta copy file đó và ghi đè lên /etc/dhcpd.conf
- [root@srv2 /]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf  ( chú ý /dhcp-3.0.5 là phụ thuộc vào gói ta cài đặt, tốt nhất là dùng TAB di chuyển vào , nếu không có thể copy file cấu hình ở dưới )
- [root@srv2 /]# vi /etc/dhcpd.conf
- Chú ý thay đổi tại 1 số chỗ sau
ddns-update-style interim;
ignore client-updates;
DHCPARGS=eth1;        # cấu hình dịch vụ DHCP lắng nghe trên card mạng eth1
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.1.2;   # cấu hình gateway cho các máy client
option subnet-mask 255.255.255.0;
option domain-name "example.com";
option domain-name-servers 192.168.1.2;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.1.20 192.168.1.100;
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
# Cấu hình đặt chỗ địa chỉ IP cho 1 số client cụ thể , DHCP reservation
host ns {
hardware ethernet 00:0C:29:FA:41:88;   #địa chỉ MAC của client đó
fixed-address 192.168.1.50;         #địa chỉ IP đặt trước
}
}
3, Khởi động dịch vụ :
- [root@srv2 /]# /etc/init.d/dhcpd start
4, Thiết lập dịch vụ chạy khi Server khởi động :
- [root@srv2 /]# chkconfig --level 2345 dhcpd on
5, Trên máy client chạy XP, chọn chế độ thiết lập nhận IP từ DHCP và chờ. Sau vài giây sẽ nhận được
6, Muốn test DHCP reservation thì thêm 1 dòng tương đương như trên nhưng với địa chỉ MAC của client đó và địa chỉ IP muốn đặt trước
7, Kiểm tra việc cấp địa chỉ IP cho client :
- [root@srv2 /]# tail -f /var/lib/dhcpd/dhcpd.leases


P/S: ở đây tạm thời để gw mặc định là 192.168.1.2 ( địa chỉ của DNS-DHCP server ), sẽ thay đổi khi đến bài cấu hình Router/Firewall bằng iptables trên srv1