Home

Skip to forum content

Skip to forum content

VnOSS forum

Diễn đàn phần mềm mã nguồn mở cho người Việt khắp nơi

Bạn chưa đăng nhập. Xin đăng nhập hoặc đăng kí

Chủ đề mới Chủ đề chưa có trả lời


VnOSS forum » Thảo luận chung » Học với ubuntu

Trang: 1 2 3 4 5

You must đăng nhập or đăng kí to post a reply

Học với ubuntu (Trang 1 / 5)

Bài [1-25/123]

1 Reply by wangji 30/09/2007 22:09

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

1  Lại LD_PRELOAD  với kgtk

kgtk đã được viết ra bởi Craig Drummond để chứng minh "cơ chế chèn thư viện " chộn giao diện kde với gnome !
Mới gần đây,
đã sửa để tiếp thu cơ chế dùng CMake (cả khu KDE4 chuyển sang CMake thay autotools !!).Trong đó anh ta
hack cái libgtk2/libqt3 để khi được gọi  duyệt trình ( file browser ) thì giao diện kde sẽ thay thế.
  Trênảnh có 2 trường hợp chụp firefox gọi mở tệp (chụp riêng lẻ rồi thu vào làm một ảnh ).
firefox thường giao diện với gtk
Nhưng nếu gọi $kgtk-wrapper firefox  thì file browser sang dạng của kde.
Nhân dịp này biên dịch kgtk  cho học hỏi khá nhiều vì (K)Ubuntu  hay PCLinuxOS    đều không phải mì ăn liền cho "development".May là kho rất đầy đủ,nghĩa là chỉ cần nhấn chuột cho đúng !(synaptic  hay adept package manager )

nguôn : kgtk-0.9.1beta.tar.bz2

Sẽ phải cài cmake,rồi thử như khuyến cáo readme ,khi lỗi thì đọc rồi cài tiếp cái thiếu (chung là thư viện -dev  gtk ,kde...)

  Để có thể so sánh trong trường hợp " bí" coi gói đã biên dịch ở đây :

kgtk-0.9.1-2.i386.rpm
kgtk-0.9.1beta-bin.deb
kgtk-0.9.1.tgz

chú ý  PCLinuxOS  có trong kho mì ăn liền kgtk ;nhưng muốn tiến phải  mồ hôi một chút;

  Sau khi chôi chảy  đọc mã nguôn cho biết thêm tí ti -Nhớ đừng quá nông nảy ,vì học kiểu này phải
...ngâm ngấm khá lâu, như cà ngâm muối !


  2  ubuntu lúc  khởi động

  Trên diễn đàn ubuntu họ nói : inittab bỏ,mọi thứ thay bằng upstart ...
Nếu tìm hoài trong máy thì chữ upstart chẳng thấy đâu ...

  Thực ra upstart  vẫn giũ tên init và initctl  ...Lúc ban đầu chạy hal daemon cho thiết bị ,sau đó khởi dịch vụ dbus cho trao đổi IPC  (các thao tác trao đổi giũa objs)...  Những cái đó nằm sau /etc/dbus-1/event.d/    ...
(dbus thì tương tự như dcop bên kde  dịch vụ gốc cho nền wm window manager)

  3  ld_preload chạy thế nào?

  Khi một apps khởi thì cái loader nạp thư viện san sẻ ld-linux.so lo mọi chuyện. Nó sẽ tìm trong
/etc/ld.so.conf  ld.so.cache  các libxyz.so cần tới
  Khi có biến LD_PRELOAD=thư_viện_chèn_chân.so nó sẽ nạp trứơc -preload

.      3a  Cái ứng dụng nổi tiếng ngày xưa (năm 2000  !) là của Andrew Tridgell "hãng" samba.org viết cái fakecd.c
làm thư viện chèn lừa vmware là tệp iso như đọc từ ổ cd thật !
Đây là trích từ readme của anh ta

To build just type "make" then copy fakecd.so to somewhere like /lib/
and add the path to fakecd.so into /etc/ld.so.preload

After that you just need to tell vmware to use your iso image instead
of /dev/cdrom. The ISO must have a filename ending in ".iso".

tridge@linuxcare.com
October 2000

.     3b  xvnkb_undocumented (2001-2003)
  Trên mạng hồi 2003 có thể tải xvnkb_preloadcó test để thử nghiệm ld_preload tác giả để lại. Ghi đây cho vui học hỏi.

Last edited by wangji (05/10/2007 18:48)

2 Reply by wangji 11/10/2007 23:13

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

"do thám trao đổi trên một thiết bị usb "
 

    1  Từ hệ tệp tới thiết bị -device-

    2  bao che hệ tệp với hệ tệp ảo VFS -virtual_file_system -
    3  thiết bị với cây hệ tệp từ dev sysfs  devfs  udev tới bao che với HAL -hardware_abstract_layer-

  Trong linux cái gì cũng có thể coi là một tệp .Cây thư mục mà ta thường thấy thì ngay các thư mục cũng là các tệp .
Để sác nhận tệp cần số_khoá/số_trỏ ( key/value pair ) số khoá là số độc nhất để chỉ định tệp.
Cái nhìn tương đương là các gói hàng trong một siêu thị đều có số code_bar duy nhất cho mỗi gói.

      http://www.ussg.iu.edu/usail/concepts/filesystems/everything-is-a-file.html

  Thủơ ban đầu thiết bị đều được tượng trưng bằng tệp /dev/và_hàng_nghìn_tệp trong thư mục dev ,với 2 số maj và min
Sau đó đẻ ra devfs ,rồi sự phân chia quan hệ lõi /người dùng  mang tới udev
Các thiết bị chỉ hiện ra dần dần với dò tìm của lõi....móc toàn bộ vào hệ tệp sysfs
   Nơi quan sát  ls /sys  !  cho ra 

   block  bus  class  devices  firmware  fs  kernel  module  power

  Vì nhiều lý do có ra đời nhiều hệ tệp,mỗi thứ có lợi hại khác ,linux đã sớm xử dụng hệ ảo VFS chùm lên hệ thật đang dùng.Nó cho phép đang chơi với hệ nọ
chạy sang hệ khác không cần suy nghĩ !(tưởng tượng cứ phải như mình đang nói tiếng việt,chạy sang tiếng lào...lúc nào đó lộn óc !)

  Với thiết bị cũng vậy  : người ta hy vọng để lớp thiết bị ảo chùm lên  ,đó là HALd  hardware abstraction layer.... nhưng hãi còn ..xa

Last edited by wangji (12/10/2007 14:00)

3 Reply by wangji 11/10/2007 23:15

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

4  Vào ngõ hẻm usb

      a  đại lộ hay ngõ ngách -bus-

      b  ngõ cụt hay nút cuối -device-

      c  vào ngõ với usbfs (usbdevfs) usbfs2

      d  thăm dò với usbmon (monitoring usb)  Trở lại /proc ,driver và thiết bị

         usbmon và debugfs  dò usb với 2 ngón tay 

      e  kết nối với tiện ích dò mạng tcpdump,wireshark (ethereal )

         từ libusb tới libpcap rồi pcap-usb  để nối usbmon với wireshark



   a  usb có khả năng cắm nhiều -128- thiết bị đủ loại giống (class:device)
  như một ngõ có đủ loại hộ (hộ đông con ,hộ loại giàu ,hộ trí thức ,hộ dân mánh khóe sửa chữa !),nhưng chắc khó so với đại lộ pci ,scsi ngay cả ide
Trên pci khó mà có cái "hub" cho pci để tách đại lộ phụ như ngõ ngách của usb ; nguyên tắc chắc được ,thực tế khó vì sườn lên tín xung cho phích nhiều giây
ngắn thì dễ nhiễu ,dài ra thì giảm khả thi tốc độ đường truyền

   b  ngõ usb có thể cụt với nút cuối (ngày xưa các cápnối scsi đều phải có thiết bị giả R-connector có điện trở để tránh xung phản hồi )
nhưng cũng có thể ngõ ngách ra..ngõ khác !

  Linux rất ngèo với usb ,lâu năm chỉ có cái hệ tệp usbfs -ngày xưa 12/2004 usbdevfs- để móc ngõ .
Khi boot ,lõi dò tìm các thiết bị ,mỗi thiết bị tìm thấy lõi sẽ nạp module kéo xe và tạo i_nút trong hệ /proc

  tệp /dev/gìđó tượng trưng cho thiết bị ; module_gìđó.ko anh kéo xe  /proc/bus/usb/[01 02 devices ] là các i_nút lõi tạo để lo trao đổi sau này !
Khi cậu mầm non đọc cái usb nào thì lõi sẽ chuyển qua anh kéo xe tới thiết bị tệp /dev/gìđó

Khi dùng /dev/gìđó là chỉ nói tới một thiết bị ! Trên ngõ usb có nhiều hơn,vì vậy phải móc ngõ với một hệ tệp
( nhớ là bất cứ cái gì trên linux == tệp !!)
    mount -tusbfs none /sys/bus/usb  (ngày nay mọi công cụ hệ thống chui vào hệ /sys và hotplug tự động hóa các thao tác móc)

Gõ  cat /proc/bus/usb/devices cho ra các đầu usb mà lõi đã dò tìm khi boot

    ls  /sys/bus/usb/devices  nhìn rõ hơn cái kết quả của móc ngõ usb vào hệ usbfs ! (và quan sát tiếp !)

  Khi cắm thẻ nhớ usb chẳng hạn ,trên nguyên tắc có thể dùng ioctl để viết đọc thẻ đó với ngõ móc usbfs. Nhưng đó là ngõ cụt : endpoint
Vì đằng sau sân -trong thẻ usb ,ta có thể có một hệ tệp khác !có nhiều nút cuối endpoint hay tệp trong đó ;
usbfs chỉ cho phép có một nút cuối .
Năm nay Google summer code 2007 có dự án mới usbfs2 với một cô sinh viên Sarah Bailey
http://wiki.cs.pdx.edu/usb/usbfs2.html
và một trong những người theo dõi là GKH  tác giả cái udev  và đồng tác giả cuốn sách linux_device_driver 3rd ed !và cũng là người phụ trách quản trị linux-usb !

Last edited by wangji (13/10/2007 16:27)

4 Reply by wangji 11/10/2007 23:17

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

4  Vào ngõ hẻm usb (tiếp theo) usbmon

  Ngay từ thủa đầu các monitor sniffer ngửi dò usb cho windows đã tràn ngập thị trường !  Từ rẻ tới đắt đều có !
  Tháng 3/2001  Dave Harding sinh viên đại học Edimburg đã viết USBMon sườn đầy đủ cho sau này

      http://www.mail-archive.com/linux-usb-devel@lists.sourceforge.net/msg00234.html

  Vài năm sau Pete Zaitcev mang ý đồ đó lên một bực nữa : đưa vào lõi ! Bài diễn ở Ottawa Linux Symposium 2005

      http://people.redhat.com/zaitcev/linux/OLS05_zaitcev.pdf

  usbmon của Zaitcev đủ để soi ngó với 2 ngón tay ;

  Một năm sau Paolo Abeni nắn vá với wireshark - cựu Ethereal -viết một cái patch nặng cân ,hay đến nỗi mọi người dụ dỗ anh ta
đem nó qua libpcap thư viện packet capture dùng cho tcpdump,cho wireshark...và đủ mọi nơi

     http://www.uwsg.iu.edu/hypermail/linux/kernel/0610.1/0192.html

  Có thể nhìn usbmon như một thiết bị usb ảo ,mà anh kéo xe là usbmon.ko ,lõi cho phép in đè lên ngõ usb  để nghe lỏm !

  Sau khi  mount -t debugfs none /sys/kernel/debug && modprobe  usbmon 

với 2 ngón tay chỉ cần  cat /sys/kernel/debug/usbmon/3u > /tmp/1.mon.out  (đọc usbmon.txt  trong Documentation kernel_src)

5 Reply by wangji 11/10/2007 23:19

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

5  biên dịch tiện ích wireshark-usbmon  cho ubuntu-7.04

   a  Cài cvs , gcc  rồi tải về với cvs : libpcap tcpdump  và wireshark
      từ

      http://www.tcpdump.org/
      http://www.wireshark.org/

   b  biên dịch libpcap ; sẽ bị lỗi khai báo thiếu lex và họ khuyến cáo cài flex :  cài flex rồi biên dịch lại libpcap.
      - không thấy báo lỗi ,make install 

   c  Sau khi cài libpcap (make install) biên dịch tcpdump hay wireshark

       - tcpdump sẽ báo biên dịch lỗi pcap_parse
       - wireshark còn bị lỗi ngay khi cấu hình : thư viện -lpcap không nhận được !

    lý do : trong thư viện libpcap thiếu định nghĩa của nhiều hàm ( objdump nó mà quan sát ) dù rằng lúc biên dịch không thấy báo có lỗi
       trong thao tác biên dịch,parsing cú pháp (grammar.y) nó chỉ dùng lex/yacc  ...không đủ !

   d  Phải cài thêm bison ( "bison và flex" cho phép biên dịch thành công libpcap,tcpdump  và wireshark !!)


                              Thử tiện ích

         -  móc usb ảo vào hệ tệp debugfs và bật anh kéo xe (driver)

       mount  -tdebugfs  none /sys/kernel/debug  &&  modprobe  usbmon

         -  bật tiện ích

       sudo  wireshark

   cần phải sudo vì thường dân user không có quyền " mở "  sock để tò mò nghe lỏm !

         - dùng "mũi" chuột mà ngửi hương thơm

  chú ý :
       a  Đầu đề nói "cho ubuntu-7.04" đúng ra cho họ hàng ubuntu (Vubuntu,ubuntu-vi ,Kubuntu...)
   Trên mọi ... trâu khác,lõi mới hơn 2.6.18  chi đó đều có usbmon.ko nhưng chưa chắc đã chạy.
   Phải kiểm tra xem lõi đã có CONFIG_DEBUG_FS is set khi được biên dịch !

    cat /proc/filesystems | grep  debugfs  hay
     grep  DEBUG_FS  /boot/config-xy-gìđó  (PCLinuxOS,Sidux  không có set debug_fs chẳng hạn ! FC-One có !với FCOne khỏi cần modprobe usbmon !)

       b  Nếu rủi ro cài với gói mì ăn liền (deb,rpm,tgz..vv) nó báo va chạm conflict với tcpdump hay wireshark đã có
đổi tên cái cũ mv tcpdump tcpdump_org  (wireshark_org)
  tháo nén bằng "ar x xyz.deb && tar xzf data.tar.gz"  rồi cóp đại vào gốc " cp -a usr /"

       c  Khi chạy wireshark với mì ăn liền có thể bị báo thiếu libpcre.so.3 ,làm một cái kết nối với libpcre-xyz có trong máy bạn

    ln -s  /usr/lib/libpcreposix-xyz-gìđó  /usr/lib/libpcre.so.3

       d Cuối 9/2007 chưa có distro nào cài libpcap có khả năng kết nối với usbmon ! Vì vậy đây có
mì ăn liền (19Mb)
wireshark_usbmon-0.99.6.deb

wireshark-usbmon-0-2.i386.rpm

screenshot

Last edited by wangji (12/10/2007 14:10)

6 Reply by wangji 22/10/2007 18:41

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

[align=center] Tạo đĩa ảo bootable với vmmplayer trên ubuntu-7.10[/align]

1      Tiện ích cần
gcc:
  kho ubuntu (synaptic)
vmplayer :
VMware-player-2.0.1-55017.i386.tar.gz tải từ   vmware.com

damnsmalllinux_iso
ftp://ftp.nluug.nl/mirror/ibiblio/distributions/damnsmall/archive/dsl-3.3.iso

qemu :
kho ubuntu ( synaptic hay apt-get install qemu )

2     trong thư mục ~/vmfun/  phải có 3 tệp :

    dsl-3.3.iso  dsl.vdmk  dsl.vmx

  2a   dsl.vmdk

  đĩa ảo dsl.vdmk dùng sau đây để cài ... trâu damnsmalllinux ,có thể tạo bằng tiện ích qemu-img  nếu không muốn đăng ký,đăng số
với vmware để dùng_tạmbợ  vmware-workstation ! (vmplayer hoàn toàn miễn phí ,không giới hạn thời gian !)

   Từ  một terminal (xterm) trong thư mục vmfun gõ : qemu-img create -f vmdk  dsl.vmdk 256M

Đĩa ảo tạo ra nhỏ xíu -65k - sau khi cài sẽ lên 130k .Tối đa dùng được 250k !

  2b    dsl.vmx 

  Đây là tệp cấu hình quan trọng khai báo với vmplayer "môi sinh" của " phiên máy ảo " !
   a  khai cdrom-image là tệp_iso chứ không dùng bánh đa cd thật
   b  khai tên đĩa ảo ,ethernet ,( usb ,sound,serial...vv không cần bữa ăn đầu !)

Trên mạng cũng đầy thí dụ vmx  nhưng không chi tiết;
muốn hiểu , chỗ hay nhất nên đọc sanbarrow.com

Đây script vmx thử
  dsl.vmx

#!/usr/bin/vmware

guestOS = "linux"
displayName = "cấuhình_tối_thiểu vmx"
config.version = "7"
memsize = "256"

ide1:0.present = "TRUE"
ide1:0.fileName = "dsl.iso"
ide1:0.deviceType = "cdrom-image"

ide0:0.present = "TRUE"
ide0:0.filename = "dsl_minimal.vmdk"
ide0:0.deviceType = "ata-hardDisk"

floppy0.present = "FALSE"
Ethernet0.present = "TRUE"
ethernet0.addressType = "generated"

sound.present = "false"
sound.autodetect = "false"
usb.present = "TRUE"

ethernet0.generatedAddress = "00:0c:29:cb:ca:d6"
sound.virtualDev = "sb16"
uuid.location = "56 4d 38 cb 59 89 1b 6f-d5 b7 e8 d9 69 cb ca d6"
uuid.bios = "56 4d 38 cb 59 89 1b 6f-d5 b7 e8 d9 69 cb ca d6"
ethernet0.generatedAddressOffset = "0"

tools.remindInstall = "TRUE"
ethernet0.connectionType = "bridged"

uuid.action = "create"
virtualHW.version = "3"
extendedConfigFile = "dsl_minimal.vmxf"
virtualHW.productCompatibility = "hosted"
tools.upgrade.policy = "manual"
ide0:0.redo = ""

3    gõ vmplayer dsl.vmx , hay click "tiệníchhệthống#vmplayer" rồi loayhoay

Các ảnh sau đây cho xem chặng đường đi qua
    1    lúc dsl khởi động trong máy ảo
    2-4  cấu hình phân vùng cho đĩa ảo (tạo một phân vùng : hda1 !!)
    5-6  quá trình cài vô đĩa ảo
    7-8  khởi động với đĩa ảo : lần đầu có thao tácnhập mật khẩu : thủtướng_root và bộtrưởng_user
    9    kết nối vnoss trong đĩa ảo  !

7 Reply by wangji 22/10/2007 21:20

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Tạo đĩa ảo bootable với vmmplayer trên ubuntu-7.10(tiếp)



chú ý

1 tui cố tình cài dsl-3.3.iso vì nó nhỏ xíu ,đỡ mỏi mắt chờ em lên thuyền - dù máy có tầm thường -.Trên nguyên tắc học ,chẳng khác tỉ ti ... trâu khác

2 tui cố tình viết tệp vmx nhỏ để thoáng mắt khi đọc,không vướng víu bận tâm các vấn đề ...không bó buộc lúc học ban đầu !

3 vmplayer-2.01 không chạy với ubuntu-7.04 ( tui không biết làm cho nó chạy như trên ! ). Phải thay nó bằng phiên bản thấp hơn 1.0.xx gì đó
Tỉ dụ nếu đã cài ubuntu-vi (7.04) của JeanChristopheAndre@hanoilug ,hay Vubuntu@oss-hcm.vn
thì chỉ cần apt-get install vmware-player nó sẽ tới kho ubuntu lấy về !

Rất có thể kho ubuntu đang biến chuyển - họ xóa những cái " cũ" đi" ,thử nơi đây may ra ...!

4  và cũng dĩ nhiên cái đĩa ảo bootable trên dsl.vmdk cũng có thể chạy trên qemu như ảnh này

Last edited by wangji (06/12/2008 00:08)

8 Reply by thinklinux 23/10/2007 23:06

  • thinklinux
  • Thành viên
  • Offline
  • Đăng kí: 23/10/2007
  • Bài: 1

Re: Học với ubuntu

Chao ban bai viet ban hay lam.nhung de hieu dc no chac phai di quang duong xa lam.
Ban co the chi minh tim tai lieu de doc,sau do moi co the hieu dc ban noi ji ko?

9 Reply by wangji 23/10/2007 23:32

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

thinklinux viết:

Chao ban bai viet ban hay lam.nhung de hieu dc no chac phai di quang duong xa lam.
Ban co the chi minh tim tai lieu de doc,sau do moi co the hieu dc ban noi ji ko?

1  nếu bạn chưa quen máy ảo bao giờ

a   http://en.wikipedia.org/wiki/VMware
      b   http://en.wikipedia.org/wiki/Comparison_of_virtual_machines
      c   http://forum.vnoss.org/viewtopic.php?id=4610

2  còn tiện ích ,cách sử dụng linux thì nó ...chung chung như bất kỳ một " nix " khác  .Google dòm ngó phải là thói quen

3  nếu có điểm nào cụ thể không nắm , đặt câu hỏi cụ thể hơn đi
Tài liệu cho chuyện  ...như "sợi " này  là nó đòi hỏi bạn phải cày cấy ,"đào mộ Hy Lạp" tự tìm hiểu ...vì nó đụng tới khá nhiều vấn đề...không thể giải thích trên một trang giấy như bài hướng dẫn trường học đâu !

10 Reply by wangji 25/10/2007 00:20

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Nếu cài ... trâu ảo rồi cũng chỉ ngồi lượn mạng thì cũng chẳng thú vị chi mấy
Cài máy ảo là để "quậy nó" ! Mà quậy nó tất nhiên có lúc vướng vấp ,bị treo hay mất ...mạng ! -không! mạng lưới chứ không phải  mạng thân thể đâu!

Một lỗi hay có khi google là

The network bridge on device /dev/vmnet0 is not running.  The virtual machine will not be able to communicate with the host or with other machines on your network.
Virtual device Ethernet0 will start disconnected.

và trên màn máy ảo vmware biểu tượng ethernet có cái hồng thập tự đỏ !(ethernet bị ngắt !)

Nếu cứ theo người ta nói để giải thì cũng khó chịu vì ,người nói nọ ,người nói kia ! Hay hơn là có cái hiểu mấy cái vmnet  đó làm gì đã !
Lúc máy ảo dsl khởi động nó tạo 3 vmnet
vmnet0 làm như một cái cầu -bridge- nối với cạc mạng của PC
lý do thiết bị ảo (/dev/vmnet0) này ở dạng "cầu - bridge-" là vì có dòng trong tệp dsl.vmx :

ethernet0.connectionType = "bridged"

Khi gõ ifconfig trong PC chủ ,thấy
eth0 192.168.1.3
vmnet1 192.168.45.1 thuộc một mạng "lan" có thể kết nối dhcp với PC
vmnet8 172.16.103.1 thuộc một mạng "lan" thứ hai có khả năng phân giải địa chỉ "NAT" với chủ PC


Trong khi đó ifconfig trong máy ảo dsl :
eth0 192.168.1.2

cái /dev/vmnet0 "bắc cầu" máy ảo tới máy chủ_PC trong hệ mạng 192.186.xx.yy

Nếu cái bridge on /dev/vmnet0 không running là do mất /dev/vmnet0  thì phải tạo lại nó bằng
   

mknod c 119 0 /dev/vmnet0

Nếu /dev/vmnet0 có rồi  thì gọi lại cấu hình mạng với

/etc/init.d/vmware-player  start

Nhớ đọc các dòng nó khai báo ...để còn hiểu từ từ !

Last edited by wangji (26/10/2007 17:13)

11 Reply by wangji 25/10/2007 19:36

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

system-profiler

  Với ubuntu-7.10 chỉ cần cái sysprof qua synaptic
Nhưng khi chạy sysprof thì nó la không có libbfd-2.17.50.so   Phải làm cái softlink !

/usr/lib/libbfd-2.17.50.so -> /usr/lib/libbfd-2.18.so

Sau đó sẽ bị la thiếu sysprof-kernel-module  ! Phải cài sysprof-module-source  có trong cd : sysprof-module.tar.bz2
Sau khi make install thì modprobe sysprof-module

  Thế là ra cái này

12 Reply by wangji 02/11/2007 01:19

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                     microcontroller msp430 : cài tiện ích vào ubuntu

MSP430 ultra low power MCU's ra đời cũng gần 5 năm. Với tiện ích ez430-F2013 development tool cho window ! Ngay 2003 đã được cộng đồng linux chuyền tay -porting gnu tool- sang linux .(cross compiler)
Gần đây -2007 !- đã có nhiều bài chỉ dẫn cài tiện ích toolchain cùng eclipse-IDE  cho ubuntu....
Vì nhiều lý do - nhiều bài howto cũ,sfnet đổi dạng... nếu theo nguyên si một bài thì không thành công.
Sau khi cài vào ubuntu-7.10  tui thu thập đây các đầu nối cần

1 eclipse 3.2.2 ubuntu
1b  apt-get install sun-java5-jre

2 cdt plugins
             http://www.zylin.com/embeddedcdt-linux-gtk-20070424.zip
             http://www.zylin.com/zylincdt-20070424.zip
3 msp430 toolchain
             http://sourceforge.net/project/showfile … p_id=94501
       or    http://wyper.ca/debian/i686/

4 msp430-gdbproxy
             http://sourceforge.net/project/showfile … _id=211507
   or        http://www.soft-switch.org/downloads/mspgcc/

5 doc mspgcc 2003 (build from cvs )
               http://mspgcc.sourceforge.net/manual/

6 tutorial eclipse-msp430
               http://msp430.techcontent.net/eclipse.htm

7 experimental
               http://people.ee.ethz.ch/~npreyss/msp430/

configeclipse  http://www.msp430.ubi.pt/blog/wp-conten … 219845.pdf

               http://www.hh.em-net.ne.jp/~yutaka77/ms … 21stk.html  oldstyle

without eclipse
               http://www.msp430.ubi.pt/blog/index.php … -on-linux/

cvs mspgcc:
                cvs -d:pserver:anonymous@mspgcc.cvs.sourceforge.net:/cvsroot/mspgcc co gcc
             
              modules : (gcc gdb jtag msp430-libc packaging )

examples :    http://sourceforge.net/project/showfile … p_id=94501  (2003)

forum :       http://www.nabble.com/How-do-you-get-an … 10555.html

              http://osdir.com/ml/hardware.texas-inst … .gcc.user/

              http://blog.gmane.org/gmane.comp.hardwa … 0.gcc.user

Last edited by wangji (06/12/2008 00:09)

13 Reply by wangji 02/11/2007 18:58

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

lý do chơi với Texas MSP430

1 kit rẻ tiền .20$  hình ảnh msp430  và phóng
2 nhiều người tham gia dùng với linux , nhiều tài liệu ,
3 học cấu hình tiện ích với eclipse

Khi "họ" cài cho tiện ích mì ăn liền không cho thấy chi tiết cấu hình nan giải ! Cài eclipse ,java msp430toolchain không tị gì khó
Cấu hình cho eclipse để chạy msptoolchain - dù đã có tutorial giống giống trên mạng - bó ép phải suy nghĩ nhiều hơn
Không quá khó đâu.TỈ dụ một dạng đã cài trên sidux  và trên ubuntu-7.10

Nhiều microcontroller...dính tới sensors_network !. Tui nhớ khi giới thiệu NSLU2 aka slug  trên vietlug ,phản hồi ngay là máy nhỏ quá yếu quá.....
( kiểu dân á châu cái gì cũng muốn mới nhất xịn nhất.... ) hôm nay-22oct2007- thấybài này cho NSLU2  !

Last edited by wangji (02/11/2007 22:46)

14 Reply by wangji 13/11/2007 20:30

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                       Androids  của google
Tưỏng java eclipse thì dễ ăn -cài cho msp430 trên không vướng lắm
ai ngờ  cú pháp với plugin android  phải theo....http://code.google.com/android/intro/tools.html
thì mọi chuyện ...khá dễ dàng !

Last edited by wangji (06/12/2008 00:10)

15 Reply by wangji 17/11/2007 04:13

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                              Từ gpsim  tới  sdcc  small devices C compiler

gpsim là gnu simulator viết bởi Scott Dattalo chuyên gia về micropics  (Ở hcm cũng có picvietnam_website  !)
sdcc bắt đầu bởi Sandeep Dutta ,sau này rất đông người tham gia vì nó đã từ intel8051  ...bây giờ có

wangji@wangji-desktop:~$ sdcc -v
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.6.0 #4309 (Nov 10 2006) (UNIX)

.
Muốn ăn chắc ,với ubuntu chỉ cần apt-get các thứ sau đây (tuy không ...mới nhất !- như svn !)

gpsim gpsim-logic gputils  sdcc sdcc-ucsim

rồi theo bài chỉ dẫn sau :

thế là được cái ảnh

Nếu muốn sdcc mới hơn :

hoặc lấy với svn !!

  Coi chừng ! Đừng dại mà nghe anh chàng này :

Phần cho pic14  ....láo bét  ! không chạy như bài đó nói !! 

Cái hay của sdcc không phải chỉ ở chỗ có nhiều micro controller  mà nó là retargetable  ,tức là tự mình có thể viết lấy cho một micro chưa có trong đó  !
Tài liều rất đây đủ và hay

sdccman.pdf  chi tiết compiler internals,porting  to sdcc  ...

Last edited by wangji (06/12/2008 00:10)

16 Reply by wangji 18/11/2007 16:29

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

chú ý 2
nếu muốn tải gpsim_svn - mới- thì đừng có nghe họ nói ở đây:

svn checkout https://svn.sourceforge.net/svnroot/gpsim/trunk .
nguồn :http://gpsim.sourceforge.net/gpsim_svn.html

mà phải làm như sau coi chừng ...dài đó 235Mb !

svn checkout https://gpsim.svn.sourceforge.net/svnroot/gpsim gpsim

17 Reply by wangji 19/11/2007 22:37

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                               Từ configure/make tới autotools

                                                           ai tạo ai

------------------------------------------------------------------------------------------------------------------------------------------
                                                                                                                                                     
                      (configure.ac) --- autoheader* ---> config.h.in                                                               
                                                                                                                                                           
                                    --- aclocal* & autoconf* ---> configure                                                           
                                                                                                                                                     
                                        --- libtoolize*  --->  config.guess config.sub ltmain.sh                                 
                                                                                                                                                     
                    (makefile.am)--- automake* --add-missing ---> ylwrap depcomp install-sh mising makefile.in 
                                                                                                                                                 
                                           --- configure* ---> config.h  makefile libtool                                             
                                                                                                                                                     
                                           --- make*  --->  compile_action                                                               
                                                                                                                                                     
             ------------------------------------------------------------------------------------------------------------------------------------------

Đôi khi lấy nguồn rồi tưởng mì ăn liền ,gõ configure/make vướng lung tung kiểu "not found" nào là :

                   libtool, ltmain.sh , gtk-config ,depcomp.... google hoài chẳng giải quyết chi....

   Đôi khi đọc tutorial makefile cho một apps nhỏ xíu, thế là tưởng ...biết tự viết/sửa makefile .....


   Để học một cách thực tế : tui đề nghị  nguồn gpsim với hai dạng đang có trên mạng (để còn so sánh ..khi bí như hóc xương cá lóc )

                 1  dạng gpsim-0.22.0.tar.gz  có trên sourceforge.net  thuộc loại mì ăn liền (configure/make hết !)
                       http://sourceforge.net/project/showfile … _id=462286

                 2  dạng svn_trunk đang phát triển .Không mì ăn liền cho linux ,vì họ "sài " với visual studio ++ 7 ...và mingw (lai căng win nix)

                       svn checkout https://gpsim.svn.sourceforge.net/svnroot/gpsim/trunk trunk

   Nếu biết tạo các tệp câu hình như dạng 1 ...thì hết ý ! đó là mục tiêu !

   Bảng trên tóm tắt các thao tác của các tiện ích autotools (đánh dấu *) .Khi tải svn_trunk về trong thư mục gốc có configure.ac ,và trong mỗi thư mục
đều có makefile.am . Đó là các đơn hàng của mâm cỗ .Vào thư mục gốc gõ

1 autoheader để tạo config.h.in ,tệp này sẽ là đơn mẫu cho thao tác ./configure -chốc nữa- tạo ra config.h
2 aclocal && autoconf  để tạo script configure phù hợp máy tại gia
3 libtoolize để tạo tiện ích cần dùng cho automake -nhất là ltmain.sh để tạo ra libtool cần cho thao tác make khi biên dịch
4 automake --add-mising

thế là được mì ăn liền
chỉ cần như mọi khi configure --options  rồi make là đi uống bia

  Với ubuntu để có các tiện ích cần bên trên ,phải cài

autoconf  automake libtool

để biên dịch gpsim hoàn hảo phải cài   

bison flex    libopts25-dev    libreadline5-dev   libgtk2.0-dev gtk+extra2

coi chừng : gpsim không nhỏ đâu ; biên dịch lâu như kernel đó
    bison flex cần cho gpsim vì có vài trình đòi yacc parser trong đó !!

tham khảo thêm :
http://www.seul.org/docs/autotut/
cuốn phải đọc để hiểu ,nhưng đừng nhầm :libtool sẽ bị xoá bỏ trong một tương lai gần thôi!:
http://sourceware.org/autobook/autobook … C_Contents
muốn thử sau biên dịch,dù chưa make install
gõ  trunk/gpsim/gpsim  nó sẽ tạo tệp trunk/gpsim/.libs/lt-gpsim và chạy với trình này,- tức làm link libs lung tung tại chỗ !Đọc script gpsim đó sẽ hiểu

mì ăn liền
nếu vẫn chưa thành công tải mì về ăn thử cho ..phấn khởi
Sau khi cài với dpkg -i ,nếu nó than libgpsim nọ kia thì sudo ldconfig để khai báo các thư viện vừa cài !

Last edited by wangji (06/12/2008 00:11)

18 Reply by wangji 28/11/2007 18:29

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                         thật ảo với ảo thật : cài đặt kỳ dị 
                        hay
Làm sao cài đặt -install - linux vào đĩa cứng ,chạy thử mà không cần khởi động lại máy


  Để dẫn chứng ta sẽ dùng damnsmalllinux dsl.iso ,bất kỳ phiên bản nào , vì nó nhỏ ,thời gian thử sẽ ngắn cho dễ suy nghĩ !
Tạo đĩa ảo bootable  dslhd rồi cài damnsmalllinux vô đó

(coi chi tiết :

http://forum.vnoss.org/viewtopic.php?id=4610&p=1
bài tập 5 : cài đặt install vào đĩa ảo

Có thể thử ngay với  "  qemu  dslhd "  ( thử đĩa ảo )

Trên đĩa hda  tui có tạo một phân vùng hda8 nên phải sửa  (dslhd)/etc/fstab dòng root_mount cho phù hợp

mount -oloop dslhd  /mnt
    nano   /mnt/etc/fstab
thay
/dev/hda1  /  ext3  defaults,errors=remount-ro  0  1
bằng
/dev/hda8  /  ext3  defaults,errors=remount-ro  0  1

Để chắc chắn không còn gì trong phân vùng hda8  ,chạy

mke2fs  -j /dev/hda8

Say đó chép đĩa ảo vào phân vùng hda8 (đĩa thật )

dd   if= dslhd  of=/dev/hda8  bs=512  skip=63

Bây giờ cần chu thêm dòng khởi động - chỗ bạn đã làm menu.lst grub  lần trước -

title  dsl_fun_sda8
root  (hd0,7)
kernel  (hd0,7)/boot/linux24  root=/dev/hda8  vga=normal

Bây giờ  thử với 

qemu  /dev/hda

( thử đĩa thật )

chọn   dsl_fun_sda8  !

Các thao tác trên xem được trong ảnh này  ( nhìn kỹ các thao tác trong console cùng ảnh dsl trên qemu)
và   lúc khởi động

Nếu chạy với qemu như trên thì khi khởi động lại sẽ có được chọn dsl_fun_sda8 như đã cài dsl từ bánh đa dsl vô hdd !

chú ý

1  Lý do phải sửa fstab là vì lúc cài đặt dsl vào đĩa ảo ta thường để mặc định hda1 - vì có một đĩa ảo- cho tiện
Bình thường trong pc hda1 là win$$  ;Muốn cóp vô phân vùng khác - tỉ dụ trên hda8 - thì phải ....chuyển fstab !

2 cài đặt kỳ dị dây không phải lần đầu ! Trên mạng diễn đàn ubuntu họ có giải thích cài đặt từ tệp.iso ,không
đốt bánh đa cd. Nhưng phải bó buộc đao lốt các kernel/initrd  từ chùa ubuntu/hd-media .
Vì  a chùa damnsmall không có cái trò chơi đó
     b  cũng muốn khác người đôi chút
  đây cũng là một hình thức cài -ăn gian- từ tệp.iso qua cài đặt đĩa ảo ; cũng không đốt bánh đa
Hơn nữa cách này cho phép  cài rất nhanh vài chục pc trong lớp trẻ em  vì chỉ là cóp tệp chứ không cài đặt
mỗi con pc !
3 coi chừng ! Ít người chơi qemu /dev/hdax  .....Làm bậy có thể  treo máy ,nhưng không hỏng gì đâu
Có cái bánh đa damnsmall bootable là giải quyết được hết ...với 2 ngón tay ( và thời gian !)
Nhấn mạnh bánh đa damnsmall : vì nó cho phép khởi động mode console .Những trò của nợ mới ubuntu/sidux
vv  boot với initramfs cóc còn chuyện chọn " linux 2 " (initlevel 2 ) ! ( vào console nhưng không " móc gốc" !
rootfs !)

Last edited by wangji (06/12/2008 00:12)

19 Reply by wangji 01/12/2007 03:57

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                         Cài đặt kỳ dị : bổ sung

Bài trên làm dưới dạng không suy nghĩ nhiều - tới đâu giải quyết đó- vì vậy đã phải đổi fstab sau khi chép từ đĩa ảo sang dĩa thật !

Nếu đã định trước phân vùng đĩa thật sẽ dùng ,thì chỉ cần tạo đĩa ảo cũng trùng tên với phân vùng đĩa thật ; lúc đó fstab sẽ được ghi -harcoded-
phân vùng cho gốc móc -root mount file system-
Trên một máy mới -đĩa 6Gb đã cài ( gõ fdisk /dev/hda để quan sát )

1 winxp 2 ubuntu 3 free 4 swap

Tạo đĩa ảo 250Mb ,dùng fdisk để chia ra 3 phân vùng : 1 và 2 nhỏ xíu 3 lớn nhất để cài vào "hda3 thật" sau này .Đây là tỉ dụ :

                                           16Mb  16Mb  225Mb 

( 16Mb là vì lúc chọn từng cylinder của đĩa ảo)

Sau khi cài dsl vào đĩa ảo ( chọn hda3 ,dĩ nhiên )  muốn chép sang đĩa thật ta cần biết offset của phân vùng hda3 trên đĩa ảo !

  Gõ  fdisk đĩa_ảo ,và chọn đơn vị sector để hiển thị - command " u "-  tỉ dụ

255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
dslhd1              63       32129       16033+  83  Linux
dslhd2           32130       64259       16065   83  Linux
dslhd3   *       64260      498014      216877+  83  Linux

Hình trên thấy offset hda3 bằng 64260 sector ;chép đĩa ảo sang đĩa thật chỉ viết

dd  if = dslhd  of = /dev/hda3  bs=512  skip= 64260

Lần này chỉ cần thêm dòng khởi động dsl trong /boot/grub/menu.lst

title  dsl_fun_sda3
root  (hd0,2)
kernel  (hd0,2)/boot/linux24  root=/dev/hda3  vga=normal

chú ý  /dev/sdax dùng trong ubuntu  /dev/hdax  dùng trong damnsmalllinux ; Khi quậy nhiều distro trong cùng một đĩa ,nên chú trọng
Đó là một nguyên nhân treo máy khi boot vì menu.lst đã sai lầm với fstab

Last edited by wangji (06/12/2008 00:13)

20 Reply by wangji 10/12/2007 02:45

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                       ubuntu và linuxtuning

Thực tình mà nói ,mình chẳng bao giờ muốn đụng tới cái linuxtuning ,cái desktop dùng trong nhà mà ! Thế rồi có câu của vietwow về kernel-user vv lại thêm cái blog thú vị của mesừro  trong sợi đó ...thế là tham lam dấn đầu vào ubuntu xem có làm được cái chi ,hy vọng
bắt chước mấy sừ đó !
  Ngoài các thứ -classic- như vmstat ,top,gnome-system-monitor/ ksysguard (cho tụi kde) ... kho ubuntu còn cho phép cài 3 tiện ích quan sát máy :

dpkg -l
ii  sysstat                                    8.0.3-1                       sar, iostat and mpstat - system performance

ii  oprofile                                   0.9.3-1                       system-wide profiler for Linux systems
ii  oprofile-common                            0.9.2-3                       system-wide profiler for Linux systems (comm
ii  oprofile-gui                               0.9.3-1                       system-wide profiler for Linux systems (GUI

ii  sysprof                                    1.0.8-1                       A system-wide linux profiler
ii  sysprof-module-source                      1.0.8-1                       Source for the sysprof module

oprofile đòi hỏi khá nhiều thứ nêu muốn biên dịch lấy ;nhất là cái vmlinux để có bảng symbol-table .Kho ubuntu -kho mới ,chứ với 7.04  thiếu-  có để linux-image-debug  .
sysstat viết bởi cậu sebastien Godard có trạm perso khá chi tiết

Các tiện ích này đều dạng console-data .Nếu muốn đồ thị hoa hoét  thì VPA  visual performance analyser  ...chắc khó ...không trả tiền

Cách đây không lâu còn rpmredhat cho sysstat trong đó có trình "isag" để đồ họa các dữ liệu đã thu .Vì lý do ...-có lẽ - an toàn lỗ hổng(script !) tác giả  chỉ còn để nguồn contribution cho isag ,mình tự biên dịch rồi muốn làm chi với nó thì làm !

  Nhưng muốn nó chạy phải cấu hình vài điểm :may là tác giả của isag còn để cái haotu

   Chỉ cần theo hai cậu Godard và Doubrava là có cái ảnh này :thử nghiệm với sysstat

chú ý : muốn chạy isag phải cài thêm tcl/tk và gnuplot  (đều có kho ubuntu )


Cài đặt sysstat -đi từng bước (dành mầm non)

1  sudo apt-get install sysstat
Để có isag đồ họa tải nguồn
2 wget http://perso.orange.fr/sebastien.godard … 0.3.tar.gz
  tháo nén, vào ,gõ configure thì script isag sẽ được tạo ra trong thư mục contribution/isag
    sudo cp  /path sysstat_isag/isag  /usr/bin/
    sudo  ln -s  /usr/bin/sar  /usr/local/bin/sar
3 sudo apt-get install tcl8.4  tk8.4  gnuplot
Sau đây là cấu hình cho isag có điều kiện làm việc
4  sudo adduser  --group isag
    sudo  adduser  root   isag
    sudo mkdir  /var/log/sa  &&  chown  root.isag  /var/log/sa

  test thử nghiệm (quyền root !!)
5  sar 2 5 -o /var/log/sa/sa09
6  isag

   enjoy ! 
Có thể  cho user vào nhóm isag  nhưng lúc đó phải tạo /var/log/sa với  đủ quyền hữu dụng !!
(và chắc đó là lý lẽ lỗ hổng script mà tác giả gói ghém deb/rpm  không ai để nó nữa

Last edited by wangji (06/12/2008 00:14)

21 Reply by wangji 11/12/2007 20:32

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                             Gỡ rối tơ tình với biên dịch

    Khi biên dịch mã nguôn ,thao tác đầu thường là chạy configure để kiểm tra những cần thiết cho nguôn có phù hợp với môi trường máy pc không .
Đa số lỗi gặp là "khai báo thiếu thư viện -lxyz  "  ,chữ -l dùng trong option của biên dịch gcc ,  xyz trỏ tên thư viện có vướng víu .

  Cái thiếu đó có thể là thiếu thư viện libxyz vì chưa cài, nhưng cũng có thể là thư viện đó đã cài - thường xuyên dạng libxyz.so shared lib- nhưng thiếu bảng ký tự hàm thư viện - symbol table - thường có trong libxyz.a và libxyz.la ,mà khi biên dịch cần cài với hình thức libxyz-dev.

    rõ hơn chỉ cần  gõ  "dpkg -l  |grep libxyz"  rồi nếu thiếu chỉ cần " sudo apt-get install libxyz-dev "

Muốn ăn chắc ,xét trong tủ kho có không ,  " apt-cache search libxyz "  .Các gói có trong synaptic cũng dùng cache đó .

  Đôi khi tên thư viện thiếu không ...rõ ràng lắm  ,lúc đó phải google thêm và ráng suy nghĩ mà học !

Để thực hành một cách giáo khoa lớp ba ,sau đây ta sẽ cài ubuntu-7.10 - mới nguyên ,chưa thêm bớt chi- và ta tình nguyện biên dịch trình oprofile .
Tất cả các thao tác sau dùng command trong terminal cho dễ quan sát.

      1  tải mã  nguôn  :
             wget http://prdownloads.sourceforge.net/opro … 9.3.tar.gz
      2  tar xzf oprofile-0.9.3.tar.gz

         cd oprofile-0.9.3/

         ./configure

sẽ có khai báo
checking for C compiler default output file name... configure: error: C compiler cannot create executables

googles "C compiler cannot create executables"  thì được
           
             " One of the most aggravating errors I encountered while setting up a minimal Linux install was the C compiler cannot create executables from the configure command.

I solved this by installing the kernel-headers and glibc-devel packages"

Trong ubuntu họ để tất cả thứ đó dưới tên build-essential đầy đủ hơn vì có chèn thêm g++ và libstdc++6-4.1-dev  !(oprofile không dùng tới !)

     3  sudo apt-get install build-essential

  Gõ lại ./configure  thì được báo :
checking for poptGetContext in -lpopt... no
configure: error: popt library not found

  Gõ  dpkg -l |grep popt
ii  libpopt0                                   1.10-3build1                 lib for parsing cmdline parameters

tức là chỉ thiếu libopt-dev

      4  sudo apt-get install libpopt0-dev

./configure  tiếp thì báo

configure: error: liberty library not found  .Lỗi này khó nhai vì liberty thực ra là libiberty ,phải google đôi chút !

Gõ   sudo apt-get install binutils

Reading package lists... Done
Building dependency tree       
Reading state information... Done
binutils is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 143 not upgraded.

tức là chỉ thiếu binutils-dev

     5  sudo apt-get install binutils-dev

  Lần này ./configure không còn báo lỗi nữa .Chỉ cần gõ tiếp  make  là đi  uống bia

   Kết luân đừng quá hãi khi gặp lỗi : đọc kỹ khai báo ,làm như nó khuyến cáo ,bí thì google tí ti  .Bí quá hãi lên mạng hỏi
Vì nhiều câu hỏi quá sớm  đều chẳng được ai trả lời  !!

Last edited by wangji (06/12/2008 00:14)

22 Reply by wangji 14/12/2007 16:30

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                        Gỡ rối tơ tình với biên dịch ( tiếp theo : phần module ,kernel )

Vì oprofile cho phép thống kê toàn bộ hệ linux đang chạy ,từ môđun ,interrupt handlers tới các thư viện san xẻ -shared libs-  và trình binaries !
Đụng vào lõi như vậy ,tất nhiên lõi phải " biết" và phải có xe kéo -driver ,module- để trao đổi .
Khi ubuntu-7.10 được tạo, "họ"  đã chuẩn bị đủ trước các vấn đề này ,tức là
kernel đã "bật" -enabled-oprofile và đã có biên dịch oprofile.ko trong  /lib/modules/2.6.22-ubuntu710/...
(nếu thận trọng quan sát lúc configure_oprofile thì thấy dòng oprofile kernel supported  !)

Bài trước ta biên dịch oprofile ,nhưng không nói chi tới phần module này. Đây dặt vấn đè làm sao họ tạo ; có 2 trường hợp áp dụng
1 tạo lõi mới hơn cho ubuntu đang dùng
2 tạo  lõi có oprofile cho lõi chưa có : tỉ dụ sidux-2.6.20.1-slh-smp  ra cách đây đúng một năm .

Để tránh khó khăn,dễ nhất là tải đúng phiên bản kernel ta muốn bật oprofile từ ngõ kernel.org (cứ được gọi là lõi hương vanilla) ,chép config cũ ( từ /boot/config-xyz..hay /usr/src/linux-xyz/.config ) 
gọi "make menuconfig"  ,chui vào  "Instrumentation support" bật dạng Module cho dòng "OProfile system profiling (experimental)"
rồi make make modules_install như  thường lệ

  Với các ... trâu ngày nay làm vậy chưa đủ phải chạy thêm " update-initramfs -c -k 2.6.20.1"  để tạo initramfs phù hợp lõi mỡi này
(thay 2.6.20.1 bằng phiên bản của bạn,dĩ nhiên )


Vài điểm nên biết
1 nếu make menuconfig có lỗi ngay lúc đầu như
  scripts/kconfig/lxdialog/dialog.h:32:20: error: curses.h: No such file or directory
giải nó như mọi khi ( ! ) :
   sudo apt-get install libncurses5-dev

2 Không biết vì lý do nọ kia -làm không chính quy ??!-  phiên bản kernel mới cứ có thêm -cáigìđó-dirty  ,tỉ dụ với sidux làm không nghĩ ngợi
2.6.20.1-gd7fff6f4-dirty   mà bạn không muốn phiên bản xấu hổ đó thì trước khi gõ "make modules_install"  hãy đổi trong
$topSource/ include/config/kernel.release
xóa cái gd7fff6f4-dirty chẳng hạn ! (hack đơn giản nhất !)

3  Cũng như tất cả các tương tác giữa lõi và "dân gian" khác ,Oprofile dùng nguyên tắc hệ tệp ảo oprofilefs  móc trên thiết bị ảo để
dân gian được vô ngắm ngó ! Giống hệt như
procfs  móc trên /proc ,  sysfs móc trên /sys  , .Thiết bị ảo /dev/oprofile  được tạo ra khi ta chạy oprof_start  ,hay chạy daemon oprofiled
và hệ tệp ảo oprofilefs được móc ngay tại /dev/oprofile !!
Dân gian ngắm ngó với
"ls  /dev/oprofile "
hay " cat /dev/oprofile/stats/cpu0/sample_received " 
như chơi với /proc hay /sys
Muốn rõ hơn chỉ có cách đọc linux devices drivers cũ kỹ mà tuyệt tác

4  Dù mì ăn liền oprofile  của ubuntu-7.10  có vấn đề khi chạy GUI oprof_start !
Phải thay dòng đầu của /usr/bin/opcontrol  : chuyển từ /bin/sh  sang /bin/bash !!!

Lúc thành công

Last edited by wangji (06/12/2008 00:15)

23 Reply by wangji 20/12/2007 21:00

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                 thử cacti với ubuntu

  Cách đây trên 1 1/2 năm ,đã có sợi về netwrk của các cựu chiến binh vnoss
Tháng trước có câu than cacti với fedora ,vội tới cacti.net đọc....Như mọi khi,có người chạy ,có người than !

Sau khi cài với synaptic các thứ ..kho khó - snmp snmpd php5 mysql apache2 rrdtools - dùng kho Dotdeb  vì nó có nhiều mới cho php-* hơn là kho ubuntu ,tham lam cài cacti mới nhất,với cácpatch còn để ngoài
  Đọc tài liệu trong đó rồi chú trọng các điểm owner/permission của các thư mục rra/log cho cacti
thì được ảnh 1ảnh 2 cho cacti_ubuntu

Nhân tiện cũng xem tiếpmrtgvà  munin : munin dễ dùng nhất ,chẳng phải cấu hình chi

Nếu đã cài như cacti.net khuyến cáo ,mà rủi ro cấu hình cacti không xong thì lấy cacti mì ăn liền về mà thử

Last edited by wangji (06/12/2008 00:15)

24 Reply by wangji 27/12/2007 03:34

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                 Tạo bootable DVD : áp dụng với Fedora-8-Live-FEL-i686

Khi có ảnh iso bootable ,tạo cd hay dvd đều không vấn đề : "nếu chỉ ghi ảnh đó độc thân" . Để học với ubuntu ,tui đi xa hơn bước nữa :

   Tạo bootable cái iso đó cộng thêm nhiều bản nhạc việt kỷ niệm tiền-hậu chiến  và ghi tất cả trên đĩa 8.5Gb  dvd-R-DL  double layer cơ !!

     Cách đây không lâu đâu - cỡ 10 năm thôi - bộ ghi dvd giá 1000$  ,và đĩa ghi -viết một lần -write once - là 80$ một cái bánh đa !
Ngày nay rẻ hơn nhiều ,nhưng rủi ro tí ti là cũng tiêu 2-3$ như chơi : bánh đa không phồng,hóa thành tên thường gọi " coaster " . Dưới đây tui sẽ nhấn mạnh điểm cần làm -dù không biết giải thích một cách chắc chắn !

   Tui cố tình chọn cái ảnh Fedora-8-Live-FEL-i686.iso  ( mà sau đây chỉ gọi img.iso  cho khỏi mất công gõ mõ ! ) vì nó không giống như mọi cái ... trâu khác (không chạy được với qemu , tên ảnh nén không giống như mấy cái "knoppix" thông thường ,chữ liveimg  chẳng thấy mặt mũi trong thư mục iso9660 !!)

   1  tải về cáiFedora-8-Live-FEL-i686.iso

   2  ghi đơn giản nhất : cách ai cũng biết ;  (trong ubuntu)
                             cdrecord  /dev/scd0  img.iso

     hay                   growisofs  -Z /dev/dvd  img.iso

   3   trong thư mục ark  chép đầy "nhạc việt" ,chép tất cả thư mục có trong img.iso nữa (có 2 thư mục LiveOS  và isolinux )

     ( mount -oloop img.iso  /mnt  && cp -a /mnt/*  ark/ )  .

  Quan trọng :
   Tất cả các tên thư mục cho nhạc việt ghi chữ thường - không ghi chữ hoa -no capital letters - Thay chữ i thường của thư mục isolinux bằng I
chữ hoa .Lý do làm vậy để cho 2 thư mục của ảnh Fedora-FEL  đứng ngay trên hàng đầu trong thư mục ark ,trước hết tất cả các tên thư mục nhạc khác !
   Xoá tệp boot.cat trong thư mục Isolinux
  Kiểm tra bằng "du ark "  tất cả thư mục đó phải dưới 8.2Gb nếu dùng đĩa dvd-R-DL  8.5Gb (4.2Gb nếu dùng dvd thường ).
Với quyền root gõ trong thư mục ark -liên tục một dòng-(coi chừng có dấu chấm cuối dòng :"thư mục đang nằm" trong đó )

growisofs -Z /dev/dvd -V " Fedora-8-Live-FEL-i686" -R -J -iso-level 4  -allow-lowercase -b Isolinux/isolinux.bin -c Isolinux/boot.cat  -no-emul-boot
   -boot-load-size 4  -boot-info-table .

Nếu quặp khéo 2 ngón tay thì có các ảnh sau  1
2
  và  3
chụp từ đĩa livedvd vừa tạo !
  enjoy !

chú ý:
mỗi lần nhầm chuồng  là đĩa không bootable !  tuy nhạc việt mp3 vẫn nghe vô tư ! Không  mì ăn liền đâu
nếu không theo đúng chỉ dẫn !
Trên nguyên tắc growisofs cho phép viết tiếp -nó tự tìm chỗ- tức là có thể tạo lần đầu bootable fedora
rồi ghi tiếp lần sau với growisofs -M  các tệp nhạc  !!!Nhưng than ôi....địa điểm của mkisofs 'mần' trên các tệp làm cho dvd " lỡ chuyên đò"  sau khi ghi nhạc lần thứ hai này   !
Lỡ chuyến đò nghĩa là : một boot ra đi ,là chui vào shell ( của ramfs ) chứ chẳng còn fedora đâu nữa !

Last edited by wangji (06/12/2008 00:16)

25 Reply by wangji 31/12/2007 21:10

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                     Tạo quà tết 2008 :  đĩa ảo multiboot 3 đíttrâu

  mục tiêu
Sau khi tải về 3 iso
#wget http://downloads.sourceforge.net/detaol … lb_v04.iso
#wget http://www.my-plan.org/storage/puppyLin … -opera.iso
#wget ftp://ftp.is.co.za/linux/distributions/ … sl-3.3.iso
tạo đĩa ảo dsk rồi chỉ cần chạy qemu dsk là cho phép chọn một trong 3 ... trâu trên !
   ảnh 1   và ảnh 2

      thao tác tạo dsk
chạy lần lượt
predsk
mkdsk

cpdsk -dưới quyền root

      giải thích ngắn

Việc làm đĩa ảo bootable từ một ảnh iso đã có nhiều bài trong howto: ai thích build thật với ảo .Tạo đĩa ảo với nhiều phân vùng cũng có đó.
Muốn màu mè hệ tệp cho phân vùng trong đĩa ảo (formating filesystem) thì có 2 cách

   1 nhét đĩa ảo vào máy ảo rồi gọi mke2fs trong máy ảo -dễ nhất !-
(qemu -cdrom dsl.iso  -hda dsk  -boot d   ;sau đó mke2fs /dev/hdax  !!)

   2  Đĩa ảo -như đĩa thật,toàn đầy ô - block- như đống gạch xây nhà ,hay ô lưới đánh cá ! Muốn móc lưới trước khi có màu mè hệ tệp thì phải
lừa máy ,tạo thiết bị ảo ở dạng loopback device ; thiết bị ảo lúc đó là /dev/loopx ,móc thiết bị ảo với lệnh

                losetup  -o #offset  /dev/loopx   dsk   
rồi
                mke2fs  /dev/loopx

#offset định địa điểm phân vùng trong đĩa ảo dsk

sau đó móc lưới với
                mount  /dev/loopx   /điẻm_móc

scripts :
predsk  chuân bị các thư mục cần chép sang 3 phân vùng của đĩa ảo
mkdsk    tạo đĩa ảo có 3 phân vùng
cpdsk   chép các ... trâu rồi tạo bootloader với grub có trong ubuntu

     điểm đãc biệt
Tệp detaolb_v04.iso  có vấn đề gọi là hardcoded trong initramfs bó buộc phải đổi tí ti : đó là tệp initrmfs_v04wj.
Vấn đề này sẽ bàn trong bài tới (hardcoded này chỉ cho phép khởi động từ đĩa bánh đa cdrom ,nếu không đổi !)

       mì ăn liền ngoài các iso -lớn quá 50Mb mỗi cái - các script -kể cả script tổng kết dsk3distro dsk2vmware - có thể tải một gói

  enjoy !

Last edited by wangji (06/12/2008 00:16)

Topic options

RSS

Trang: 1 2 3 4 5

You must đăng nhập or đăng kí to post a reply

VnOSS forum » Thảo luận chung » Học với ubuntu


Jump to forum:
Thông báo Góp ý, báo lỗi ABC ... Thảo luận chung Lập trình Networking An toàn, bảo mật Multimedia, Entertainment, Desktop Cơ sở dữ liệu Howto Dịch thuật Service4fun(d) Việc làm - Doanh nghiệp - Thị trường Bản tin (obsolete) Vừa học, vừa chơi (La)TeX Ứng dụng & Dịch vụ của Google Các chủ đề khác Trash Hacao Linux FC-One

Powered by FluxBB

[ Generated in 0,672 seconds, 7 queries executed ]

  PageRank
Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp Tự động Chính tảBỏ dấu kiểu mới [ Bật/Tắt (F9) Ẩn/Hiện (F8) ]

Học với ubuntu (Trang 2 / 5)

Bài [26-50/123]

26 Reply by wangji 01/01/2008 21:43

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                  đĩa ảo multiboot 3 đíttrâu :tiếp theo

  detaolb từ iso  tới đĩa ảo dsk : câu chuyện harcoded của initramfs

  detaolb là cái tên chơi chữ của  C Mignon ,ra đời giũa năm 2007 (đọc ai thich build thật với ảo 10/04/07 ).Đọc ngược thành bloated có nghĩa là
" bế tắc "  ! Cái gì bế tắc ...phải hỏi anh ta  trên sfnet !

  Để quan sát chuyện vướng víu với initramfs của đĩa iso ,hãy chạy

     qemu dsk

Khi có đơn chọn 3 đíttrâu ,chọn detaolb  rồi gõ ngay "c"  để vào chế độ command line của grub (nếu không chọn c,thì sẽ boot ngay detaolb với initrmfs-wj)

Trong grub lần lượt gõ 
grub> kernel /lnx2621
grub> initrd  /initrmfs.v04
grub> boot
thì sẽ thấy ảnh 1ảnh 2

Lỗi báo  : can't cd to /live/mnt/cdrom/modules  .Đó là lý do chuyện hardcoded trong initrmfs.v04 của detaolb_v04.iso .

Muốn quan sát  ,phải tháo kho-nén (kho cpio và nén gzip ) cái initrmfs.v04 với lịnh

zcat ../initrmfs.v04 | cpio -i -d -H newc --no-absolute-filenames

đọc scrip "init" trong đó sẽ thấy

mkdir /live/mnt/cdrom
mount -o ro /dev/hdc /live/mnt/cdrom
cd /live/mnt/cdrom/modules

lúc chạy qemu dsk ,không có đĩa /dev/hdc mà cái tệp detaolb.iso mặc định coi là có trong cdrom ở /dev/hdc (master ide2 !) : harcoded !

Chỉ cần thay như :
#this is wangji modification to build virtual hda1 partition for detaolb_v04

mount -o ro /dev/hda1 /live/mnt/cdrom

để hda1 thay thế cho hdc  là sẽ tìm được các mođun để nạp !

Gói ghém lại với

find . | cpio -o -H newc | gzip > ../initrmfs_v04wj

là ăn tiền !

chú ý :khi vào console gõ root rồi startx

  Mọi chuyện trên đây có thể đưa vào một script tựa như

mount -oloop detaolb_v04.iso /mnt
  cp -a /mnt/*  temp/detaolb

mkdir temp/detaolb/tmp && cd temp/detaolb/tmp
zcat ../initrmfs.v04  | cpio -i -d -H newc --no-absolute-filenames
sed ' s/hdc/hda1/' init > init0
cp -f init0 init && chmod +x init
find .  | cpio -o -H newc | gzip -9 > ../initrmfs_v04wj
cd ..  && rm -fr tmp && cd ../../
 
  umount /mnt

Last edited by wangji (05/12/2008 23:45)

27 Reply by wangji 03/01/2008 02:14

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                  Tạo quà tết 2008 :  đĩa ảo multiboot 3 đíttrâu Hương vị vmware


   Để dành cho ai thích chí chuột  với vmware hơn là gõ mõ qemu ,sau khi tạo dsk_3đíttrâu ta chỉ cần chuyển sang dạng vmware biết đọc
hãy chạy

qemu-img convert dsk  -O vmdk  dk.vmdk

sẽ được tạo đĩa dk.vmdk khoảng 140Mb -chỉ những dữ liệu của 3 ... trâu -

TRong thư mục này tạo cái tệp cấu hình dk.vmx như sau ( bắt chước bài đã viết học với ubuntu 22/10/2007 dsl.vmx)

#!/usr/bin/vmware

guestOS = "linux"
displayName = "Ba ... trâu đùa bỡn vmx"
config.version = "7"
memsize = "256"

ide1:0.present = "TRUE"
ide1:0.fileName = "dsl.iso"
ide1:0.deviceType = "cdrom-image"

ide0:0.present = "TRUE"
ide0:0.filename = "dk.vmdk"
ide0:0.deviceType = "ata-hardDisk"

floppy0.present = "FALSE"
Ethernet0.present = "TRUE"
ethernet0.addressType = "generated"

sound.present = "false"
sound.autodetect = "false"
usb.present = "TRUE"

ethernet0.generatedAddress = "00:0c:29:07:90:2f"
sound.virtualDev = "sb16"
uuid.location = "56 4d 0f 5b a9 3f f1 8c-b1 bc 6c 9c 74 07 90 2f"
uuid.bios = "56 4d 0f 5b a9 3f f1 8c-b1 bc 6c 9c 74 07 90 2f"
ethernet0.generatedAddressOffset = "0"

tools.remindInstall = "TRUE"
ethernet0.connectionType = "bridged"

uuid.action = "create"
virtualHW.version = "3"
extendedConfigFile = "dsl.vmxf"
virtualHW.productCompatibility = "hosted"
tools.upgrade.policy = "manual"
ide0:0.redo = ""

thế là chạy với vmplayer ngon lành -chẳng phải xin sỏ ai cái đĩa vmdk :
ảnh 1  và
ảnh 2

chú thích :
đặc điểm của đĩa vmdk mà vmware "nhận con cái " là ở đầu dòng của đĩa ! Gõ " head -5  dk.vdmk"
để quan sát

Last edited by wangji (05/12/2008 23:46)

28 Reply by wangji 10/01/2008 00:24

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                            debian mips( mipsel )  debian_arm  với qemu

  Rất nhiều thiết bị router ethernet/adsl  v.v chạy cpu mips (/mipsel )  .  Mua development tools khá tốn  !  Muốn chơi mà chưa có "hàng" thì
chỉ có qemu là tiện nhất.
May là có anh chàng Aurelien  - một kỹ sư Pháp ở Lyon -cỡ 28 làm luận án thiên văn ,nhưng đã khá nhiều kinh nghiệm làm việc cho debian từ ...lâu ,tạo 2 cái howto
rất đầy đủ cho ai mới ...bắt tay vào

    1   Debian on an emulated MIPS(EL) machine

    2   Debian on an emulated ARM machine

  Tỉ dụ sau khi cài debian_mipsel

Last edited by wangji (05/12/2008 23:46)

29 Reply by wangji 15/01/2008 14:49

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                  Tin ngắn -thư nhà-

      1 Sách có thể tải về

   (nếu nhớ không nhầm Perens ngày xưa đã là dẫn đầu debian trong một năm !!)

      2  vui với olpc  !

Download:
http://xs-dev.laptop.org/~cscott/olpc/streams/ship.2/build653/devel_ext3/olpc-redhat-stream-ship.2-build-653-20071214_1708-devel_ext3.img.bz2

Then bunzip2 and run as:

#!/bin/sh

PORT=2221

QEMU_OPTIONS="-serial `tty` -redir tcp:$PORT::22 -soundhw es1370 -net user -net nic,model=rtl8139 -m 256"

qemu $QEMU_OPTIONS -hda /data/xo-653.img

# On XO Console do:
# passwd olpc
# ifup eth0
# On host do:
# ssh -o NoHostAuthenticationForLocalhost=yes -p 2221 olpc@localhost

Last edited by wangji (05/12/2008 23:47)

30 Reply by wangji 20/01/2008 21:03

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                         Lại bếp nước : nấu vài chiêu  "lẩu nhúng chim "


nhúng bao gồm cạcmẹ 10x10 cm , bộ nhớ, ethernet, GPIO và phần mềm firmware cho một lòai chim cpu . Tùy theo khung cảnh  ,"nhúng" nói chung, sẽ chỉ tới
phần mềm cho một chim_cpu !

  loài chim  chạy được với qemu-system :

armv4l  armv5l  i586  i686  m68k  mips  mipsel  powerpc  sparc  x86_64

                                      "nhúng" dùng trong xã hội có nhiều hơn desktopPC ,

dù rằng   embedded CPUs have largely been x86 and Power PC architectures.
ta sẽ chú trọng tới arm và mips

A  mục tiêu :

Vì mua nhúng  ít ra cũng từ 100 tới 300$ ,nếu  muốn có rẻ tiền chỉ có cách chơi trong máy ảo qemu .
Thông thường khi chơi máy ảo qemu là thử nghiệm một đíttrâu mới dạng livecd ,thì ra vẫn cùng loài chim x86  hay i386-i686 !
  Giả mạo "chim khác x86"  trên máy x86 đòi hỏi một số điều kiện ; chạy thử để xem là một chuyện , hiểu nó chạy như thế nào là chuyện khác !

  Cũng như nấu cơm ,thịt cá rau vẫn thế ,vậy mà lúc ăn vẫn thấy khác nhau ! Lẩu nhúng cpu cũng vậy  ! ăn vài bữa mới thấy hương vị lạ !
Trong các bữa "lẩu nhúng" tới ,ta sẽ chú trọng dùng qemu-usermode chứ không dùng qemu-system - ý nghĩa đó sẽ từ từ ngấm sau nhiều bữa ăn . 

                                                1  nhúng lồng chim ( tạm dịch  "embedded jail chroot" )

B cài đặt tối thiểu
     cài qemu trước -debian/ubuntu đều có -tỉ dụ
                 http://nl.archive.ubuntu.com/ubuntu/poo … 4_i386.deb ,
cài sau qemu-binfmt ,lấy từ

      http://dev.openbossa.org/mamona/qemu/qe … 3_i386.deb

Sau khi cài gõ thử

update-binfmts --display

để kiểm tra ,tỉ dụ một dòng như sau

qemu-arm (enabled):
     package = qemu
        type = magic
      offset = 0
       magic = \x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00
        mask = \xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff
interpreter = /usr/lib/qemu-binfmt/arm
    detector =

C cài gói cẩm nang nhúng :     tải và tháo nén gói

     http://people.vnoss.org/~wangji/embed_demo.tar.bz2

D Thử nghiệm
  Vào thư mục embed_demo  ,kiểm tra các lồng chim đang có với lệnh file

root@wangji-YellowFlagPc:~/chroot_debian/landley/embed_demo# file tools_arm/bin/busybox
tools_arm/bin/busybox: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), stripped
root@wangji-YellowFlagPc:~/chroot_debian/landley/embed_demo# file tools_armeb/bin/busybox
tools_armeb/bin/busybox: ELF 32-bit MSB executable, ARM, version 1, for GNU/Linux 2.4.0, dynamically linked (uses shared libs), stripped
root@wangji-YellowFlagPc:~/chroot_debian/landley/embed_demo# file tools_mips/bin/busybox
tools_mips/bin/busybox: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), dynamically linked (uses shared libs), stripped
root@wangji-YellowFlagPc:~/chroot_debian/landley/embed_demo# file tools_mipsel/bin/busybox
tools_mipsel/bin/busybox: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), dynamically linked (uses shared libs), stripped
root@wangji-YellowFlagPc:~/chroot_debian/landley/embed_demo# file tools_ppc/bin/busybox
tools_ppc/bin/busybox: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked (uses shared libs), stripped

đọc kỹ sau chữ ELF ....

Chạy thử một lồng chim với lệnh

./go arm

thì được vào lồng arm ,

gõ  uname -a sẽ có

Linux wangji-YellowFlagPc 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 armv5tel unknown
bash-2.05b#

Hãy thử vài lệnh quen thuôc như trên nhúng thật !

Last edited by wangji (05/12/2008 23:49)

31 Reply by wangji 21/01/2008 02:22

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                     Lẩu nhúng (tiếp)

                                                          Cấu trúc binfmt_misc kích họat lịnh

1  mục tiêu

  Khi dùng các tệp dạng "bin_elf" lõi nhận dạng và gọi đầu dịch ld-linux để "bắt tay" làm việc . Khi đụng tới trình đặc biệt cần có đầu dịch_nạp khác
tỉ dụ như trường hợp dùng chim_cpu khác với cpu của lõi ,lúc đó ta cần có một giải pháp thóat : đó là binfmt_misc  dài dòng nôm na binary format khác .
Vì thuộc lòai chim cpu khác nhau đầu dịch đó là đầu giả mạo cpu : nó là qemu-user-$ARCH  !
  Mối liên quan tới lõi đòi hỏi lõi phải có được biên dịch với hệ binfmt_misc enabled (đại đa số linux ngày nay có lõi như vậy )

2  cấu trúc tổ chức binfmt

  Hiện giờ không có chuẩn chính quy tổ chức .Tỉ dụ cũng cho các lọai chim cpu ở đây cái binfmt của scratchbox-preapophis  khác với cái ta đang dùng !!
Vậy đây chỉ mô tả cho trường hợp

qemu-binfmt_0.9.0-3_i386.deb

,tuy nhiên nguyên tắc làm việc vẫn đúng !

  Sau khi cài gói deb trên, phần chính nạp là

     a  /usr/lib/qemu-binfmt# ls
arm  armeb  i386  mips  mipsel  powerpc  qemu-run-binfmt  sparc

     b  /usr/sbin/update-binfmts

    c  /etc/init.d/binfmt-support

Khi trình update-binfmts được kích động ,nó sẽ tạo một hệ_tệp_lõi giống như hệ /proc  : tức là nếu phải tự kích bằng 2 ngón tay thì phải

modprobe binfmt_misc ; mount -t binfmt none /proc/sys/fs/binfmt_misc

Tất cả các thao tác liên quan tới binfmt sẽ qua trao đổi vơí  /proc/sys/fs/binfmt_misc như các hệ tệp lõi khác ! 

    d  /var/lib/binfmts$ ls
cli        qemu-arm    qemu-mips    qemu-powerpc
python2.5  qemu-armeb  qemu-mipsel  qemu-sparc

3  Cơ chế họat động

  Để dễ cụ thể giải thích ,ta hãi coi một thí dụ :  arm .


cat /proc/sys/fs/binfmt_misc/qemu-arm

enabled
interpreter /usr/lib/qemu-binfmt/arm
flags:
offset 0
magic 7f454c4601010100000000000000000002002800
mask ffffffffffffff00fffffffffffffffffeffffff

cho ta thấy lọai chim arm đã được đằng ký với lõi (enabled ) đầu dịch lịnh nằm tại /usr/lib/qemu-binfmt/arm


ls -ls /usr/lib/qemu-binfmt/arm

thì có /usr/lib/qemu-binfmt/arm -> qemu-run-binfmt

cái qemu-run-binfmt là trình_bao -wrapper để có giải pháp chọn giữa nhiều lọai chim cpu.
Chi tiết gói bao đó như sau
cat qemu-run-binfmt

#!/bin/sh

ARCH="`basename $0`"
CROSS_PREFIX=/usr/`dpkg-architecture -a$ARCH -qDEB_HOST_GNU_TYPE 2>/dev/null`
exec /usr/bin/qemu-$ARCH -L $CROSS_PREFIX "$@"

Các chuyện đăng ký lòai chim đều ghi vào sổ /proc/sys/fs/binfmt_misc/register  dưới dạng kho dữ liệu - một chuỗi ký tự với nhiều trường -
Tỉ dụ đăng ký bằng 2 ngón tay - không nhờ vả người khác thì gõ

echo ":qemu-arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:"\
"\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:"\
"/usr/local/bin/qemu-arm:" > /proc/sys/fs/binfmt_misc/register

Khi gọi lịnh busybox lõi nhận dạng là chim arm ,đọc kho xem có enabled rồi chuyền tay cho qemu-arm  ; chuyện nhận dạng là qua chuỗi ký tự magic

chú ý:
các điểm vừa kể có hiệu quả với các bài tới
với bài về "vào lồng chim" ,trước bài này,có một phần đúng ,nhưng tế nhị hơn ,vì phải có đầu dịch interpreter bên trong lồng !để có hiệu lực sau khi vào lồng !

Last edited by wangji (05/12/2008 23:50)

32 Reply by wangji 22/01/2008 05:05

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                              Lẩu nhúng (tiếp )          
                               2 mâm nhúng arm dựng với deboostrap


  Trên kho "đông băng" -debian- có đầy đủ  ,chỉ cần kéo về cho vào nồi vi ba hâm nóng ..thì tha hồ đầy mâm !

gõ  :

   

debootstrap --verbose --arch arm --foreign --variant=buildd sid sid-arm-chroot http://ftp.uk.debian.org/debian/

nó sẽ tạo và tải hệ rootfs_arm  vào trong thư mục

sid-arm-chroot

tại  chỗ đang ngồi !

chui vào thư mục sid-arm-chroot rồi chạy thử đại :

root@wangji-YellowFlagPc:~/chroot_debian/arm_dir/sid-arm-chroot# file bin/uname
bin/uname: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.6.12, dynamically linked (uses shared libs), stripped

chạy tiếp:

root@wangji-YellowFlagPc:~/chroot_debian/arm_dir/sid-arm-chroot# bin/uname -a

sẽ bị khai báo : Unable to load interpreter

lý do đơn giản là tuy binfmt_misc đã chạy như ý ,nhưng trình uname (nhúng arm) cần có thư viện - nằm trong sid-arm-chroot/lib - mà lõi không thể được báo cho qemu-arm ! (Cả 3 chuyện sid-arm-chroot ,qemu-arm và kernel đều đã được tạo hòan tòan độc lập !Muốn móc ngoặc tay với nhau phải có ai khai báo  !)

Vì qemu mặc định để đường dẫn tới đầu dịch-interpreter- ở điểm -L /usr/gnemul !! - ( chú ý đọc khi bật configure để biên dịch qemu  thì thấy nó )
bây giờ chỉ cần cóp lib (nhúng arm) này qua đó :

root@wangji-Yellinux-gnu:~/chroot_debian/arm_dir/sid-arm-chroot# mkdir /usr/arm-linux-gnu

root@wangji-YellowFlagPc:~/chroot_debian/arm_dir/sid-arm-chroot# cp -a lib /usr/arm-linux-gnu/

gõ :

root@wangji-YellowFlagPc:~/chroot_debian/arm_dir/sid-arm-chroot# bin/uname -a
Linux wangji-YellowFlagPc 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 armv5tel GNU/Linux

Tóm tắt giải thích :
Tất cả những chuyện trên ta vẫn nằm trong hộ chủ (i386)ẫ .Khi gõ bin/uname lõi nhận nó là nhúng arm ,gọi qemu-arm để mạo nhúng cpu_arm ,qemu-arm tìm
thư viện lib ở /usr/arm-linux-gnu/lib  kích họat lịnh 
rồi trao tay cho lõi !

Hãy so sánh với nhúng lồng chim  !  đây không có tị gì là chroot

Last edited by wangji (05/12/2008 23:51)

33 Reply by wangji 22/01/2008 16:16

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                       Lẩu nhúng (tiếp )      
                         3 nhúng arm ăn ghé mâm riêng deboostrap !


  Làm theo hướng dẫn của Aurelien Jarno http://www.aurel32.net/info/debian_arm_qemu thì sẽ có một mâm nhúng arm chạy với qemu-system-arm rất đầy đủ .
gõ 5 dòng sau

$ qemu-img create -f qcow hda.img 10G
$ wget http://people.debian.org/~aurel32/arm-v … -versatile
$ wget http://people.debian.org/~aurel32/arm-v … -versatile
$ wget http://ftp.de.debian.org/debian/dists/e … /initrd.gz

$ qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.18-5-versatile -initrd initrd.gz -hda hda.img -append "root=/dev/ram"

Khi hòan thành ,trong thư mục có

root@wangji-YellowFlagPc:~/chroot_debian/arm_dir/arm_aurelien# ls

hda.img    initrd.gz  initrd.img-2.6.18-5-versatile    vmlinuz-2.6.18-5-versatile

Thế cái hệ nhúng armfs đâu ? làm sao vào đọc nó ở hda.img ?   Ăn ghé được không  ?

1 Ta hãy quan sát cái rootfs nhỏ xíu trong initrd.gz: cái Etch-Debian-Installer.  Nó là một hệ linux nhúng nhỏ để cho phép chạy debootstrap

tháo nén rồi móc như

gunzip initd.gz && mount -oloop initrd  /mnt

vì bài trước ta đã chạy nhúng arm trong hộ chủ ,bây giờ thử tiếp :

wangji@wangji-YellowFlagPc:~/chroot_debian/arm_dir/arm_aurelien$ file /mnt/bin/uname
/mnt/bin/uname: symbolic link to `busybox'
wangji@wangji-YellowFlagPc:~/chroot_debian/arm_dir/arm_aurelien$ file /mnt/bin/busybox
/mnt/bin/busybox: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.4.1, dynamically linked (uses shared libs), stripped

wangji@wangji-YellowFlagPc:~/chroot_debian/arm_dir/arm_aurelien$ /mnt/bin/uname -a
Linux wangji-YellowFlagPc 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 armv5tel unknown

vậy mọi thứ chạy như ý

2 Để quan sát  hda.img hãy làm như đã quen biết

  umount /mnt rồi
root@wangji-YellowFlagPc:~/chroot_debian/arm_dir/arm_aurelien# mount -t ext2 -oloop,offset=32256 hda.img /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,

không được là vì hda.img được tạo dạng qcow  !  Cũng như các đĩa của vmware_vmdk  phải chuyển dạng sang lọai đĩa mua chợ Bến thành !!bằng

q emu-img  convert hda.img  -O raw hda.raw

sau đó

root@wangji-YellowFlagPc:~/chroot_debian/arm_dir# mount -oloop,offset=32256  raw.img  /mnt

chạy thử :

root@wangji-YellowFlagPc:~/chroot_debian/arm_dir/arm_aurelien# file /mnt/sbin/route
/mnt/sbin/route: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped
root@wangji-YellowFlagPc:~/chroot_debian/arm_dir/arm_aurelien# /mnt/sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.55.0    *               255.255.255.0   U     0      0        0 vmnet8
192.168.183.0   *               255.255.255.0   U     0      0        0 vmnet1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         WGT634U         0.0.0.0         UG    0      0        0 eth0

thế là vừa ăn ghé mâm ,vì ta đang chạy với qemu-arm usermode  !

Last edited by wangji (05/12/2008 23:52)

34 Reply by wangji 22/01/2008 18:47

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                  Lẩu nhúng ( tiếp )    
                               4 nhúng arm trên kho đông băng

Ra chợ đông băng mua về

tháo nén rồi thử : (như mấy lần trước  !)

dpkg -x busybox_1.1.3-4_arm.deb  tmp
file tmp/bin/busybox  kiểm tra thuộc chim arm
tmp/bin/busybox uname -a

thì có kết quả ...như ý : nhúng đông băng hâm lại vẫn ăn ngon !!

Tóm tắt so sánh trong và ngòai lồng chim arm .

  1  Trong lồng nhúng arm  ,mọi thứ hòan tòan thuộc lòai arm trừ cái /usr/lib/qemu-binfmt/qemu-arm-static và cái
/usr/lib/qemu-binfmt/arm --> qemu-arm-static .
  Lý do là khi vào lồng không còn nhìn thấy chi ngòai trời -hộ chủ -;vì thư viện hộ chủ mất ,không thể dùng được qemu-nostatic .

  2  Ngòai lồng qemu-shared hay nonstatic   cần có  thư viện nhúng đặt ở /usr/arm-linux-gnu/lib .Nếu muốn dùng thư viện ở chỗ khác thì phải khai báo với
qemu-arm khi gọi với option  -L Path thư viện nhúng


  Biên dịch qemu static không thể chỉ gõ configure với --static  !! Có kết quả ,nhưng không chạy đâu  !! Phải điền patch khá nhiều !

http://www.mail-archive.com/qemu-devel@ … 14659.html  EABI patch

 

wget http://fabrice.bellard.free.fr/qemu/qemu-0.8.2.tar.gz

    wget http://www.freaknet.org/martin/QEMU/pat … 147082-mg1

tháo nén rồi điền

    patch -p1 < patch.qemu-0.8.2_nptl-pb147082-mg1

    LDFLAGS=-pthread ./configure --prefix=/usr/local --target-list=arm-linux-user --static

2

      2a  http://www.mail-archive.com/qemu-devel@ … 14659.html

   

!!!nptl

hoặc lấy mì ăn liền :


   

Last edited by wangji (05/12/2008 23:53)

35 Reply by wangji 25/01/2008 01:10

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                               Lẩu nhúng ( tiếp)     
                                            Thịt cá  firmware .

Để giới thiệu thịt cá hãi mượn cái netgear wgt634u và gắn vào đầu chuôi serial console .Đăng ký với tên root và mật khẩu của admin của người cho mượn

Trang đầu cho biết là cái nhúng này xuât hiện từ lrp prọject  dự án linux router project   
WGT634U: -hoan-
$ help

                           LEAF "Bering"

This is a very simple doc file provided with the base root.
For more complete documentation go to: 
http://leaf.sourceforge.net/devel/jnilo

gõ  thì thấy nhúng dùng cpu hãng Broadcom BCM947xx

# uname -a
Linux WGT634U 2.4.20 #1 Tue Dec 21 18:34:51 CST 2004 mips unknown
# cat /proc/cpuinfo                                                             
system type             : Broadcom BCM947XX                                     
processor               : 0                                                     
cpu model               : BCM3302 V0.7                                         
BogoMIPS                : 199.88


$ cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00060000 00020000 "cfe"
mtd1: 00020000 00020000 "config"
mtd2: 00140000 00020000 "linux"
mtd3: 00620000 00020000 "jffs"
mtd4: 00020000 00020000 "nvram"

cho thấy các phân vùng của đĩa mtd

móc thử phân vùng 3

# mount /dev/mtdblock3 /mnt

thì mọi chuyện rõ quá : lrp chỉ là một dạng nén như tar.gz để khỏi tốn bộ nhớ

# ls /mnt
boa.lrp             ezipupd.lrp         modules.lrp         rp-pppoe.lrp
bpalogin.lrp        firmware.version    nfqueue.lrp         samba.lrp
bridge.lrp          gpio.lrp            ntpdate.lrp         shorwall.lrp
dhcpcd.lrp          hotplug.lrp         ppp.lrp             smtpclient.lrp
dhcpd.lrp           iptables.lrp        pppoe.lrp           telnetd.lrp
dnsmasq.lrp         linuxigd.lrp        pptp.lrp            wgt634u-gui.lrp
dropbear.lrp        lrpkg.cfg           proftpd.lrp         wireless-tools.lrp
etc.lrp             mawk.lrp            root.lrp            zebra.lrp
------------

wrt_firmware/wgt/jffs# cat firmware.vers

device : WGT634U
version : 1.4.1.9
date : 2004.12.21
company : DNI.Taiwan

Xem thử phân vùng 1:

# mount /dev/mtdblock1 /mnt
# ls /mnt
config.lrp

# pwd
/root

WGT634U: -root-

WGT634U: -root-
# ls
etc

WGT634U: -root-
# ls etc
TZ                   hosts.allow          run_proftpd_on_boot
autoshow             linuxigd             run_upnpd_on_boot
cron.d               network              samba
default              nfqueue              shadow
dhcpc                ntp.conf             shorewall
dhcpd.conf           passwd               usb_account.conf
email                ppp                  wan_mac.conf
enable-ez-ipupd      proftpd.conf         wireless
ez-ipupd.conf        resolv.static1       wireless.conf
forward_or_trigger   resolv.static2       zebra
hostname             run_dhcpd_on_boot

# cat etc/resolv.static1
nameserver 80.10.246.2
đây là ip dịch vụ đang dùng


# cat etc/usb_account.conf
hoan,/share/partition1/,Enabled,Read & Write



WGT634U: -root-
  bài tới sẽ tìm hiểu cấu trúc phần jffs

Last edited by wangji (05/12/2008 23:53)

36 Reply by wangji 25/01/2008 01:19

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                       Lẩu nhúng ( tiếp )            
                                                thịt cá firmware  : cấu trúc

Đây tin hiển thị trên console khi khởi động cái router netgear wgt634 (giống như phần dmesg bên linux )

Flash device: 0x800000 at 0x1c000000
Physically mapped flash: Couldn't find valid ROM disk image
Creating 5 MTD partitions on "Physically mapped flash":
0x00000000-0x00060000 : "cfe"
0x00060000-0x00080000 : "config"
0x00080000-0x001c0000 : "linux"
0x001c0000-0x007e0000 : "jffs"
0x007e0000-0x00800000 : "nvram"

Điểm nay giống như khi khởi linux ,lõi nhận ra IDE đĩa hd .Nếu đang ngồi trên console chỉ cần gõ

$ cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00060000 00020000 "cfe"
mtd1: 00020000 00020000 "config"
mtd2: 00140000 00020000 "linux"
mtd3: 00620000 00020000 "jffs"
mtd4: 00020000 00020000 "nvram"

Chữ mtd dùng đây hơi mập mờ ,là vì có chỗ khác như /dev/mtd trỏ thiết bị mtd_char_device ,bên cạnh /dev/mtdblock trỏ thiết bị mtd_block_device .
Rồi mtd có nghĩa thưở ban đầu là kỹ năng bộ nhớ memory technology device !! Ở đây mtd đáng lẽ phải viết mtdpartition  ,song song với dòng
cat /proc/partitions  để đọc các phân vùng đĩa đang có trên máy PC .Cũng vậy cat /proc/mtd  đọc các phân vùng hiện có trên máy nhúng !
Nhưng đó là thừa kế hồi số người dùng mtd và máy nhúng đếm trên 2 bàn tay !

CFE
  Common Firmware Environment do hãng Broadcom khai triển cho các nhúng 64 bit  SB1 (swarm) và 32 bts  BCM47xx  SOCs .Coi cái đó là loader_bios
như bên pc http://www.linux-mips.org/wiki/CFE
(một loài khác là Redboot -nổi tiếng-  dùng làm bootLoader do SSV Embedded Systems   )
Cái CFE này -cũng như bios bên pc- trên nguyên tắc được bảo toàn bằng một "bit cấm viết" có trong hệ mtd (Giống như ngày xưa với uP 8bits hay MCU
-microcontrollerunit- cũng có bit an toàn cho hệ mềm firmware họ bán,để tránh người dòm ngó ,hay thay đổi bậy bạ !)

"config" Dữ liệu ghi lại sau khi cấu hình cái router cho hoàn cảnh người dùng -dịch vụ,đăng nhập,mật khẩu an toàn....-

linux  lõi cho linux

jffs
  hệ tệp nén -như rootfs thừơng lệ-để phục vụ máy .Dạng jffs/jffs2 là một dạng hệ tệp đặc biệt-khác với ext2,reiserfs...vv nhưng cũng thuộc loài
journalling jffs=journalling flash filesystem đặc biệt cho nhúng embedded device .Nếu hiểu không sai thì loại nhớ này dể hư hỏng - bị thủng lỗ-
sau một số lần viết trên bit ,vì điện thế cao dùng để nạp điện tử với hiệu ứng hầm Củ Chi, đôi khi đục màng cách điện !
Để tránh viết hoài trên một ô nhớ ,hệ tệp tạo điều kiện để ô nhớ nào cũng có sc xuât được dùng tương tự như các ô khác ! Điểm này cho phép kéo dài đời sông bộ nhớ đôi chút !
(cái khoá usb_key cũng có vấn đề tương tự !)

nvram cho phép lưu ghi tham số (không chác họ có dùng trong wgt634u)

Cái người ta gọi thịt cá firmware  là gói bao gồm /config/linux/jffs/nvram  ! Cái cfe ? khó hiểu vì trên nguyên tắc không ai thay cfe khi dùng thịt cá mới
cũng như không ai đổi bios khi đổi linux !

một dạng khác -cái NAS network attached storage  nslu2
root@LKG7C2ADF:~# cat /proc/mtd                                                 
dev:    size   erasesize  name                                                 
mtd0: 00040000 00020000 "RedBoot"                                               
mtd1: 00020000 00020000 "SysConf"                                               
mtd2: 00100000 00020000 "Kernel"                                               
mtd3: 00020000 00020000 "Ramdisk"                                               
mtd4: 00660000 00020000 "Flashdisk"                                             
mtd5: 00020000 00020000 "FIS directory"

Các máy nhúng dân dụng thuộc loại phát triển nhanh ,thay đổi nhanh ;Sau vài tháng ra đời thường có upgrade sửa  bọ ! Trên trạm hãng sản xuât họ để
xyz.img là thịt cá để tải.Cho mỗi loài nhúng họ thường hướng dẫn cách nâng cấp upgrade qua tftp và giây cáp ethernet !
Nếu toàn bộ phần mềm có trong thịt cá đó sao ta không loay hoay lọ mọ đọc nó trên bất kỳ cái ubuntu nào !

Với đồ đĩa ảo linux thừơng thì có thể móc đĩa ảo qua cơ chế thiết bị loopback .Nhưng buôn thay ,chưa ai viết thiết bị loopback cho mtd !
Vậy  nếu muốn đọc thịt cá xyz.img  phải loay hoay nạp vào thiết bị blockmtd .

cat  image.jffs > /dev/mtdblockn   thay thế cho  losetup  /dev/loopn image.ext2


  Hãy làm như sau
: (trên ubuntu thường chư có cài mtd...vậy phải tạo các inode cần thiết cho thiết bị...ảo )

#mknod /dev/mtd0 c 90 0
#mknod /dev/mtdblock0 b 31 0
#modprobe  mtd  mtdram  mtdblock  jffs2

# lsmod |grep mtd
mtdblock                6656  0
mtd_blkdevs             9984  1 mtdblock
mtdram                  4612  0
mtd                    17412  5 jffs2,mtd_blkdevs,mtdram

dd if=firmware.img of=/dev/mtdblock0 bs=1 skip=1310720

Thú thật ,tui không nhớ ai đã tìm ra cái skip có giá trị như vậy .Nguyên tắc là phần kernel ramdisk không thuộc jffs ,vậy phải nhảy qua sông khi nạp vào thiết bị ảo 

mount -tjffs2 /dev/mtdblock0 /mnt

gõ:
root@wangji-YellowFlagPc:~/chroot_debian/wrt_firmware/wgt# ls /mnt

boa.lrp       dhcpcd.lrp   etc.lrp           gpio.lrp      linuxigd.lrp  modules.lrp  ppp.lrp    proftpd.lrp   samba.lrp       telnetd.lrp         zebra.lrp
bpalogin.lrp  dhcpd.lrp    ezipupd.lrp       hotplug.lrp   lrpkg.cfg     nfqueue.lrp  pppoe.lrp  root.lrp      shorwall.lrp    wgt634u-gui.lrp
bridge.lrp    dnsmasq.lrp  firmware.version  iptables.lrp  mawk.lrp      ntpdate.lrp  pptp.lrp   rp-pppoe.lrp  smtpclient.lrp  wireless-tools.lrp

Đuôi lrp thực ra là dạng nén tar.gz  !chỉ cần bung nén với tar xzf abc.lrp 

Tất cả các gói nén lrp trên được bung ra khi khởi máy nhúng router 
root@wangji-YellowFlagPc:~/chroot_debian/wrt_firmware/wgt# cat /mnt/firmware.version
device : WGT634U
version : 1.4.1.9
date : 2004.12.21
company : DNI.Taiwan

Last edited by wangji (05/12/2008 23:54)

37 Reply by wangji 25/01/2008 01:22

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                    Lẩu nhúng ( tiếp )          
                                       thịt cá firmware :thực hành

        1 Hãng chính quy

http://wiki.openwrt.org/OpenWrtDocs/Har … ar/WGT634U
http://network.free-driver-download.com … 4.1.9.html

unzip  wgt634u_1_4_1_9.zip
root@wangji-YellowFlagPc:~/chroot_debian/wrt_firmware/wgt# umount /mnt
root@wangji-YellowFlagPc:~/chroot_debian/wrt_firmware/wgt# dd if=wgt634u_1_4_1_9.img of=/dev/mtdblock0 bs=1 skip=1310720
3408024+0 records in
3408024+0 records out
3408024 bytes (3.4 MB) copied, 5.89343 seconds, 578 kB/s
root@wangji-YellowFlagPc:~/chroot_debian/wrt_firmware/wgt# mount -tjffs2 /dev/mtdblock0 /mnt
root@wangji-YellowFlagPc:~/chroot_debian/wrt_firmware/wgt# ls /mnt
boa.lrp       dhcpcd.lrp   etc.lrp           gpio.lrp      linuxigd.lrp  modules.lrp  ppp.lrp    proftpd.lrp   samba.lrp       telnetd.lrp         zebra.lrp
bpalogin.lrp  dhcpd.lrp    ezipupd.lrp       hotplug.lrp   lrpkg.cfg     nfqueue.lrp  pppoe.lrp  root.lrp      shorwall.lrp    wgt634u-gui.lrp
bridge.lrp    dnsmasq.lrp  firmware.version  iptables.lrp  mawk.lrp      ntpdate.lrp  pptp.lrp   rp-pppoe.lrp  smtpclient.lrp  wireless-tools.lrp

root@wangji-YellowFlagPc:~/chroot_debian/wrt_firmware/wgt# cat /mnt/firmware.version
device : WGT634U
version : 1.4.1.9
date : 2004.12.21
company : DNI.Taiwan

Last edited by wangji (05/12/2008 23:55)

38 Reply by wangji 25/01/2008 15:43

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                        Lẩu nhúng ( tiếp )    
                                          6 Nhúng openwrt

     1
    Tải về  svn_openwrt_kamikaze

sẽ có một thư mục khỏang  89Mb

    2

Chạy  make menuconfig để cấu hình nhúng . Nếu bị than phiền libncurses thì cài nạp libncurses-dev  với synaptic để dễ có GUI menu .
build with make menuconfig choose maily target architechture as

CONFIG_HAVE_DOT_CONFIG=y
CONFIG_TARGET_brcm_2_4=y
CONFIG_TARGET_brcm_2_4_Atheros=y
CONFIG_LINUX_2_4_35=y
CONFIG_LINUX_2_4=y
CONFIG_PCI_SUPPORT=y
CONFIG_PCMCIA_SUPPORT=y
CONFIG_USB_SUPPORT=y
CONFIG_USES_SQUASHFS=y
CONFIG_mipsel=y
CONFIG_TARGET_ROOTFS_SQUASHFS=y
CONFIG_ALL=y

3

Sau một thời gian - khá lâu - thì có thể thử được như sau :

~/chroot_debian/openwrt-svn12jan08/build_dir/mipsel/OpenWrt-ImageBuilder-brcm-2.4-for-Linux-i686/packages$
wangji-YellowFlagPc:~/chroot_debian/openwrt-svn12jan08/build_dir/mipsel/OpenWrt-ImageBuilder-brcm-2.4-for-Linux-i686/build_dir/linux-brcm-2.4$ls
fs_mark  loader.elf  loader.gz  root.ext2  root.squashfs  tmpfile.1  vmlinux  vmlinux.elf  vmlinux.lzma

root@wangji-YellowFlagPc:~/chroot_debian/openwrt-svn12jan08/build_dir/mipsel/OpenWrt-ImageBuilder-brcm-2.4-for-Linux-i686/build_dir/linux-brcm-2.4# mount -oloop  root.ext2 /mnt

root@wangji-YellowFlagPc:~/chroot_debian/openwrt-svn12jan08/build_dir/mipsel/OpenWrt-ImageBuilder-brcm-2.4-for-Linux-i686/build_dir/linux-brcm-2.4# ls /mnt
bin  dev  etc  jffs  lib  lost+found  mnt  proc  rom  root  sbin  sys  tmp  usr  var  www

get rootfs to mipssvn/   

#cp -a /mnt/*  /home/wangji/chroot_debian/mips_dir/mipssvn/

root@wangji-YellowFlagPc:~/chroot_debian/mips_dir/mipssvn# ls
bin  dev  etc  jffs  lib  lost+found  mnt  proc  rom  root  sbin  sys  tmp  usr  var  www

root@wangji-YellowFlagPc:~/chroot_debian/mips_dir/mipssvn# ls bin
ash      chgrp  cp    df     egrep  firstboot  gzip       ln     ls     mktemp  netmsg   pidof  ps   rmdir  sleep  touch  umount  zcat
busybox  chmod  date  dmesg  false  grep       ipcalc.sh  lock   mkdir  mount   netstat  ping   pwd  sed    sync   true   uname
cat      chown  dd    echo   fgrep  gunzip     kill       login  mknod  mv      nice     ping6  rm   sh     tar    uci    vi

gõ thử như mọi khi :

root@wangji-YellowFlagPc:~/chroot_debian/mips_dir/mipssvn# file bin/uname
bin/uname: symbolic link to `busybox'

root@wangji-YellowFlagPc:~/chroot_debian/mips_dir/mipssvn# file bin/busybox
bin/busybox: ELF 32-bit LSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), corrupted section header size

root@wangji-YellowFlagPc:~/chroot_debian/mips_dir/mipssvn# bin/busybox uname -a
Linux wangji-YellowFlagPc 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 mips unknown

root@wangji-YellowFlagPc:~/chroot_debian/mips_dir/mipssvn# bin/busybox

BusyBox v1.8.2 (2008-01-12 23:15:08 CET) multi-call binary
Copyright (C) 1998-2006 Erik Andersen, Rob Landley, and others.
Licensed under GPLv2. See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as!

Currently defined functions:
        [, [[, arping, ash, awk, awx, basename, bunzip2, bzcat, cat, chgrp, chmod, chown, chroot, clear, cp, crond, crontab, cut, date, dd,
        df, diff, dirname, dmesg, du, echo, egrep, env, expr, false, fgrep, find, free, grep, gunzip, gzip, halt, head, hexdump, hostid, httpd,
        id, ifconfig, init, insmod, ipkg, kill, killall, killall5, klogd, length, less, ln, lock, logger, logread, ls, lsmod, md5sum, mesg,
        mkdir, mkfifo, mknod, mktemp, mount, mv, nc, netmsg, netstat, nice, nslookup, passwd, pgrep, pidof, ping, ping6, pivot_root, pkill,
        poweroff, printf, ps, pwd, rdate, reboot, reset, rm, rmdir, rmmod, route, sed, seq, sh, sleep, sort, start-stop-daemon, strings, switch_root,
        sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, time, top, touch, tr, traceroute, true, udhcpc, umount, uname, uniq,
        uptime, vconfig, vi, watchdog, wc, wget, which, xargs, yes, zcat

Nếu muốn tạo lồng chim -để chroot- thì phải điền thêm trong thư mục mipssvn
/mipsel_svn/usr/lib/qemu-binfmt$ ls -ls
total 2899
   0 lrwxrwxrwx 1 root   root        18 2008-01-19 16:38 mipsel -> qemu-mipsel-static
2086 -rwxr-xr-x 1 wangji wangji 2130035 2008-01-13 13:28 qemu-mipsel
813 -rwxr-xr-x 1 wangji wangji  830280 2007-04-27 19:56 qemu-mipsel-static
wangji@wangji-YellowFlagPc:~/chroot_debian/mips_dir/mipsel_svn/usr/lib/qemu-binfmt$

Để thử như là có một mips trước mặt chỉ gõ - chủ gõ root nhé-

#chroot . /bin/ash

BusyBox v1.8.2 (2008-01-18 23:11:52 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

gõ tiếp
/ # mount -tproc proc /proc
/ # echo " nameserver 192.168.1.1" > /etc/resolv.conf
/ # ping vnoss.org
PING vnoss.org (66.35.250.210): 56 data bytes
Unsupported setsockopt level=65535 optname=6
Unsupported setsockopt level=65535 optname=8
64 bytes from 66.35.250.210: seq=0 ttl=49 time=204.709 ms

ping máy treo ,nhưng wget gì đó chạy vô tư !

Last edited by wangji (05/12/2008 23:56)

39 Reply by wangji 27/01/2008 02:35

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                          Lẩu nhúng ( tiếp )      
                                         Để thử nghiệm cái lồng chim sid-arm

Sau khi chạy deboostrap

debootstrap --verbose --arch arm --foreign --variant=buildd sid sid-arm-chroot http://ftp.uk.debian.org/debian/

Để khi chroot vào lồng chim có hiệu ứng với binfmt nhớ lấy về qemu-arm-static từ

và chép nó vào thư mục /usr/lib/qemu-binmt của sid-arm-chroot như sau đây

root@wangji-YellowFlagPc:/# ls /usr/lib/qemu-binfmt/ -ls

   0 lrwxrwxrwx 1 root root      23 Jan 27 10:51 arm -> qemu-mamona-0.90-static
765 -rwxr-xr-x 1 1000 1000  780424 Apr 27  2007 qemu-mamona-0.90-static

Chạy chroot sid-arm-chroot
thế là chroot vào lồng chim ;

Cần sửa tệp /etc/resolv.conf của "sid-arm-chroot" để có gateway_IP

I have no name!@wangji-YellowFlagPc:/# cat /etc/resolv.conf
# generated by NetworkManager, do not edit!


nameserver 192.168.1.1

và điền nguồn tìm tòi debian_arm và /etc/apt/sources.list như

I have no name!@wangji-YellowFlagPc:/# cat /etc/apt/sources.list


Kéo về và cài

dpkg -i apt_0.7.10_arm.deb

rồi tha hồ apt-get install

Loay hoay một lúc thì có:

I have no name!@wangji-YellowFlagPc:/# gcc -v
Using built-in specs.
Target: arm-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --disable-libmudflap --disable-libssp --enable-checking=release --build=arm-linux-gnu --host=arm-linux-gnu --target=arm-linux-gnu
Thread model: posix
gcc version 4.2.3 20080114 (prerelease) (Debian 4.2.2-7)

và có

I have no name!@wangji-YellowFlagPc:/# g++ -v
Using built-in specs.
Target: arm-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --disable-libmudflap --disable-libssp --enable-checking=release --build=arm-linux-gnu --host=arm-linux-gnu --target=arm-linux-gnu
Thread model: posix
gcc version 4.2.3 20080114 (prerelease) (Debian 4.2.2-7)
I have no name!@wangji-YellowFlagPc:/#

chú ý : nhìn cho kỹ ;ngồi trên máy chủ YellowFlag ,chroot vào sid-arm gcc cho hay
build/host/target  cả ba đều là arm-linux-gnu  !!
(So sánh với ai có máy thật !)

Gỡ nan giải:
nếu gặp lỗi sau

Could not perform immediate configuration (2) on libc6

gõ :

dpkg --force-depends -i /var/cache/apt/archives/libc6_2.7-6_arm.deb

( tới libc6_  gõ tab nó sẽ tiếp cho ) sau đó
apt-get -f install   là ...giải nan !!

Last edited by wangji (05/12/2008 23:57)

40 Reply by wangji 02/02/2008 19:17

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                         Lẩu nhúng (tiếp )                               
                                            Biên dịch hệ nén squashfs-lzma

                                                          1 Giới thiệu
   Tạo hệ tệp nén có thể đọc mà không bung ra trước khi đọc - read on the fly - Đây là hệ nén hữu hiệu nhất hiện nay .
Ngày xưa zlib ,cramfs ,zisofs đã chạy từ ...lâu lắm (dùng trong cd-rescue của P Anvin - tác giả sys/isolinux chẳng hạn !)
Sau đó Knoppix đã cho nổi bật hệ nén cloop từ 2003 tuy loop.c viết từ 1993 bởi Theodore Ts'o ,biến sang compressed_loop.c nhờ Paul "Rusty" Russel,rồi Knopper đã thực hiện livecd Knoppix huy hòang ; cloop được bồi dưỡng tới dạng ngày nay nhờ Alex de Landgraaf - tác giả Morphix-  !!
Hệ squashfs ra đời với cha đẻ Phillip Lougher cuối 2002 phiên bản V1.0 ,tới nay V3.3 gần như hòan hảo ;Ngay từ ban đầu để tránh sấm sét Linus ,
P Lougher đã sử dụng zlib có sẵn trong lõi-kernel- .Thế mà sau một hy vọng quá ngắn ngủi squashfs được đưa vào lõi 2.5.x khỏang trung 2004,rồi lại bị rút ra ,(tuy bối cảnh khác hẳn với lịch sử cdrecord của Joerg Schilling http://cdrecord.berlios.de/old/private/linuxscsi.html)
Ngay cuối 2003 squashfs được quần chúng livecd coi sẽ thay thế cho cloop;thế là knoppix_livecd tách ra 2 nhánh -cloop và squashfs -
(PrometheusX của nhóm Brasil chắc là cái "livecd dùng squashfs đầu tiên"  ra đời xuân 2004 !Physicstools nhóm vietlug cũng ra đầu hè 2004. Coi hướng dẫn )
Trích từ squashfs_readme

Ubuntu liveCD performance tests

ext3 uncompressed size      1.4 GB
   Zisofs compressed size      589.81 MB
   Cloop compressed size       471.89 MB
   Squashfs2.0 compressed size 448.58 MB
   Squashfs2.1 compressed size 448.58 MB

Áp dụng "lzma thuật nén" có cha đẻ Igor Pavlov nổi tiếng với ký tự "7-zip" -(dạng nén mở 7z) -,độ nén cao đã thu hút chàng trẻ tài năng  Junjiro Okajima  -tác giả của aufs ,một
dạng mới thay cho unionfs,- tạo các tấm vá biến sang dạng squashfs-lzma .
Khi nào sẽ có livecd_squashfs-lzma ?* Chắc phiên bản slax-7 sắp tới -hiện tại slax6 có aufs- slax có cha để Tomas Matejcek được giải thửơng bên Czech

Có điều nên chú ý là càng nén cao xa thì càng chậm khi chạy đọc !Và càng nén cao xa thì càng cần nhiều bộ nhớ ,vì phải chứa từ điển to lớn hơn !(dictionary các ký tự nén !)

Cái điều quan trọng với hệ nén cao không phải cho livecd mà thực tế cho ngành máy nhúng !  http://wiki.openwrt.org/TableOfHardware
Các máy nhúng thường có Flash-bộ nhớ từ 2/4/8MB  Ram từ 8/16/32MB :ghi hết các hệ linux cho dưới 8MB đòi hỏi nhìn đủ mọi góc cạnh,kể cả hệ nén !

http://www.squashfs-lzma.org/

method     block size     Slax data size     percent
uncompressed     -     668 MB     100%

mksquashfs+gzip     64KB     227 MB     34%
mksquashfs+gzip     1024KB     222 MB     33%
mksquashfs+lzma     64KB     191 MB     28%
mksquashfs+lzma     128KB     184 MB     27%
mksquashfs+lzma     512KB     172 MB     26%
mksquashfs+lzma     1024KB     167 MB     25%

ghi chú :
*
  Nhờ bác maikhai tòi ra là Nimblex đã dùng squashfs-lzma cuối 2007 !

Last edited by wangji (05/12/2008 23:58)

41 Reply by wangji 02/02/2008 19:22

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                Biên dịch hệ nén squashfs-lzma (tiếp )

                 2 Cách thức biên dịch

  Hệ nén squashfs-lzma đòi hỏi lõi được vá víu ,và các modules  -xe kéo- nạp khi dùng .Như ta vẫn biết module bó buộc phải được biên dịch cùng với lõi sẽ dùng ; Tỉ dụ ta đang có ubuntu-7.10 ,lõi đó chưa được vá vậy lõi đó sẽ không thể nạp module sqlzma ;muốn dùng thì phải biên dịch lại lõi của ubuntu với các vá liên quan tới squashfs-lzma ,khởi lại máy với lõi đã vá , rồi biên dịch module và tiện ích với lõi mới này !!

  Nhân dịp lõi 2.6.24 ra đời cuối 2007,nên lợi dụng cơ hội này nâng cấp cho ubuntu : lõi 2.6.24-sqlzma !

                3 Nguyên liệu thô cần tải về (từ http://www.squashfs-lzma.org/ )
   
squashfs 3.3 (+ CVS fixes)
LZMA SDK 4.57
SquashFS-LZMA patches
linux kernel 2.6.24 or higher


                4 Chuẩn bị cho modules squashfs  và lzma

Vào thư mục  /home/~user/ tháo lần lượt :
  tar -xjf  sqlzma3.3-457-wj.tar.bz2
  tar -C  sqlzma3.3-457 -xzf  squashfs3.3.tgz
  mkdir sqlzma3.3-457/lzma457
  tar -C  sqlzma3.3-457lzma457  -xjf  lzma457.tar.bz2
 
patching Vá các nguồn modules (sqlzma unlzma and liblzma là các gói sẽ được dùng)

cd   ~/sqlzma3.3-457/lzma457 && ~/sqlzma3.3-457-wj/lzma457# patch -p1 < ../sqlzma1-449.patch
patching file C/Compress/Lzma/kmod.mk
patching file C/Compress/Lzma/sqlzma.mk
patching file C/Compress/Lzma/testflags.c
patching file C/Compress/Lzma/uncomp.c
patching file C/Compress/Lzma/kmod/Makefile
patching file C/Compress/Lzma/kmod/module.c
patching file CPP/7zip/Compress/LZMA_Alone/comp.cc
patching file CPP/7zip/Compress/LZMA_Alone/sqlzma.mk

patching vá lzma cho squashfs-tools (mksquashfs/unsquashfs là tiện ích nén/bung)

cd ~/sqlzma3.3-457/squashfs3.3 && sqlzma3.3-457/squashfs3.3# patch -p1 < ../sqlzma2u-3.3.patch
patching file squashfs-tools/Makefile
patching file squashfs-tools/mksquashfs.c
patching file squashfs-tools/read_fs.c
patching file squashfs-tools/unsquashfs.c

chú ý : lý do dùng sqlzma3.3-457-wj.tar.bz2 là vì khi tôi dùng cái sqlzma3.3-457.tar.bz2 của trạm www.squashfs-lzma.org không vá hòan hảo -rách rưới có các vụn xyz.rej -rejected - Rất có thể họ đã sửa .Nhưng nếu lấy vá chỗ đó còn lỗi thì...dùng tạm cái vá đã sửa -wj

Last edited by wangji (05/12/2008 23:59)

42 Reply by wangji 02/02/2008 19:28

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                Biên dịch hệ nén squashfs-lzma ( tiếp )

                                                                5 Biên dịch lõi 2.6.24
 
A Bung nén lõi :

tar -C /usr/src/ -xjf  linux-2.6.24.tar.bz2
ln -s /usr/src/linux-2.6.24  /usr/src/linux

B  Vá víu với hệ nén :

/usr/src/linux-2.6.24/patch -p1  <  /home/user/sqlzma3.3-457-wj/squashfs3.3/kernel-patches/linux-2.6.24/squashfs3.3-patch

/usr/src/linux-2.6.24# patch -p1 < /home/user/sqlzma3.3-457-wj/sqlzma2k-3.3.patch

C  Nạp lại cấu hình của ubuntu :

cp /boot/config-2.6.22-14-generic   /usr/src/linux-2.6.24/.config
/usr/src/linux-2.6.24/make menuconfig 
chọn nạp
load alternate config

kiểm tra không ghi dấu biên dịch squashfs ( sẽ làm sau )
filesystem/miscellanousfilesystem/ do not set squashfs

D Gõ biên dich lõi thành gói debian (rất có thể ,nếu chưa có,thì phải cài kernel-package để có tiện ích make-kpkg)

#make-kpkg --initrd kernel_image kernel_headers

Kết quả sẽ được 2 gói trong thư mục /usr/src :

linux-headers-2.6.24_2.6.24-10.00.Custom_i386.deb
linux-image-2.6.24_2.6.24-10.00.Custom_i386.deb

E Cài nạp lõi mới với

#dpkg -i linux-image-2.6.24_2.6.24-10.00.Custom_i386.deb

  Không hiểu sao với cơ chế initramfs , update-grub làm việc không đến nơi đến chốn ,phải sửa thêm -2 ngón tay-

correct initrd  /boot/initrd.img-2.6.24  in menu.lst (grub)

Khởi động lại máy để có lõi mới đã vá sqlzma

reboot to new kernel




uname -a
Linux wangji-YellowFlagPc 2.6.24 #1 SMP Fri Feb 1 19:29:41 CET 2008 i686 GNU/Linux

Last edited by wangji (06/12/2008 00:00)

43 Reply by wangji 02/02/2008 19:32

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                     Biên dịch hệ nén squashfs-lzma
         
                                    6 Biên dịch các modules : sqlzma ,unlzma ,squashfs và tiện ích squashfs-tools

Sau khi khởi lại với lõi-vá_mới 2.6.24 (-sqlzma) Nhắc lại đã chuẩn bị vá víu

/home/~user/ directory.
  tar -xjf  sqlzma3.3-457-wj.tar.bz2
  tar -C  sqlzma3.3-457-wj  -xzf  squashfs3.3.tgz
  mkdir sqlzma3.3-457-wj/lzma457
  tar -C  sqlzma3.3-457-wj/lzma457  -xjf  lzma457.tar.bz2 

cd   ~/sqlzma3.3-457-wj/lzma457 && ~/sqlzma3.3-457/lzma457# patch -p1 < ../sqlzma1-449.patch

cd ~/sqlzma3.3-457-wj/squashfs3.3 && sqlzma3.3-457/squashfs3.3# patch -p1 < ../sqlzma2u-3.3.patch

Bây giờ cần chuẩn bị cho module squashfs.ko

mkdir /home/~user/sqlzma3.3-457-wj/squashfs3.3/kernel-patches/linux-2.6.24/fs

cp -a /usr/src/linux-2.6.24/fs/squashfs    /home/user/sqlzma3.3-457-wj/squashfs3.3/kernel-patches/linux-2.6.24/fs

Từ trong thư mục /home/user/sqlzma3.3-457-wj/ gõ
  make  sẽ biên dịch hết modules và tiện ích

Để ăn chắc ,hãy thử nạp modules vừa tạo :

make load

Để quan sát

root@wangji-YellowFlagPc:/opt/sqlzma3.3-457-wj# root@wangji-YellowFlagPc:/usr# lsmod
Module                  Size  Used by
squashfs               49544  0
sqlzma                  4996  1 squashfs
unlzma                  5888  1 sqlzma
...

Chép kết quả vào các đường dẫn thường lệ :

cp /home/user/sqlzma3.3-457-wj/squashfs3.3/kernel-patches/linux-2.6.24/fs/squashfs/squashfs.ko  /lib/modules/2.6.24/misc
cp   /home/user/sqlzma3.3-457-wj/squashfs3.3/squashfs-tools/*squashfs   /usr/sbin
cp    /home/user/sqlzma3.3-457-wj/lzma457/C/Compress/Lzma/kmod*.ko   /lib/modules/2.6.24/misc/
cp    /home/user/sqlzma3.3-457-wj/lzma457/CPP/7zip/Compress/LZMA_Alone/lzma   /usr/sbin

Thử nghịêm các món hàng mới với

  gõ thử :
mksquashfs  /bin bintry
mount -t squashfs -o loop bintry  /mnt
unsquashfs bintry
so sánh nội dung /mnt  và squashfs-root/

Chú ý :
lzma mksquashfs và unsquashfs là 3 trình độc lập có thể dùng trực tiếp với lõi chưa vá như ubuntu-7.10 !
Chuyện lõi vá chỉ quan hệ nếu muốn móc hệ tệp (mount -tsquashfs -oloop để read on the fly ) đọc tệp
trên lưng cò đang bay (tức là chỉ bung nén lúc đọc ,mà không cần bung hết ra trước khi đọc ) !

Last edited by wangji (06/12/2008 00:01)

44 Reply by wangji 02/02/2008 19:37

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                     Biên dịch hệ nén squashfs-lzma (tiếp )

                                                        7  giải nan
A Phát âm

Nếu rủi ro bạn có máy như tui
lspci cho

00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)

thì lõi 2.6.24 không biết phát âm - no soundcards found !

Cần phải đi tìm vá víu Alsa cho lõi .Cách đơn giản nhất là dựa lưng vào khổng lồ ubuntu ! Lấy nguồn lõi của ubuntu-8 (chưa ra đời khi đang viết )
Đọc từ đây http://packages.ubuntu.com/hardy/base/l … -5-generic

và lấy nguồn từ :

http://archive.ubuntu.com/ubuntu/pool/main/l/linux/ {linux_2.6.24-5.9.dsc    linux_2.6.24.orig.tar.gz     linux_2.6.24-5.9.diff.gz  }

Kiểm tra trong /usr/src không có thư mục linux-2.6.24  ,rồi gõ :

dpkg-source linux_2.6.24-5.9.dsc  /usr/src/linux-2.6.24

sau đó vá víu như đã trình bày !

B  Vá tiện ích

Nếu làm theo hướng dẫn như http://www.squashfs-lzma.org
rồi đên lúc thử unsquashfs gặp vấn đề báo lỗi ,thì hãy tải cái vá đã sửa về mà dùng sqlzma3.3-457-wj.tar.bz2

Last edited by wangji (06/12/2008 00:02)

45 Reply by wangji 13/02/2008 03:11

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                           Tiện ích nén với ubuntu-7.10

Để cho ai không muốn thay đổi lõi vì phải biên dịch lại ,mà vẫn muốn thử nghiệm tận mắt về hữu hiệu các hệ tệp nén :


  1  Dùng  synaptic  cài đặt {  cloop-utils  squashfs-tools  cramfsprogs   zlib1g-dev }

     cài xong  sẽ có các tiện ích sau : 

{ mkcramfs  mksquashfs/unsquashfs  create_compressed_fs/extract_compressed_fs }

Để có thêm tiện ích squashfs-lzma ,tải về

  2
     wget http://www.squashfs-lzma.org/dl/squashfs3.3.tar.gz

     wget http://www.squashfs-lzma.org/dl/lzma457.tar.bz2

     wget http://people.vnoss.org/~wangji/sqlzma3 … wj.tar.bz2
 
     wget http://debian-knoppix.alioth.debian.org … 2-1.tar.gz

biên dịch  module cloop.ko

  3a ln -s  /usr/src/linux-headers-2.6.22-14-generic/ /usr/src/linux

  3b /home/~user/tar xzf  cloop_2.622.tar.gz && cd cloop_6.622 && make && cp cloop.ko /lib/modules/2.6.22-14-generic/ubuntu/fs/cloop/ && depmod -a

biên dịch squashfs-tools-lzma

  4 Đặc biệt sau đây không làm "giống như thường lệ " vì ta sẽ không tải về nguồn lõi linux-kernel  !

/home/~user/ directory.
  tar -xjf  sqlzma3.3-457-wj.tar.bz2
  tar -C  sqlzma3.3-457-wj  -xzf  squashfs3.3.tgz
  mkdir sqlzma3.3-457-wj/lzma457
  tar -C  sqlzma3.3-457-wj/lzma457  -xjf  lzma457.tar.bz2

cd   /home/~user/sqlzma3.3-457-wj/lzma457 &&  patch -p1 < ../sqlzma1-449.patch


cd  /home/~user/sqlzma3.3-457-wj/squashfs3.3/kernel-patches/linux-2.6.22/  && patch -p1 squashfs3.3-patch

nếu có hỏi chi,cứ gõ đại enter/return cho đến lúc không hỏi chi nữa  ! Sau đó vá tiếp với

patch -p1 < ../../../sqlzma2u-3.3.patch  để vá với lzma


Bây giờ chỉ cần   Từ trong thư mục /home/user/sqlzma3.3-457-wj/ gõ
  make  sẽ biên dịch hết modules và tiện ích

  Dĩ nhiên module squashfs.ko sẽ sai bét vì ta thiếu vá sqlz cho nguồn lõi linux-kernel  ! Nhưng các tiện ích compressTools  đều ok

Để phân biệt tiện ích "squashfs gốc " (không vá lzma )

cp  /home/~user/url_link/sqlzma3.3-457-wj/squashfs3.3/squashfs-tools/{mksquashfs  unsquashfs }  /usr/sbin/{mksquashfq-lzma  unsquashfs-lzma }

cp   /home/~user/sqlzma3.3-457-wj/lzma457/CPP/7zip/Compress/LZMA_Alone/lzma   /usr/sbin

  Kết quả thử nghiệm :

  Nén thư mục lớn bự /usr/share

# time mkisofs -R -l -v /usr/share/ |create_compressed_fs - 65536 > share.clp

312077 -rw-r--r-- 1 root   root   319251931 2008-02-11 19:03 share.clp
real    1m4.095s    user    1m41.418s   sys     0m4.608s

# time mksquashfs-lzma /usr/share/ share.lzm

257183 -rwx------ 1 root   root   263098368 2008-02-11 18:58 share.lzm
real    6m12.514s   user    9m5.726s    sys     0m6.716s

~# time mksquashfs /usr/share/ share.sqf

279160 -rwx------ 1 root   root   285581312 2008-02-11 18:50 share.sqf
real    1m28.446s   user    1m40.902s   sys     0m3.924s

Vì cramfs chỉ dùng cho hệ tệp nhỏ (< 270MB) phải nén thư mục nhỏ hơn /bin  để so sánh

# time mkcramfs /usr/bin bin.cram
real    0m17.959s     user    0m13.857s    sys     0m1.880s
58185 -rw-r--r-- 1 root root 59523072 2008-02-11 19:56 bin.cram

# time mksquashfs /usr/bin/ bin.sqf
real    0m21.816s     user    0m42.343s    sys     0m0.348s
50389 -rwx------ 1 root   root   51548160 2008-02-11 19:58 bin.sqf

# time mksquashfs-lzma /usr/bin/ bin.lzm
real    1m17.588s     user    2m32.910s    sys     0m0.524s
42530 -rwx------ 1 root   root   43507712 2008-02-11 20:01 bin.lzm

# time mkisofs -R -l -v /usr/bin/ |create_compressed_fs - 65536 > bin.clp
real    0m22.054s     user    0m41.731s    sys     0m0.500s
51690 -rw-r--r-- 1 root   root   52876018 2008-02-11 20:04 bin.clp

chú ý :
cloop từ phiên bản 2.01-3 trở đi dùng advancecompression ( tựa lzma )
ngày xưa -trước 8/2006 các nguồn cloop của Klaus Knopper đều nằm tại http://developer.linuxtag.net/knoppix/ (khi "gú gồ" mạng vẫn còn các đầu nối đó ,tuy hết hữu hiệu !
Bây giờ được chuyển sang http://debian-knoppix.alioth.debian.org/sources/

Last edited by wangji (06/12/2008 00:03)

46 Reply by wangji 20/02/2008 21:45

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                           Xử lý tín số  với ubuntu
                                                    A Giới thiệu
Ngỏ lời
  Tại sao nên biết xử lý tín số ? Vì nó lan tràn lên hết mọi nơi . Dẫn chứng :

  1  Thường chẳng ai để ý ,nhưng ngay trong bios_setup  có điểm spread spectrum modulated enabled
      http://en.wikipedia.org/wiki/Spread_spectrum

  2  Cái ổ cd đọc bánh đa ,hầu như liên tục dùng thuật tóan sửa sai Reed-Solomon  vì mỗi lần đọc một gói-block 2KB là có ít ra từ 1 tới 5 lỗi !
Nếu vì cơ khí lậch lạc ,hay bánh đa quá bụi bậm lên quá 5 lỗi...thì cứ nghe động cơ ổ đọc rú lên rú xuống .
   http://www.wipo.int/pctdb/en/wo.jsp?wo=1999048097
   http://web.usna.navy.mil/~wdj/reed-sol.htm
   http://en.wikipedia.org/wiki/Reed-Solom … correction

  3 Ngay trong bất kỳ ubuntu hay linux nào gõ
      ls /usr/src/linux-2.6.24/lib/reed_solomon/
built-in.o  decode_rs.c  encode_rs.c  Makefile  reed_solomon.c  reed_solomon.ko  reed_solomon.mod.c  reed_solomon.mod.o  reed_solomon.o
   Tức là thư viện cho thuật tóan RS đã nàm trong lõi-kernel  !!!Có một dạo bộ nhớ lòai tĩnh usb hay dễ mất bit ,thủng lỗ vì màng cách điện quá mỏng
Các hệ tệp jffs/jffs2  đã có sử dụng sửa sai Reed Solomon trong công việc viết/đọc  !!

  4
Trên bất kỳ trạm -site- web nào đông người tới ,hay bất kỳ kho dữ liệu quan trọng không muốn có lỗi khi đọc đĩa harddisk  họ đều dùng
R.A.I.D redundant arrays inexpensive disks ; tức là chia dữ liệu qua 4-5 đĩa và thêm 1 đĩa sử sai...với Reed Solomon  !
     http://www.cs.utk.edu/~plank/plank/papers/CS-96-332.pdf 

  5  Một "môn phái" trong điện thọai di động dùng kỹ thuật cdma code division multiple access 
     http://en.wikipedia.org/wiki/Code_divis … ple_access
Đó cũng là một hình thức nhòe sóng -Spread_spectrum- bắt đầu từ thời buổi chiến tranh với radar thóat địch tìm địa điểm bằng cách nhảy điệu -hopping frequency -

  6
  Modem adsl  Ai mà không dùng adsl ! Kể từ thời buổi biến tần fsk chạy modem 300 bauds (năm 1963 tôi chứng kiến lăp nối giữa đại học Orsay và trung
tâm PDP bên California qua modem âm tic tic ta ta đường điện thoại ....) cho tới ngày nay gần 8Mbauds trên cùng đường dây đồng : đó là QAM  kỹ thuật số
http://christian.caleca.free.fr/modulation/adsl.htm

  Và còn nhiều vô kể áp dụng ...kỹ thuật số.

Khởi đầu ...nan.

  Tài liệu thì vô kể ,coi sau (cách tìm ,và ...có tối thiểu ) .Người ta thường nói Otave là clone của Matlab ,và R (gnu-R ) là clôn của SAS (statiscal analysis system ) ,nhưng matlab và SAS  phải có tiền (một trung tâm đại học có thể tốn tới 100000$ một năm tiền licence vì thống kê SAS dùng cho quá ...nhiều ngành bio ,hóa,lý ,y ....)
May là octave và R đều có trong debian -dĩ nhiên trong ubuntu - . R có 800 add-on packages ! octave khoảng 70 pkgs (vẫn thua xa matlab ! tuy đủ dùng để
học .Đây có bảng kê  "ai dùng octave" http://wiki.octave.org/wiki.pl?WhoUsesOctave (kể cả đại học Cần Thơ !)

Vì xử lý tín số -signal processing- thường dính tới thông tin -communications- 2 gói quan trọng nên cài với octave là signal và comm .Trên nguyên tắc sau khi cài octave ,có thể cài bất kỳ gói phụ bằng cách gọi trong octave : "pkg install tên_gói_phụ".Nhưng gói mới cho comm đòi phiên bản octave mới hơn cái
octave trong kho ubuntu .Để cài octave mới với ubuntu phải làm các thao tác sau :
cài với synaptic :
   libpcre3-dev  libpcre++-dev  libglpk-dev libsuiteparse-dev  gperf  libqhull-dev gnuplot tetex-bin libreadline-dev

tải về ftp://ftp.octave.org/pub/octave/octave-3.0.0.tar.bz2

nhớ cài hết các thư viện cần thiết như sau đây :

Octave is now configured for i686-pc-linux-gnu

  Source directory:     .
  Installation prefix:  /usr/local
  C compiler:           gcc  -mieee-fp  -Wall -W -Wshadow -g -O2
  C++ compiler:         g++  -mieee-fp  -Wall -W -Wshadow -Wold-style-cast -g -O2
  Fortran compiler:     g77 -O -mieee-fp
  Fortran libraries:     -L/usr/lib/gcc/i486-linux-gnu/3.4.6 -L/usr/lib/gcc/i486-linux-gnu/3.4.6/../../../../lib -L/usr/lib/gcc/i486-linux-gnu/3.4.6/../../.. -L/lib/../lib -L/usr/lib/../lib -lhdf5 -lz -lfrtbegin -lg2c -lm
  BLAS libraries:       -llapack -lblas
  FFTW libraries:       -lfftw3
  GLPK libraries:       -lglpk
  UMFPACK libraries:    -lumfpack
  AMD libraries:        -lamd
  CAMD libraries:       -lcamd
  COLAMD libraries:     -lcolamd
  CCOLAMD libraries:    -lccolamd
  CHOLMOD libraries:    -lcholmod
  CXSPARSE libraries:   -lcxsparse
  HDF5 libraries:       -lhdf5
  CURL libraries:       -lcurl
  REGEX libraries:      -L/usr/lib -lpcre
  QHULL libraries:      -lqhull
  LIBS:                 -lreadline  -lncurses -ldl -lhdf5 -lz -lm
  Default pager:        less
  gnuplot:              gnuplot

  Do internal array bounds checking:  false
  Build static libraries:             false
  Build shared libraries:             true
  Dynamic Linking:                    true (dlopen)
  Include support for GNU readline:   true
  64-bit array dims and indexing:     false

root@wangji-YellowFlagPc:~/opt/octave-3.0.0#

hoặc muốn mới hơn
       svn co https://octave.svn.sourceforge.net/svnr … tave-forge
rồi biên dịch.
Dĩ nhiên nếu không đòi hỏi nhiều ,cài octave với synaptic ít ra cho phép bắt đầu

Last edited by wangji (06/12/2008 00:04)

47 Reply by wangji 20/02/2008 21:49

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                   Xử lý tín số :
                          B  Trình Octave với các Gói comm-1.0.4 truyền tin & signal-1.0.5 xử lý tín số

Communications Toolbox for Octave
*********************************

* Menu:

* Introduction::
* Random Signals::
* Source Coding::
* Block Coding::
* Convolutional Coding::
* Modulations::
* Special Filters::
* Galois Fields::
* Function Reference::

*** function files in /usr/local/libexec/octave/packages/communications-1.0.4/i686-pc-linux-gnu-api-v32:

cyclgen.oct       __gfweight__.oct  cyclpoly.oct
syndtable.oct     genqamdemod.oct   __errcore__.oct
primpoly.oct      gf.oct            isprimitive.oct

*** function files in /usr/local/share/octave/packages/communications-1.0.4:

amodce.m           groots.m           randsrc.m          qaskdeco.m
comms.m            eyediagram.m       gconv.m            qaskenco.m
ricedeco.m         reedmullerdec.m    decode.m           golombdeco.m
oct2dec.m          egolaydec.m        gfft.m             golombenco.m
riceenco.m         reedmullerenc.m    gifft.m            fibodeco.m
gisequal.m         egolayenc.m        gconvmtx.m         gen2par.m
biterr.m           reedmullergen.m    cosets.m           pamdemod.m
qamdemod.m         egolaygen.m        symerr.m           rsdecof.m
marcumq.m          encode.m           gdeconv.m          fiboenco.m
rsencof.m          ademodce.m         minpol.m           vec2mat.m
bsc.m              huffmandeco.m      gfweight.m         pskmod.m
wgn.m              huffmandict.m      demodmap.m         qammod.m
quantiz.m          amdemod.m          hammgen.m          gftable.m
compand.m          huffmanenco.m      scatterplot.m      rsgenpoly.m
shannonfanodeco.m  awgn.m             genqammod.m        lz77deco.m
shannonfanodict.m  lloyds.m           rledeco.m          gdftmtx.m
qfuncinv.m         randerr.m          ammod.m            lz77enco.m
shannonfanoenco.m  fmmod.m            rleenco.m          qfunc.m
fmdemod.m          apkconst.m         bi2de.m            pskdemod.m
pammod.m           randint.m          bchpoly.m          de2bi.m
modmap.m           systematize.m      fibosplitstream.m

*** function files in /usr/local/libexec/octave/packages/signal-1.0.5/i686-pc-linux-gnu-api-v32:

-- less -- (f)orward, (b)ack, (q)uit
ricedeco.m         reedmullerdec.m    decode.m           golombdeco.m
oct2dec.m          egolaydec.m        gfft.m             golombenco.m
riceenco.m         reedmullerenc.m    gifft.m            fibodeco.m
gisequal.m         egolayenc.m        gconvmtx.m         gen2par.m
biterr.m           reedmullergen.m    cosets.m           pamdemod.m
qamdemod.m         egolaygen.m        symerr.m           rsdecof.m
marcumq.m          encode.m           gdeconv.m          fiboenco.m
rsencof.m          ademodce.m         minpol.m           vec2mat.m
bsc.m              huffmandeco.m      gfweight.m         pskmod.m
wgn.m              huffmandict.m      demodmap.m         qammod.m
quantiz.m          amdemod.m          hammgen.m          gftable.m
compand.m          huffmanenco.m      scatterplot.m      rsgenpoly.m
shannonfanodeco.m  awgn.m             genqammod.m        lz77deco.m
shannonfanodict.m  lloyds.m           rledeco.m          gdftmtx.m
qfuncinv.m         randerr.m          ammod.m            lz77enco.m
shannonfanoenco.m  fmmod.m            rleenco.m          qfunc.m
fmdemod.m          apkconst.m         bi2de.m            pskdemod.m
pammod.m           randint.m          bchpoly.m          de2bi.m
modmap.m           systematize.m      fibosplitstream.m

*** function files in /usr/local/libexec/octave/packages/signal-1.0.5/i686-pc-linux-gnu-api-v32:

medfilt1.oct  remez.oct

*** function files in /usr/local/share/octave/packages/signal-1.0.5:

mscohere.m         welchwin.m         polystab.m         xcov.m
boxcar.m           grpdelay.m         dct2.m             gauspuls.m
ellipdemo.m        invfreq.m          cpsd.m             idct2.m
residued.m         blackmanharris.m   rectwin.m          cheb1ord.m
residuez.m         tripuls.m          fir1.m             cheb2ord.m
flattopwin.m       ellip.m            fir2.m             gaussian.m
rceps.m            nuttallwin.m       morlet.m           pburg.m
sftrans.m          specgram.m         hann.m             barthannwin.m
bilinear.m         cheby1.m           freqs.m            gausswin.m
upsample.m         cheby2.m           square.m           __ellip_ws_min.m
shanwavf.m         invfreqs.m         idct.m             butter.m
triang.m           invfreqz.m         idst.m             dftmtx.m
pulstran.m         levinson.m         tukeywin.m         meyeraux.m
diric.m            downsample.m       impz.m             pyulear.m
tfestimate.m       filtic.m           ar_psd.m           cceps.m
hilbert.m          pwelch.m           parzenwin.m        aryule.m
dct.m              cohere.m           ellipord.m         blackmannuttall.m
csd.m              xcorr2.m           filtfilt.m         decimate.m
sos2tf.m           qp_kaiser.m        arburg.m           __ellip_ws.m
czt.m              firls.m            bohmanwin.m        xcorr.m
sos2zp.m           buttord.m          __power.m          chirp.m
dst.m              dctmtx.m           cplxreal.m         sgolayfilt.m
sawtooth.m         mexihat.m          tf2sos.m           resample.m
rectpuls.m         zplane.m           kaiserord.m        sgolay.m
ncauer.m           convmtx.m          freqs_plot.m       interp.m
tfe.m              cheb.m             zp2sos.m
kaiser.m           gmonopuls.m        chebwin.m

Last edited by wangji (06/12/2008 00:04)

48 Reply by wangji 20/02/2008 21:50

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                           Xử lý tín số với ubuntu


  Đây có mì ăn liền cho octave-3.0.bin ai đã biên dịch với ubuntu

                                        C Dùng thử nghiệm octave : eyediagram

Thử nhiễu ngẫu nhiên
octave:2> a = randsrc(4,4,[1,1i,-1,-1i])
a =

  -0 - 1i   1 + 0i   0 + 1i   1 + 0i
   1 + 0i   0 + 1i   0 + 1i  -1 + 0i
  -0 - 1i  -0 - 1i  -1 + 0i  -1 + 0i
  -1 + 0i   1 + 0i   0 + 1i   1 + 0i

Thử tín gắn nhiễu với eyediagram

  creates a 10-by-10 matrix adds 10 symbols errors to the data
and then finds the bit and symbol error-rates.


octave:3> m = 8 ;

octave:4> msg = randint(10,10,2^m); 
octave:5> noisy = mod(msg + diag(1:10),2^m);
octave:6> [berr,brate] = biterr(msg, noisy, m)
berr =  29
brate =  0.036250
octave:7> [serr ,srate] = symerr(msg ,noisy)
serr =  10
srate =  0.10000

  An example of the use of the function "eyediagram" is

     octave:1> n = 50;
     octave:2> ovsp=50;
     octave:3> x = 1:n;
     octave:4> xi = [1:1/ovsp:n-0.1];
     octave:5> y = randsrc(1,n,[1 + 1i, 1 - 1i, -1 - 1i, -1 + 1i]) ;
     octave:6> yi = interp1(x,y,xi);
     octave:7> noisy = awgn(yi,15,"measured");
     octave:8> eyediagram(noisy,ovsp);

   Similarly an example of the use of the function "scatterplot" is

     octave:1> n = 200;
     octave:2> ovsp=5;
     octave:3> x = 1:n;
     octave:4> xi = [1:1/ovsp:n-0.1];
     octave:5> y = randsrc(1,n,[1 + 1i, 1 - 1i, -1 - 1i, -1 + 1i]) ;
     octave:6> yi = interp1(x,y,xi);
     octave:7> noisy = awgn(yi,15,"measured");
     octave:8> hold off;
     octave:9> scatterplot(noisy,1,0,"b");
     octave:10> hold on;
     octave:11> scatterplot(noisy,ovsp,0,"r+");

The difference between "eyediagram"
and "scatterplot" is that "eyediagram" segments the data into time
intervals and plots the in-phase and quadrature components of the
signal against this time interval. While "scatterplot" uses a
parametric plot of quadrature versus in-phase components.

octave_eyediagram.png

Last edited by wangji (06/12/2008 00:06)

49 Reply by wangji 20/02/2008 21:53

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                           Xử lý tín số với ubuntu
                                             C Dùng thử nghiệm octave: step transfer function .

----------------------------------------eval step plot --------------------
n=poly([-11 -10])*10000

d=poly([ -2-3j -2+3j -2.1-3j -2.1+3j -3-3j -3+3j -3-3j -3+3j -5.5 -5 -5 -1])
sys=tf(n,d)
step(sys,1,3,100)

octave:5> n=poly([-11 -10])*10000
n =

     10000    210000   1100000

octave:6> d=poly([ -2-3j -2+3j -2.1-3j -2.1+3j -3-3j -3+3j -3-3j -3+3j -5.5 -5 -5 -1])
d =

Columns 1 through 3:

  1.0000e+00 + 0.0000e+00i  3.6700e+01 + 0.0000e+00i  6.4241e+02 + 0.0000e+00i

Columns 4 through 6:

  7.1043e+03 + 0.0000e+00i  5.5257e+04 + 2.2737e-13i  3.1819e+05 + 4.6612e-12i

Columns 7 through 9:

  1.3899e+06 + 4.0359e-11i  4.6356e+06 + 1.9998e-10i  1.1701e+07 + 6.3653e-10i

Columns 10 through 12:

  2.1745e+07 + 1.2637e-09i  2.8077e+07 + 1.2915e-09i  2.2285e+07 + 5.0022e-10i

Column 13:

  7.7664e+06 + 0.0000e+00i

octave:7> sys=tf(n,d)
sys =
{
  num =

       10000    210000   1100000

  den =

   Columns 1 through 3:

    1.0000e+00 + 0.0000e+00i  3.6700e+01 + 0.0000e+00i  6.4241e+02 + 0.0000e+00i

   Columns 4 through 6:

    7.1043e+03 + 0.0000e+00i  5.5257e+04 + 2.2737e-13i  3.1819e+05 + 4.6612e-12i

   Columns 7 through 9:

    1.3899e+06 + 4.0359e-11i  4.6356e+06 + 1.9998e-10i  1.1701e+07 + 6.3653e-10i

   Columns 10 through 12:

    2.1745e+07 + 1.2637e-09i  2.8077e+07 + 1.2915e-09i  2.2285e+07 + 5.0022e-10i

   Column 13:

    7.7664e+06 + 0.0000e+00i

  sys =

     0   1   0   0

  tsam = 0
  n =  12
  nz = 0
  yd = 0
  inname =

  {
    [1,1] = u_1
  }

  outname =

  {
    [1,1] = y_1
-- less -- (f)orward, (b)ack, (q)uit

   Column 13:

    7.7664e+06 + 0.0000e+00i

  sys =

     0   1   0   0

  tsam = 0
  n =  12
  nz = 0
  yd = 0
  inname =

  {
    [1,1] = u_1
  }

  outname =

  {
    [1,1] = y_1
  }

  stname =

  {
    [1,1] = x_1
    [1,2] = x_2
    [1,3] = x_3
    [1,4] = x_4
    [1,5] = x_5
    [1,6] = x_6
    [1,7] = x_7
    [1,8] = x_8
    [1,9] = x_9
    [1,10] = x_10
    [1,11] = x_11
    [1,12] = x_12
  }

}
          step(sys,1,3,100)
octave:9>

-----------------------------------------end eval step plot  -----------

Nguồn xử lý tín số viết bàng cpp đáng chú ý

http://gnuradio.utah.edu/trac/browser/g … ib/general

  Dân radio amateur dùng rất nhiều signal processing !

Last edited by wangji (06/12/2008 00:06)

50 Reply by wangji 20/02/2008 21:54

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                        Xử lý tín số
                                D  Tài liệu đụng tới octave/matlab

Ngòai trường hợp biết đúng đề tài ,muốn "gú gồ" ngành xử lí tín số cần nhớ tới vài ký tự đặc biệt EExxx là các lớp học electrical engineering tại đa số đại học Mỹ ,ĐàiLoan Hàn quốc ....Trong gú gồ gõ  carrier modulation matlab  là ra vô kể ,rồi chú ý tới các lớp EExxx  thì đầy những thứ mình muốn
Chỉ có thiếu thời gian để đọc !


http://www.gnu.org/software/octave/doc/interpreter/              doc  chính thức
http://www.nabble.com/getting-started-w … 95674.html  tutorial newbie
http://omega.uta.edu/~mxa6471/octave.pdf  manual 600pages !
http://www.ece.gatech.edu/research/labs/sarl/tutorials/   ofdm.pdf orthogFrequDivisionMultiplex
http://www2.norwich.edu/jbeneat/ee463/d … s_lab.html
http://coen.boisestate.edu/zhuhan/EE451_551.htm                  Lớp học với matlab
http://christian.caleca.free.fr/modulation/  modem_adsl
http://wclb.tamu.edu/publ/theses/afshin.pdf   multicarrier modulation master thesis 1998
http://www.phys.ufl.edu/docs/matlab/too … or218.html  digital modulation univFlorida
http://www.h6.dion.ne.jp/~fff/technique … lab_V.html
http://sunsite.univie.ac.at/textbooks/o … e_toc.html
http://en.wikibooks.org/wiki/Octave_Pro … g_Tutorial
http://www.tjhsst.edu/~sherbst/electronics/octave/  tutorial octave for electronics students
http://sunsite.univie.ac.at/textbooks/o … e_toc.html
http://en.wikibooks.org/wiki/Octave_Pro … g_Tutorial
http://www.tjhsst.edu/~sherbst/electronics/octave/  tutorial octave for electronics students


http://www.toantin.org/forums/index.php … amp;start=  intro matlab tiếng việt
http://www.thuvienkhoahoc.com/tusach/MatLab  việt
http://files.myopera.com/alodimay007/St … oantap.pdf  bài tập matlab tiếng việt
http://www.megaupload.com/?d=ACW9Z8M2
http://www-h.eng.cam.ac.uk/help/tpl/pro … ricks.html

Làm quen với matlab Lê v Luyện  hcmuns
http://www.math.hcmuns.edu.vn/~lvluyen/ … ai_Tap.doc   bài tập tại hcmuns
http://www.matlab.com.vn/showthread.php?t=165  forum matlab_viet

http://www.vica.vnn.vn/uni/vica5/abstra … vica5.html 5e congres automation viet
http://veffa.org/index.php?option=com_c … mp;lang=vn  ecole d'ete signalprocessing  Trường hè

https://www2.hcmut.edu.vn/~nvnho/Downlo … CMotor.rar   

                                               E gnu-R  Tài liệu

Đã đụng tới octave ,cũng chẳng nên quên gnu-R ,nhất là mới gần đây ở Saigon ra cuốn sách của giáo sư Nguyễn văn Tuấn :
HƯỚNG DẪN PHÂN TÍCH SỐ LIỆU VÀ VẼ BIỂU ĐỒ BẰNG R

http://www.ykhoanet.com/r/
tuy hòan tòan chuyên về y khoa ,nhưng nó tiêu biểu sử dụng thực tiễn, và dĩ nhiên thống kê y hay thống kê dầu lửa ,địa chất ,kinh tế ...cũng vẫn là thống kê !
  Cài gnu-R với ubuntu dùng synaptic  nhưng phải ngó các chữ " r-cran"  hay "r-doc "  !!

http://mirrors.dotsrc.org/cran/doc/cont … namese.pdf
http://www.ykhoanet.com/baigiang/muasach.htm   Nguyễn văn Tuấn http://www.ykhoanet.com/r/
http://linuxetleschoses.tuxfamily.org/t … uts_fr.pdf   tiếng pháp

http://faculty.washington.edu/tlumley/Rcourse/
http://zoonek2.free.fr/UNIX/48_R/all.html
http://zoonek2.free.fr/UNIX/48_R/15.html    Time series
http://www.math.ilstu.edu/dhkim/Rstuff/Rtutor.html
http://www.cyclismo.org/tutorial/R/
http://mercury.bio.uaf.edu/mercury/R/R.html

Để có thêm gói phụ :
http://zoonek2.free.fr/UNIX/48_R/01.html installing R contributions  (good examples using R)
wget -r -l 1 -np -nc -x -k -E -U Mozilla -p -R zip www.stats.bris.ac.uk/R/src/contrib/

Vì octave cũng có phần statistics  cú pháp viết lịnh R và octave có đôi chút khác nhau nên coi :
expert_octave learning R : http://mirrors.dotsrc.org/cran/doc/cont … octave.txt

http://stat.ethz.ch/R-manual/R-patched/ … o.html#dir

Last edited by wangji (06/12/2008 00:08)

Topic options

RSS

Trang: 1 2 3 4 5

You must đăng nhập or đăng kí to post a reply

VnOSS forum » Thảo luận chung » Học với ubuntu


Jump to forum:
Thông báo Góp ý, báo lỗi ABC ... Thảo luận chung Lập trình Networking An toàn, bảo mật Multimedia, Entertainment, Desktop Cơ sở dữ liệu Howto Dịch thuật Service4fun(d) Việc làm - Doanh nghiệp - Thị trường Bản tin (obsolete) Vừa học, vừa chơi (La)TeX Ứng dụng & Dịch vụ của Google Các chủ đề khác Trash Hacao Linux FC-One

Powered by FluxBB

[ Generated in 0,684 seconds, 7 queries executed ]

  PageRank
Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp Tự động Chính tảBỏ dấu kiểu mới [ Bật/Tắt (F9) Ẩn/Hiện (F8) ]

Học với ubuntu (Trang 3 / 5)

Bài [51-75/123]

51 Reply by wangji 02/05/2008 23:54

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Thí nghiệm với bộ gõ chữ việt  xvnkb-scim-unikey

Chạy livecd-ubuntu-8.04-hardy-heron . livecd ubuntu-7.10 cũng chạy ok !
Mở với firefox một trong 2 điểm kết nối sau đây

      a  http://wangji.hoan.googlepages.com/xvnkb-scim-unikey-ubuntuhardy.deb

      b  http://people.vnoss.org/~wangji/xvnkb-scim-unikey-ubuntuhardy.deb

Khi tải xong nó sẽ mở và hỏi có cài không : clic vào install . Cài xong sẽ có 3 icons  trên bàn giấy :

  xvnkb_gedit   xvnkb_oowriter   và  unikey_oowriter .

  Nhấn vào xvnkb_gedit  sẽ mở sọan thảo gedit với khả năng có đủ cả 3 bộ gõ chữ việt ,muốn chọn cái nào ,lúc nào trong thao tác gõ đều chạy !
  Để chọn  clic chuột phải trong khung gedit ,chọn input method rồi một trong 3 cái
    scim input method    unikey input    X input method   thì sẽ chạy với  scim/unikey/xvnkb  !

  Ai nói là các bộ gõ này dị ứng với nhau ? Sẽ phân giải chi tiết trong sợi này 

ảnh dẫn chứng http://wangji.hoan.googlepages.com/xvnk … livecd.png

chú ý : đây là gói rpm cho fedora (gnome rpmbased)

xvnkb-scim-unikey-viettiti.rpm

update_mới nhất

Last edited by wangji (05/12/2008 23:24)

52 Reply by wangji 04/05/2008 22:02

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                               Từ unikey tới scim 
Scim là một trình hết sức đồ sộ ,không to bằng, nhưng cũng na ná như Xorg  ,hay  GTK  :   khó mà đọc hiểu hết ! trừ các guru như "xương rồng" ,hay PhkimLong tác giả maintainer unikey ,pclouds hay MrChuối !

May mắn là unikey đã được viết như một áp dụng dịch vụ gtk ,vậy có thể  loay hoay lọ mọ với unikey để hiểu biết hơn với scim
Để biên dịch unikey từ nguồn  http://prdownloads.sourceforge.net/unik … .4.tar.bz2
sau khi tháo nén ,nhớ gõ ./configure  --with-unikey-gtk  --prefix=/tùy_thích  để có gtk_module_unikey  (im-vn.so ) !

Các tệp cần có cho unikey hoạt động
     /usr/bin/[ ukxim  unikey ]
     /usr/lib/gtk-2.0/2.10.0/immodules/im-vn.so
     /etc/X11/Xsession.d/59unikey  (optional)

và nếu muốn cho livecd có khả năng chọn unikey trong popup_input_method_menu
    /usr/lib/gtk-2.0/2.10.0/immodule-files.d/unikey-gtk2-immodule.immodules
Đây là dòng hack ,vì trên nguyên tắc các phần này được guru-dev dấu ,coi dân thường dùng "cuối ngõ" là không biết gì !
chi tiết :
cat /usr/lib/gtk-2.0/2.10.0/immodule-files.d/unikey-gtk2-immodule.immodules

# automatically generated by dh_gtkmodules, do not edit
"/usr/lib/gtk-2.0/2.10.0/immodules/im-vn.so"
"unikey" "Unikey Input Method" "unikey" "/usr/share/locale" "en_US.UTF-8:vi_VN:vi"

        Thư viện      module     thiết bị     hay lib/driver/card   gợi ý làm việc của các đồ gắn thêm
thì đây
libgtk/ im-vn.so/unikey_keybrd    cũng như  glibc/core-xvnkb.so.0.2.9a/xvnkb_keybrd   không khác chi lắm

Last edited by wangji (05/12/2008 23:25)

53 Reply by wangji 04/05/2008 22:03

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                        livecd với gói  xvnkb-scim-unikey

Cái hay khi chạy với livecd là ai cũng thử được trong cùng khuôn khổ môi trường !
Cái khó với livecd là phải biết rõ ràng vừa đủ cần có trong gói để có thể cài đặt từ mạng : ít quá thì không chạy,nhiều quá
-gói trùng tên với cái đã cài - thì thao tác cài đặt sẽ không thành công và không hữu hiệu !
Mà lại không như trên đĩa --force-overwrite không được trên hệ "chỉ đọc thôi"  (read-only media )

xvnkb và unikey tương đối nhỏ mà ta lại tự biên dịch ,thành không có vấn đề .
Riêng  x-unikey cần ghi module_gtk để được dùng như một gtk_app
/usr/lib/gtk-2.0/2.10.0/immodules/im-vn.so

Khó hơn là scim ,cần biết cái gì đã có trong ubuntu-hardy....Cụ thể họ đã cài cho scim-tables để có thể viết đươc một số ngôn ngữ trung âu và á châu ; cho vietnam chỉ có sẵn Viqr.bin

Ngoài scim-table telex  và vni của Thạch Anh ,nếu ta muốn có các kiểu gõ với m17n của Thọ,Lộc ,Châu ,và Trúc thì phải thêm
libm17n-0  , engine m17n cho scim (scim-m17n -->  m17n.so ) và các tệp vi-xyz-nn.mim  .Nhớ là một database  ,vậy thì đừng có quên mdb.dir trong đó . Tháo nén gói deb rồi quan sát !

Vì xvnkb không thuộc nòi giống gtk  ,cần phải tạo wrapper để có thể  chạy gedit/oowriter với xvnkb .
Đó là nhiệm vụ của postinst  trong mục DEBIAN ,chỉ nhìn thấy  nếu tháo nén ,mà không thấy trong lúc cài đặt !
Cái postinst trong gói tạo icon để khởi xvnkb_gedit/xvnkb_oowriter  và (muốn học) unikey_oowriter

Sau đó mới biết là oowriter không cần wrapper với unikey tuy rằng oowriter  không thuộc  nòi giống gtk !

Last edited by wangji (05/12/2008 23:26)

54 Reply by wangji 04/05/2008 22:05

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                   Troubles Creation
Để hiểu nỗi khó khăn khi có 3 kiểu gõ trên khung soạn thảo  ,ta hãy quan sát đôi trường  hợp ,dễ tái bản !

Chạy livecd chọn ngôn ngữ english ( vì đơn giản chỉ  tìm có chữ Desktop trong thư mục ~user !! )
cài từ mạng xvnkb-scim-unikey-ubuntuhardy.deb rồi gọi từ bàn giấy xvnkb_gedit

   1  Mặc định ngay lúc đầu là gõ với xvnkb ;  làm thử một số chuyện cho quen tay với xvnkb
   2  clic phải--input method--unikey gõ chữ ghép như oo  ee  dd   đều có vấn đề ,cursor giật ngược lại như mất chữ
Đó là trường hợp xvnkb và unikey xung đột : tắt off  cái xvnkb đi thì lại gõ việt vô tư với unikey !

   3  clic phải -- input method -- scim input 
quan sát là nếu xvnkb on thì cũng bị trục trặc như điểm 2 ; tắt off xvnkb thì scim lại ok ngay với chữ việt

  4  chạy xvnkb_oowriter  chỉ có mỗi mình xvnkb hoạt động độc tài ,không chuyển sang các kiểu gõ scim hay unikey trong khung đó được

5  chạy gedit hay oowriter từ giao diện gtk   applications--(accessories--gedit /office--oowriter ) thì xvnkb không có tác dụng
một tí nào  .Vì là gtk_app  gedit có thể chuyển giữa  unikey/scim  ;
Trái lại oowriter có cá tính khắc 
     a  nếu khởi oowriter mà unikey đã  và đang có tác dụng : không thể chuyển sang  scim được
     b  nếu khởi oowriter mà scim đang có tác dụng ,có thể chuyển sang unikey   !

  6  Coi chừng gedit/oowriter nếu lúc khởi vì lý do gì có vấn đè tất cả các instances khởi sau cũng sẽ có hệt vấn đề ,dù tưởng đã đổi môi trường gõ  : phải tắt hết các instances  có vấn đề thì khởi lại mới thành công

Last edited by wangji (05/12/2008 23:26)

55 Reply by wangji 06/05/2008 19:24

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                   xvnkb-scim-unikey  Giải pháp khi gặp khó khăn .
Để dẫn chứng ,cài vi-ubuntu-7.04 đã mặc định có bộ gõ scim cài trong đó ,với giao diện việt đầy đủ.
Cài đại :
sudo dpkg -i --force-overwrite xvnkb-scim-unikey-ubuntuhardy.deb
Sẽ gặp một số khó khăn như xvnkb_gedit mất chữ khi gõ chữ kép dd oo ...Đó vì đôi lý do
vi-ubuntu dùng im-switch để chuyển kiểu gõ
LANG trong đó là vi_VN
Đăng ký module với GTK ghi ở /etc/gtk-2.0/gtk.immodules

Với 2 ngón tay ,giải 3 chuyện đó xong bộ gõ "tích hợp 3 món" chạy vô tư : coi ảnh

viUbuntu-7.04-xvnkb-unikey-scim.png

chú ý cho ai tự hỏi tại sao rắc rối như vậy:

  1 vi-ubuntu v7.04 không ai dùng nữa; ubuntu mới hơn 7.10/804  đều chạy
đơn giản - clic chuột- với xvnkb/scim/unikey

  2 bản này nhằm chứng minh con đường 2ngón tay giải quyết livecd-việt
đó là cách học nhiều nhất...vì bó buộc phải hiểu cái gì đang làm

  3 gõ việt đây chỉ là chuyện ...phụ !

Last edited by wangji (05/12/2008 23:27)

56 Reply by wangji 07/05/2008 00:24

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Đây là gói xvnkb-scim-unikey chạy với livecd_fedora-8  (tải  Fedora-8-live-i686.iso )

xvnkb-scim-unikey-0-2.noarch.rpm

hay :
xvnkb-scim-unikey-0-2.noarch.rpm

coi ảnh

Muốn chạy live-fedora-viettiti thì  ,cài
$su
#rpm -i --replacefiles xvnkb-scim-unikey-0-2.noarch.rpm
rồi clic enable_input_method trên desktop  chọn scim-bridge !

( nếu muốn chọn scim,thay scim-bridge thì phải cài thếm scim-gtk  , kết quả y hệt )<<  điểm này không đúng ;scim-bridge chạy y hệt scim-gtk ! chỉ cần hiểu rõ hơn thôi  ,coi bài fedora9 và xvnkb-scim-unikey với 2 ngón tay 28/05/2008

Khác biệt với ubuntu-hardy là :
1  fedora8-live không hiển thị mặc định input_method khi kích chuột phải trong khung soạn thảo

2  không mặc định có OpenOffice writer  ,mà họ để abiword  .Buồn một cái là
abiword bị lỗi với dấu hỏi  !

3 Cách đăng ký module với GTK cũng khác với ubuntu

  Bài tới sẽ đề cập

chuyển gói xvnkb-scim-unikey.deb sang  xvnkb-scim-unikey.rpm

Nếu bài tiếng việt viết khó hiểu qua đây
xvnkb-scim-unikey

Last edited by wangji (30/05/2008 19:10)

57 Reply by wangji 07/05/2008 21:34

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                         xvnkb-scim-unikey flow


Xim    switch  case XMODIFIERS in

            xvnkb       xim_program = xvnkb         -- xvnkb-core (xvnkb.so.0.2.9a)     -- glibc

            unikey      xim_program = unikey        im-vn.so          libgtk+

            scim         xim_program = scim

                           interfaces :

                           scim-tables                           table.so                       telex.bin,vni.bin  Thach Anh

                           scim-m17n                           m17n.so  libm17n      vi-xyz-author.mim     ntdt ,DtLoc ,NiCd_Nikkel ...


  In place of Xim_switch :  im-chooser  (fedora)   im-switch

  scim_interface  :    scim-bridge



Trong trường hợp  xvnkb-scim-unikey  :

  Xim   switch  giữa  xvnkb  và  scim   

                                           scim  switch giữa   scim-im  và unikey

  vì vậy mà có thể cài cả 3 cái trong gedit (gtk_apps )  vì hiện giờ hầu như không có apps nào cho phép chuyển đổi cò bay - modify on the fly - XMODIFIERS  (ngòai yudit  ,và có lẽ emacs )

Last edited by wangji (05/12/2008 23:27)

58 Reply by wangji 08/05/2008 01:51

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                             xvnkb-scim-unikey  và livecd  Centos-5.1

  Suse 10.3 livecd chạy y hệt Centos-5.1 với 3 bộ gõ

  Vì Centos chưa  cài input method nào cả  sau khi khởi livecd  clic  add/remove   và chọn  scim-m17n , packager sẽ tự
động  cài các dependencies cho
Tiếp theo vào  vnoss forum clic vào  http://people.vnoss.org/~wangji/xvnkb-s … noarch.rpm
tải về rôi cài từ terminal  gõ
     

sudo  rpm  -i  /Desktop/xvnkb-scim-unikey-0-2.noarch.rpm

thế là cài xong  ***

  Tuy nhiên input method không hiển thị  ,mà cái  im-chooser  của Centos  có vấn đề  : phải  clic icon enable_input trên desktop  , cũng như với fedora  !
Kết  luận  Centos cho phép chạy xvnkb-scim-unikey-livecd 
     screenshot :      Centos-live-viet.png

***  chú ý : lý do phải làm 'sudo rpm' vì cài với packager 'nó'  không thi hành postinst  !
Vẫn chưa hiểu tại sao , fedora's packager chạy không vấn đề

Last edited by wangji (05/12/2008 23:28)

59 Reply by wangji 13/05/2008 18:35

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                             xvnkb revisited .

                         xvnkb-0.2.9-ntdt-wj-0-2.noarch.rpm
                         xvnkb-0.2.9-ntdt-wj.deb
                         xvnkb-0.2.9-ntdt-wj.tgz

  Install one of the above package allows using xvnkb on any distro including recent livecd (having unionfs or aufs installed ).

Description: Vietnamese input keyboard xvnkb  for ubuntu-hardy heron
xvnkb built by ntdt in 2005 is good enough for any linux;just learn to use it correctly ,no need to recompile !
  1 export correct locale   en_US.utf8  which is standard in locale.archive (type "locale -a" to get them all )
  2 set correct XMODIFIERS="@im=xvnkb" not to be mixed up with XMODIFIERS="@im=xim or none" at least for ubuntu-8.04
    this avoid disappearing character when typing complex composed vowel ( o^? for ex)
  3  xvnkb cannot ,will never be able to run system wide ,so why setting up /etc/ld.so.preload to contain xvnkb.so.0.2.9 ?
    Remove this /etc/ld.so.preload ! nobody uses such thing on any distro now ;use it locally in a wrapper like
    xvnkb_wrapper ! It is far more safer ,and do not create stupid side effects -troubles on other items in system-
     As hamradio people says K.I.S.S.  !  give a kiss !! Keep It Simple Stupid  !
we take that into account when creating the icons on Desktop to start most apps like gedit or oowriter using xvnkb


        Điều kiện thử nghiệm  : chạy livecd ubuntu-8.04  clic install    xvnkb-0.2.9-ntdt-wj.deb


                                     I  Thí nghiệm với locale

Trước khi thử ,nhớ tắt hết gedit và xvnkb đã chạy ,thì mới có môi trường dễ tái diễn ( reproducible environment ) .
Kiểm tra môi trường với lệnh env  , locale 
Từ user_terminal  gõ :
                             $ ./xvnkb_wrapper  gedit
  nhớ quan sát popup_xvnkb_thông_báo : mising locale en_US.utf8  ,tuy rằng gõ trong gedit tiếng việt vẫn ngon lành !

Tạo lỗi với locale ,bằng cp xvnkb_wrapper  xvnkb_wrapper_UTF  rồi sửa trong xvnkb_wrapper_UTF dòng
  export LANG=en_US.utf8   thành    export  LANG=en_US.UTF-8
Tắt xvnkb ,gedit rồi hãy
               chạy thử  $ ./xvnkb_wrapper_UTF  gedit   thì thấy báo lỗi ... và vẫn gõ được chữ việt  ! 

Nhưng nếu thay thành export LANG=en_US  thôi  ... thì báo lỗi không gõ unicode ..
và lúc gõ ký tự kép thì đều mất chữ cursor chạy giật lùi  ..giống hệt trường hợp vừa có xvnkb_on và unikey/scim active  !!!

                                  II  thí nghiệm với XMODIFIERS

  Cóp  cp xvnkb_wrapper  xvnkb_wrapper_XMOD   rồi trong tệp xvnkb_wrapper_XMOD  "comment out" chèn dấu # vào đầu dòng có XMODIFIERS  ,tức là
        export XMODIFIERS="@im=xvnkb"  biến thành  #export XMODIFIERS="@im=xvnkb"
Tắt xvnkb ,gedit rồi
         chạy  $./xvnkb_wrapper_XMOD gedit 
  khi gõ chữ việt lại xảy ra chuyện mất dấu ,,đi giật lùi  !! ở đây lý do là xung đột giữa xim của ubuntu đã mặc định cài trong livecd  và xvnkb !



xvnkb_wrapper :
 
#!/bin/sh
export LANG=en_US.utf8
export LD_PRELOAD=/usr/local/lib/xvnkb.so.0.2.9
export XMODIFIERS="@im=xvnkb"
xvnkb &
if [ -e /usr/bin/\$1 ] ; then
/usr/bin/\$1
fi

                                     Đôi lời về ld.so.preload

  Cái đó tự nạp trước -preload - thư viện di động . Bất cứ trình nào khởi động dù không liên quan chi tới xvnkb nó cũng nạp !  Đó là hành động system-wide  : hết sức vô lý  . Dĩ nhiên có thể giải quyết tránh rắc rối như " ld-preload-manager...
nhưng dùng giải pháp thêm để tránh rắc rối  ... thì như dùng lý thuyết nhóm để chia bánh trưng ngày tết cho gia đình !
  Vứt cái system-wide ld.so.preload ,rồi dùng preload local thôi ,xvnkb không thiếu thốn chi để hoạt động tốt ( y hệt )
                                     $  xvnkb_wrapper  bất_kỳ_apps_nào_cũng_được   
kể cả  konqueror  ,kate... firefox  ...và apps không chạy với xvnkb
  đều không vấn đề : môi trường cần cho xvnkb chỉ nằm trong thao tác đó !

   Lời cuối  xvnkb -ntdt  2005 trên sfnet  biên dịch với glibc2.2  cũng chạy với glibc2.4   .Tronh khi các biên dịch mới của
xvnkb với glibc2.4  không thể chạy đuợc với các linux cũ kỹ   !!
Chỉ cần giữ lại  xvnkb và xvnkb.so.0.2.9  hồi 2005 của ntdt

Last edited by wangji (05/12/2008 23:33)

60 Reply by gigaking 14/05/2008 08:57

  • gigaking
  • Thành viên
  • Offline
  • Đăng kí: 14/05/2008
  • Bài: 2

Re: Học với ubuntu

Sau khi mình cài Hardy thì bắt đầu sử dụng lại bộ gõ scim-vietiti vì nó chạy rất tốt ở Ubuntu 7.10 nhưng cài bị lỗi.
Sau đó mình tìm thấy bài viết về bộ gõ mới này của wangji .Mình đã tải bộ gõ mới gồm 3 bộ này để cài cho Hardy nhưng gặp trục trặc và báo lỗi thế này:

dpkg : error processing /home/user/Trung/xvnkb-scim-unikey-ubuntuhardy.deb (--install):
tying to overwrite `/usr/bin/m17n-db` , which is also in package m17n-db
dpkg-deb : subpross paste killed by signal ( Broken pipe )

Mình hiểu nó là không thể chép đè lên database m17n-db nhưng chưa vào thư mục theo đường dẫn trên xoá thử .
Do cũng xem ở nhiều nơi khác mình đã có thực hiện các bước này :
- Cài gói language Vietnamese trong phần System>Admin>Language Support
- Cài scim-tables-additional trong Synaptic
-> Các thao tác này có ảnh hưởng đến việc cài bộ gõ mới ko?

- Làm sao để khắc phục trường hợp này vậy wangji ?

p/s : ko biết mình có post sai topic ko? vì thấy bài này chỉ riêng wangji post. Nếu sai thì BQT move bài viết của mình giúp hé ! Thành thật xin lỗi !

Last edited by gigaking (14/05/2008 08:59)

61 Reply by gigaking 14/05/2008 10:17

  • gigaking
  • Thành viên
  • Offline
  • Đăng kí: 14/05/2008
  • Bài: 2

Re: Học với ubuntu

Mình đã cài được bộ gõ mơí rôì, sử dụng cài đặt bằng dòng lệnh trong terminal sau :

sudo  dpkg -i --force-overwrite xvnkb-scim-unikey-ubuntuhardy.deb

Trong bộ này mình vẫn thấy scim là hoạt động tốt nhất . Thanks wangji !

62 Reply by wangji 16/05/2008 02:16

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                       xvnkb-scim-unikey  và  livecd Kubuntu-8.04/7.04

Chạy livecd kubuntu ,cài "scim-gtk2-immodule , scim-modules-table  và gconf2 " với  adept-manager
(tựa như synaptic của ubuntu) ;
nhớ là phải bật lên universe_repo  vì mặc định ở trạng off . Kế tiếp cài xvnkb-scim-unikey-ubuntuhardy.deb với dpkg.

  Thử ngay với kwrite_xvnkb trên desktop ,phải đổi font từ monospace sang  DejaSans  : gõ chữ việt ok .

  Tuy nhiên ,vì kubuntu dòng giống kde -khác loài với gtk - , không có cách nào 'chuột' vào để đổi kiểu gõ như với ubuntu !

  Để cấu hình scim ,chạy sudo sh /etc/X11/Xsession.d/74custom_scim_startup  rồi chọn check_off dòng
scim global  : share the same input method among all applications ;  Làm như vậy sẽ cho phép mở apps với kiểu gõ khác nhau !
  Kế tiếp phải  restartx lại (chuột vào K --switch user -- start new session )  ,ghi user : ubuntu  nopassword

   Lý do của  chuyện khó khăn :
   
  Nếu trong /etc/X11/Xsession.d/74custom_scim_start  có dòng " export QT_IM_MODULE="scim" thì có vấn đề !
Bên ubuntu_gnome không vấn đề vì không cài qt-immodule ; nhưng kubuntu đã cài sẵn  scim-qtimm và skim !
(nguyên nhân chính là ...chỉ để phục vụ màu mè biểu tượng xinh nhỏ hơn với biểu tượng của gnome  !!!)

  Giải pháp cho chuyện trên :

                    Chèn dấu # (comment out ) dòng export  QT_IM_MODULE="scim"  trong tệp  /etc/X11/Xsession.d/74custom_scim_start

Sau khi restartx   , muốn hiển thị bàn phím scim...thì phải " sudo killall scim-panel-gtk "   đôi lần ,tới lúc nào bàn phím hiện ra là  ok !

   Vì không mặc định GTK  ,không thể  switch vào unikey  ; muốn chạy với unikey thì phải tạo wrapper như đã tạo cho xvnkb (thay xvnkb với unikey  !)

  ảnh kubuntu8.04Livecd-xvnkb-scim-unikey.png


Kubuntu-8.04  trên đĩa hd

Cài đại dpkg -i xvnkb-scim-ubikey-ubuntuhardy.deb

xvnkb chạy hoàn hảo ,phận sự cd automount y hệt như khi không có xvnkb : tức vẫn có automount !

Chép xvnkb_wrapper sang unikey_wrapper (đổi tí ti như sau )

~$ cat unikey_wrapper

#!/bin/sh
export LANG=en_US.UTF-8
export GTK_IM_MODULE="unikey"
export XMODIFIERS="@im=unikey"
unikey -xim ukxim
if [ -e /usr/bin/$1 ] ; then
/usr/bin/$1
fi

gõ ./unikey_wrapper xyz     xyz [kwrite  oowriter  kmail  geany...]  là ngon lành với unikey !

Dĩ nhiên ,mặc định kubuntu chưa cài scim ,scim ... chờ đó thôi

Last edited by wangji (29/12/2008 05:34)

63 Reply by wangji 23/05/2008 20:38

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                         scim-unikey-puppylivecd

    Cài gói này scim-unikey-puppylivecd.pet

trên bất kỳ puppy livecd (v2.16,v3.01 hay v4.0  )  đều cho phép gõ chữ việt với scim (tables/m17n)  hoặc unikey trong sọan thảo gtk_apps

  Với các sọan thảo non_gtk như geany hay mozedit (htmleditor ) thì phải chạy qua wrapper  như
     /root/unikey_wrapper  geany ( mozedit )

(hacao-2.16 chỉ có cài unikey -system wide ) .

  Điểm khó là thời buổi puppy-2.16  (khoảng 2006)  m17n rất bị chục trặc (ubuntu dapper
không chạy được m17n chẳng hạn ! )
Sau đó sang puppy v3.01 và v4.0  thì lại có sự cố thay đổi gtk (2.4.0 sang 2.10.0) .chưa kể
phiên bản glibc cũng chuyển.....

Tạo gói "pet"  cho puppy đủ mọi phiên bản là phải coi kỹ những chuyện đó...chứ không thể chỉ clic chuột lên kho ubuntu hay debian là chạy !   
   ...làm cái đó thì ... học thêm tí ti  !
gõ việt trên puppy-2.16 trong máy ảo qemu

  unikey_wrapper :

#!/bin/sh
export LANG=en_US.UTF-8
export GTK_IM_MODULE="unikey"
export XMODIFIERS="@im=unikey"
unikey -xim ukxim
if [ -e /usr/bin/$1 ] ; then
/usr/bin/$1
fi

try then:
unikey_wrapper geany

Last edited by wangji (29/12/2008 05:38)

64 Reply by wangji 28/05/2008 13:49

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                    xvnkb-scim-unikey  và  fedora 9 (gnome) livecd ....với 2 ngón tay

                       A chạy với gói  xvnkb-scim-unikey-0-2.noarch.rpm   lấy từ  http://wangji.hoan.googlepages.com/xvnkb-scim-unikey

     Khởi fedora9 livecd ,tải gói trên rồi
                      $su
                      #rpm -i  --replacefiles  Desktop/ xvnkb-scim-unikey-0-2.noarch.rpm
                      #/sbin/ldconfig
      clicclic trên desktop icon_enable_inputmethod

  Mở gedit /abiword   clic phải -- inputmethod -- scimbridge/unikey -- vietnamese -- telex-locdt/nikkel/thachanh    --> gõ việt


                                     B   fedora 9 với 2 ngón tay


    Khởi fedora9  mở terminal  gõ ...từ từ :

[fedora@localhost ~]$ su
[root@localhost fedora]# mount /dev/sda1 /mnt
[root@localhost fedora]# cp /mnt/usr/share/m17n/vi* /usr/share/m17n/
[root@localhost fedora]# su fedora
[fedora@localhost ~]$ gconftool-2 --type bool --set '/desktop/gnome/interface/show_input_method_menu' true

[fedora@localhost ~]$ su
[root@localhost fedora]# cp /mnt/usr/lib/gtk-2.0/2.10.0/immodules/im-vn.so  /usr/lib/gtk-2.0/2.10.0/immodules/
[root@localhost fedora]# gtk-query-immodules-2.0-32 > /etc/gtk-2.0/i386-redhat-linux-gnu/gtk.immodules

[root@localhost fedora]# cp -a /mnt/usr/share/scim/tables /usr/share/scim/

Đây sda1 trên máy tui đã có  vi-xyz*.mim   và  im-vn.so  cho các bảng gõ việt m17n (gang of 4 : ntdt lodt myquartz nikkel ) và IMEngine_unikey_PhkLong
Ba dòng có cp là cóp các thứ đó sang fedora
  Dòng gconftool-2  là đòi hiển thị inputmethod trên các thực đơn gtk_apps
  Dòng gtk-query-immod   để đăng ký  unikey_engine (im-vn.so  )   với chủ nhân gtk

   Thế là xong ,và chạy y hệt trường hợp A


                                                 C  Đôi lời giải thích

  1  chuyện scim-bridge
  2 Cái icon_inputmethod_enable  cho fedora/centos livecd hết bí
không cần phải clicclic inputmethodenable nữa !

  3  hai ngón tay

scim-bridge :
Thú thật tui đã hiểu bậy tàm lam .Sau khi tạo xvnkb-scim-unikey chạy với ubuntu-8.04 vừa đủ để chạy mà không cài thêm chi với livecd , lúc thử với fedora8 thì không
làm sao chạy scim_việt với scim-bridge : nó hiện icon_kbd ra ,nhưng clic trái chẳng tòi các kiểu gõ tí nào . Biết là với ubuntu đã phải dùng scim-gtk-module (im-scim.so)
nó là giao diện giữa scim và gtk ,cài đại nó ,thé là chạy và đã khai báo bài 06/05/2008 trên đây  !

    Thực ra ,khi không chạy như vậy ...phải ôm đầu suy nghĩ  ...
    Thí nghiệm : Khơi fedo-livecd , tải về rồi  chỉ cài với  rpm -i   xvnkb-scim-unikey-0-2.i386.rpm
     #killall  scim-launcher   ( để chắc chắn giết hết instance scim đang chạy )
     # scim -d         để khởi dịch vụ scim server
  Sẽ thấy báo lỗi không nạp được frontend x11     !   ( mà mắy bữa trước tui đã không chịu ngó kỹ  !!!) nhưng đó là lý chính làm scim-bridge ...không chạy

  Đừng hỏi tui tại sao ,tui chỉ biết khi biên dịch vài thứ sau khi cài phải gõ ldconfig  để loan báo  ' chuyện thư  viện với lõi kernel OS '
  Sau ldconfig là scim-bridge cho phép clic trái icon_kbd

  scim-bridge= C implementation cho scim-gtk-module  !!!

  input method enable :

  Nếu chỉ có lệnh gconftool-2  tại sao còn tạo icon_input_enable  khi chơi với livecd ?
   - chú ý là đã chạy nó từ $ prompt (tức quyền user chứ không root )
Cũng vẫn tại ít hiểu biết , khi tạo gói deb cho ubuntu tui nhét dòng gcontool-2  vào "postinst"  không biết rằng khi cài đặt thì phải quyền root ,mà khi quyền root chạy
gconftool thì gặp quyền sở hữu X vì livecd đăng nhập với user fedora ,  Lúc đó tui chưa biết chuyển quyền sở hữu root sang user trong shell install  !!
  Thế là tạm thời tạo icon_enable_inputmethod  ,lúc clic nó là user clic !!
  Nhớ là muốn livecd ,thành thử tránh interactive im-chooser  vì lúc đó là phải logout rồi login.....

Hai ngón tay ;
  Đó là thừa kế của cuộc đời ,từ thời buổi chỉ có 2 mini ( với 2 terminal )  cho ...trên 20 người (sinh viên và thày ) .Cứ tranh nhau ,ngồi chưa nóng quần là đã bị ông thày
đá ... ,chỉ còn cách dòm dòm ngó ngó ,rồi chờ lúc "chúng nó"  đi ăn là nhảy vô ..ôn lại các "thao tác 2 ngón tay" thấy buổi sáng  !

  Cái hay của 2ngón tay cho thấy khi quan sát các livecd  chuyện đăng ký mô đun với gtk là vấn đề
  fedora/centos  dùng  gtk-query-immodules-2.0-32     trong khi đa số  dùng  gtk-query-immodules-2.0

  Nơi ghi đăng ký cũng vậy , 
    đa số dùng  /etc/gtk-2.0/gtk.immodules
      fedora/centos  dùng     /etc/gtk-2.0/i386-redhat-linux-gnu/gtk.immodules
     PCLinuxOS    dùng      /etc/gtk-2,0/gtk.immodules.lib
  livecdubuntu  thì lại dùng  /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2-0.immodules
Thế là nếu muốn tạo gói chạy cho nhiêu livecd   ....thì phải làm việc với 2ngón tay  ....không thể nào tự động hóa  các hình thù khác biệt như trên

chú ý :
chuyện ldconfig cũng liên quan tới một số người -không nhỏ đâu - nói là cài rồi không chạy...rồi lại đùng một cái thấy nó chạy  !
lý do là khi dùng cài trên đĩa ,mỗi lần khởi lại máy  ...thì có thao tác sau lưng ldconfig !)
  Sau tu sửa tí ti bản xvnkb-scim-unikey-0-2.i386.rpm chạy cho mọi fedora như
hàng chuyên nghiệp :
Muốn bất kỳ apps nào không có inputmethodenable chỉ cần kèm theo như
    $ GTK_IM_MODULE=scim  firefox
hay
    $GTK_IM_MODULE=unikey  firefox 
là lượn mạng gõ việt trong trang đó !
Các gtk_apps thì tuyệt rồi !

Last edited by wangji (05/12/2008 23:35)

65 Reply by wangji 30/05/2008 20:36

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                       xvnkb-scim-unikey  livecd howto

Boot livecd loài giống rpm/deb    cài đặt gói  xvnkb-scim-unikey lấy từ 

               http://wangji.hoan.googlepages.com/xvnkb-scim-unikey

  Hệ display manager bất kỳ là  gdm/kdm/xdm , ít nhất có một bộ gõ chữ việt sẽ an toàn cho các soạn thảo.

  Trong khung cảnh livecd nếu muốn gọi các apps _không gtk lắm  thì ,từ terminal gõ ,ví dụ

            $ GTK_IM_MODULE=scim   firefox
hay
            $ GTK_IM_MODULE=unikey  oowriter

  Các gtk_apps  thì  rightclic --inputmethod -- unikey/(scim -- vietnamese --vi-telex-gang4)

                       Thế là chạy gõ mõ tụng chữ việt !
    trên bất kỳ ubuntu hay fedora  phiên bản >= 7 ,không sửa hay cài thêm extra package chi cả

Các cách sử dụng xvnkb-scim-unikey

Đêm 30/5/2008 con_ech_gia đã thử thành công gói scim-unikey-amd64 trên
livecd ubuntu-hardy

scim-unikey-viettiti-0.beta-2.x86_64.rpm
    xvnkb-scim-unikey-i386.deb

   xvnkb-scim-unikey-0-2.i386.rpm

xvnkb-scim-unikey-i386.tgz

2 gói mới :
                            xvnkb-scim-unikey-amd64.deb upgraded to ubuntu-intrepid ! (14 jul 08 )

                            xvnkb-scim-unikey-amd64.rpm

Last edited by wangji (05/12/2008 23:36)

66 Reply by wangji 10/06/2008 20:02

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                    Thử nghiệm scim với KDE

  scim được viết cho gnome với gtk  ,nhưng kde ăn cánh với libQT  không phù hợp tí nào để dùng gtk-immodules lấy từ ubuntu .Hơn nữa các phần biên dịch kết với libqt rất móc ngoặc với phiên bản ,khó mà lấy các phần đụng tới libqt bên ubuntu sang cho fedora !

    Chạy  livecd     Kubuntu-8.04      tải    xvnkb-scim-unikey-anyubuntu386    cài      dpkg -i
                    hay Fedora9-kde-live          xvnkb-scim-unikey-anyfedora386                  rpm  -i

Vì chạy livecd ,môi trường chưa tiếp cận với scim ( nếu là hdd  thì lúc khởi lại ;..là tự động ) gõ :

            sh /etc/X11/Xseion.d/74custom-scim_startup
sau đó  gõ
                     QT_IM_MODULE=scim-bridge  knotes      rồi thử gõ việt  !

   Với Kubuntu  tất cả các trình k_apps  đều gõ việt với scim-bridge
         Kfedora9    kword  kmail kaddressbook  gõ việt ok
                    nhưng kwrite ,konqueror ,kopete   không gõ việt như với Kubuntu   !!!26jun2008  xin lỗi : nói bạy ;sẽ đính chính ;dùng gói sau đây
xvnkb-scim-unikey-anyfedora386 (m17n-lib 1.5.1 glibc 2.8 )

lý do : trong fedora_kde các trình kwrite_kopete_konqueror đã không được biên dịch kết nối với libqt   !
gõ  ldd  /usr/bin/kwrite | grep qt thì thấy không có libqt-mt !

đó cũng là lý do trong ubuntu xterm không gõ được việt như với konsole !!

   Dĩ nhiên xvnkb/unikey  chạy vô tư cho tất cả Kubuntu/Kfedora



       Mối liên hệ
                                                  scim server ( libscim ,libscim-x11utils )

                    (wrapper)library                         immodules                          IMEngines
  GTK               libscim-gtk                           im-scim.so                           |
                       scim-bridge                          im-scim-bridge.so                |     m17n.so
                                                                                                                |     table.so
  KDE-QT         libqscim                               im-scim-bridge.so                |

Vì trong các kde_app không có thao tác rightclick ra inputmethod thành muốn làm im-sưitch bằng tay thì phải tạo cái
  scim_wrapper :
#!/bin/sh
#for KDE distro
export LANG=en_US.UTF-8
export QT_IM_MODULE="scim"
export QT_IM_MODULE="scim-bridge"
export XMODIFIERS="@im=scim"
scim -d 
if [ -e /usr/bin/$1 ] ; then
/usr/bin/$1
fi

to invoke KDE_apps with scim
         QT_IM_MODULE=scim-bridge   konqueror

rồi chỉ cần chuột phải trên scim_icon chọn kiểu gõ việt là tha hồ !!

ps  coi cái demo này ...mà suy nghĩ  :
http://tagoh.fedorapeople.org/im-choose … -demo.html

Last edited by wangji (05/12/2008 23:37)

67 Reply by wangji 11/06/2008 14:06

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                       scim : đôi điều nên biết

   1   

$ scim -l

hiện ra  các IMEngines đang có

   2 

$ m17n-db  -l  input-method

hiện ra các kiểu gõ multilang m17n  đang có

   3   Sau khi tu sửa vi-xyz.mim  , muốn quan sát rõ socket của dịch vụ scim :

       

$ MDEBUG_OUTPUT_FILE=/tmp/hihilog  MDEBUG_INPUT=1  QT_IM_MODULE=scim-bridge  kwrite

Dù sao cũng nên "nhìn"  trong terminal chỗ khởi kwrite  coi  "IMEngine action"  !

   4  Đăng ký với GTK .( Tuy "có vẻ" không dính dáng tới scim  : sẽ rõ hơn sau này )

      4-a  Khi chuột trái không cho hiện ra input method thì có thể ,hoặc dùng
im-chooser  (fedora,centos...)  hoặc gõ

 

gconftool2  --type bool   --set  ' /desktop/gnome/interface/show_input_method_menu '  true

4-b  Đăng ký input module với gtk

fedora : 

    gtk-query-immodules-2.0-32  > /etc/gtk-2.0/i386-redhat-linux-gnu/gtk.immodules

     ubuntu :

gtk-query-immodules-2.0 > /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules

ps  để tránh các bài quá dài ,khó đọc  : chuyện đăng ký sẽ đưa sang một bài riêng

Last edited by wangji (05/12/2008 23:37)

68 Reply by wangji 12/06/2008 20:15

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                xvnkb-scim-unikey và mandriva 2008 kde

Dĩ nhiên muốn thử kde chính quy thì ...về nguồn với mandriva . Đây chỉ muốn nhấn mạnh 2 chuyện
   1  khó khăn phiên bản libqt
   2  hacking kho  rpm

  Sau khi khởi mandriva 2008 livecd ,cài  xvnkb-scim-unikey-anyfedora.rpm  như mọi khi ... thì ..không gõ việt với scim-bridge  : đó là vì im-scim-bridge  lấy từ ubuntu hay fedora sang không ăn hợp "build i686 linux g++- 4 full-config "  của
mandriva  !( cũng như của PCLinuxOS  ) . Hơn nữa  vào synaptic kho mandriva  chỉ thấy mỗi chú scim-prime  !

  Kết luận phải đi ăn cắp các tệp sau đây  (có thể lấy từ PCLinuxOS package manager )
  lấy từ

libscim8_1.4.4-10pclos2007_i586.rpm
libscim-bridge0_0.4.2-2.20060907.2pclos2007_i586.rpm
scim_1.4.4-10pclos2007_i586.rpm
scim-bridge_0.4.2-2.20060907.2pclos2007_i586.rpm
scim-bridge-qt_0.4.2-2.20060907.2pclos2007_i586.rpm
scim-qtimm_0.9.4-6pclos2007_i586.rpm

  Cài đại "sau lưng" xvnkb-scim-unikey  với  rpm -i pkgs  (chẳng cần force install chi  !) 
thế là có mandriva 2008 chạy với scim-bridge-qt  !

  screenshot

Last edited by wangji (05/12/2008 23:38)

69 Reply by wangji 14/06/2008 14:47

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                    Để thử xvnkb-scim-unikey  trên máy ảo với qemu

  gọi  qemu -cdrom  distro.iso  là đủ.

Nếu có kqemu  nhớ modprobe nó ;  nếu có nhiều ram  nhớ thêm -m 512  , càng to càng lẹ

Với puppy-2.16  cấu hình vesa  ; với ubuntu-8.04  chọn mode safe graphics ...thì không bao giờ treo máy

  Cài xvnkb-scim-unikey  trong máy ảo như trên máy thật ..rồi thưởng thức :

                         puppy-việt trên qemu
                                                              ubuntu -việt trên qemu


  Thử trên qemu tránh phải "đốt bánh đa trắng" cho đỡ tốn tiền !
Hoặc  chạy

       qemu -cdrom image.iso

hoặc nếu đã có bánh đa rồi ,chạy

      qemu  -cdrom  /dev/scd0   (hay /dev/cdrom  ...tùy cơ ứng biến )

Last edited by wangji (05/12/2008 23:38)

70 Reply by wangji 14/06/2008 22:50

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                         Đăng ký module với GTK

Để có cảm tưởng chuyện đăng ký GTK chạy ra sao ta hãy làm thí nghiệm sau đây với module_unikey : im-vn.so.

  1 Khởi boot livecd fedora9 với bánh đa đã đốt hay với
      qemu  -cdrom  fedora-9-live.iso

  2 Trong fedora khởi firefox rồi tải về và cài đặt
       http://people.vnoss.org/~wangji/xvnkb-s … 2.i386.rpm

  3  Mở gedit ,rightclic - inputmethod sẽ thấy unikey ; gõ thử việt

  4  Mở terminal ,$ su  lấy quyền root ;

        #mv  /usr/lib/gtk-2.0/2.10.0/immodules/im-vn.so  /root/

      Thử gõ việt trong gedit : nhận xét !

  5  #gtk-query-immodules-2.0-32  > /etc/gtk-2.0/i386-redhat-linux-gnu/gtk.immodules

      #mv  im-vn.so  /usr/lib/gtk-2.0/2.10.0/immodules


  6  Trong gedit vẫn gõ được việt ;

Tháo_quit gedit - tắt hết các instances gedit -
Mở lại gedit mới : nhận xét trong input method không còn thấy chọn unikey nữa     

  Từ 4-5  ta đã đăng ký với gtk nhưng không có hiện diện của module_unikey : thế là 6 không còn chọn được unikey nữa

Để trở lại như cũ

  7   #gtk-query-immodules-2.0-32  > /etc/gtk-2.0/i386-redhat-linux-gnu/gtk.immodules

vì hiện giờ ta đăng ký lại ,với sự có mặt im-vn.so  trong thư mục immodules

   Cái thí nghiệm này có thể làm với bất kỳ distro nào ,puppy  hay ubuntu ; chỉ khác mỗi điều là ubuntu đăng ký vào trong thư mục

/usr/lib/gtk-2.0/2.10.0/immodule-files.d  chứ không ở /etc/gtk-2.0  !

Cũng có thể thay im-vn.so bằng module khác như im-scim hay im-scim-bridge.so  để ...xem !

   Cái thí nghiệm này có thể làm với bất kỳ distro nào ,puppy  hay ubuntu ; chỉ khác mỗi điều là ubuntu đăng ký vào trong thư mục
/usr/lib/gtk-2.0/2.10.0/immodule-files.d  chứ không ở /etc/gtk-2.0  !


tỉ dụ :

#gtk-query-immodules-2.0-32  > /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules

nhưng cũng có thể để trong thư mục /usr/lib/gtk-2.0/2.10.0/immodule-files.d/  một tệp với bất kỳ tên gì -unikeyLong  chẳng hạn-
miễn là trong unikeyLong  có dòng như sau

"/usr/lib/gtk-2.0/2.10.0/immodules/im-vn.so"
"unikey" "Unikey Input Method" "unikey" "/usr/share/locale" "en_US.UTF-8:vi_VN:vi"

                       Đăng ký input method với GTK

Có 2 địa điểm để quan sát đăng ký input method với gtk.

    1  ~user/.gconf/desktop/gnome/interface/%gconf.xml

    2  Mở gedit ,chuột_phải--inputmethods
nhưng nhớ đóng_tắt_thóat_quit các instance gedit đã mở rồi hãy mở
cái gedit mới để quan sát.

  Bật_input_method

  gconftool-2  --type  bool  --set  '/desktop/gnome/interface/show_input_method_menu '  true

  quan sát

  Tắt_input_method

gconftool-2  --type  bool  --set  '/desktop/gnome/interface/show_input_method_menu '  false

  quan sát !

Last edited by wangji (05/12/2008 23:39)

71 Reply by wangji 19/06/2008 00:01

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Soạn thảo tiếng việt với open office writer  trên ubuntu 8.04 livecd trong bếp : không nối mạng

  Khởi động livecd ubuntu hardy heron  ( hay bất kỳ ubuntu nào !) ,mở  gedit rồi

     chuột phải -- inputmethod --scim  là tòi ra icon bàn phím tại góc phải phía trên màn hình

     chuột trái trên bàn phím đó --vietnamese - viqr   cho phép gõ việt trong soạn thảo gedit với kiểu gõ viqr
   Dù không thoải mái như telex  nhưng ít ra gõ việt được !

  Làm y hệt như trên với office writer  sẽ thất bại ...  vì không nhìn thấy input method để chọn đâu cả !

Lý do : open office không dòng giống gtk  ! Thế là thiên hạ la lối oowriter không gõ được tiếng việt

  Giải pháp : Mở terminal  gõ vài dòng
$ export  XMODIFIERS="@im=scim"
$  GTK_IM_MODULE =scim  oowriter 

  bây giờ gõ việt vô tư trong open office writer tuy không nạp mạng ,không tải về thêm chi cho cái cd_ubuntu.
Thay oowriter với firefox là có thể lượn mạng và hỏi trên google bằng tiếng việt ! Gửi thư với evolution cũng ok   !!

   Để hiểu thêm về gói  xvnkb-scim-unikey-anyfedora386_A
và   
                     xvnkb-scim-unikey-anyubuntu386



hoặc 2 gói mới nhất - và hoàn thiện nhất - sau đây

xvnkb-scim-unikey-anyfedora386_B_themust
gói B ...đày đủ nhất ,26jun2008
Sau khi cài anyfedora386,cho f9KDE gõ ctrl-alt-backspace để logout/in với hệ X
  - bật dịch vụ scim cho livecd -
từ đó khởi bất kỳ trình nào - kwrite,kword vv- với chuột trên Kmenu là sẽ chạy việt với scim-bridge
Không phải thêm gì với 2ngón tay cho biến môi trường !
hay xvnkb-scim-unikey-ubuntu386
 
 
hãy làm các thí nghiệm như đây


chú ý :

livecd khác với cài trên hdd  là chuyện các biến môi trường ; tỉ dụ

livecd_ubuntu  XMODIFIERS="@im=none"

hdd_ubuntu  có thể  XMODIFIERS="@im=scim"

do lúc khởi máy có /etc/X11/Xsession.d/74custom_scim_start  cho phép
officewriter  gõ việt vô tư  ! (không phải thêm dòng lệnh 2 ngón tay !)

Last edited by wangji (05/12/2008 23:40)

72 Reply by wangji 27/06/2008 22:20

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Thấm thoắt gần một năm ,từ khi Phan Thành Nam gởi tấm "cải tiến bộ gõ scim" trên vnoss . Tình cờ đọc -sau mấy tháng ! 8/9/08 - lúc đó mù tịt không biết làm sao gõ chữ việt với open office writer .

  Cho tới bữa nay có   bản  xvnkb-scim-unikey-i386  deb và   rpm


  Dưới đây các điểm có thấy trên mạng google  đã cho phép học tập
và tạo bản gõ việt livecd   

http://xvnkb.sourceforge.net/  2003MrChuoi

http://www.unikey.org/index.php#news 2003-5  PhkimLong

http://freshmeat.net/redir/gtk-im-vi/64417/url_tgz/gtk-im-vi-0.1.1.tar.gz

2006-05-03  Nguyễn Thái Ngọc Duy <pclouds@gmail.com>


http://tapchi.vnlinux.org/index.php?q=node/32  nguyenduytho5sep2006 Bộ gõ đa ngôn ngữ với SCIM

scim versus xvnkb/unikey : http://forum.vnoss.org/viewtopic.php?id=3639    11oct2006lêhồngBội
http://www.vnlinux.org/sitemoi/index.php?q=node/3545   Locdt18jun2007  Đoàn tuấn Lộc
http://vnlinux.org/vi-telex.mim
Cây nhà lá vườn: Gõ tiếng Việt với scim-m17n và new vi-telex.mim

http://forum.vnoss.org/viewtopic.php?id=4975 phanthanhNam24jun2007 cảitiếnscimgõviệt

scim&ubuntu7.04 http://forum.vnoss.org/viewtopic.php?id=5204   15sep2007

http://groups-beta.google.com/group/vnoss/files?_done=%2Fgroup%2Fvnoss%3F&   12oct2006ntdt_nguyễn duythọ

http://diendantinhoc.org/forum/topic/46894/scim-tables-vietnamese-voi-kieu-go-Telex-va-VNI-cho-FC6.html;jsessionid=83DEA39D5EF34BB772B8B779FFE63180?zone=3  29dec2006thachanh_myquartz

http://thachanh.tin1k41.com/scim/scim-tables-vietnamese-ext-0.5.6-9.tar.gz   24jul2007 announce to ntdt_scim_vietlug

http://www.nabble.com/m17n-vi-telex%2C-new-input-map-tf4679545s16577.html      24oct2007nikkel_dinhchau
http://www.nabble.com/file/p14621106/vi-telex.mim.zip ---correct version--
http://www.nabble.com/attachment/16496171/0/scim-tables-vietnamese-ext-0.5.6-14.tar.gz

http://forum.vnoss.org/viewtopic.php?id=4975  PhanthanhNam24jun2007 Cải tiến phương pháp nhập tiếng Việt trong SCIM
8sep2007 wj-->scim_ooffice :hỏi vì không biết gõ việt với scim trong ooffice (bập bẹ với scim : mù tịt vì chẳng hỏi được ai ! )

http://wangji.hoan.googlepages.com/scim-viettiti-upd.deb    24oct2007wangji.hoan

http://people.vnoss.org/~vnpenguin/fedora7/xvnkb/    extra_encoding_xvnkb_fedora7oct2007daiquy

http://www.nabble.com/m17n-vi-telex%2C-new-input-map-to13370969s16577.html#a14621106
   4jan2008nikkel_dinhchau_last_mimtelex
http://www.nabble.com/file/p14621106/vi-telex.mim.zip  04jan2008Nikkel

15/9/2008  scim-viettiti ra đời : (scim và ubuntu-7.04 )
http://forum.vnoss.org/viewtopic.php?id=5204&p=1
2/5/2008  bộ gõ xvnkb-scim-unikey  ra đời : (học với ubuntu )
http://forum.vnoss.org/viewtopic.php?id=5261&p=3
30/5/08  scim-unikey-amd64  livecd ok !
http://ubuntu-vn.tuxfamily.org/forum/viewtopic.php?f=11&t=607&start=10

phan anh Dũng (beautiful hán nôm )
http://lists.hanoilug.org/pipermail/hanoilug/2008-March/002690.html
http://sager-pc.cs.nyu.edu/~huesoft/hacao-m17n/
http://128.122.140.98/~huecit/huecit-m17n/puppy-216-remaster.iso

http://www.ddth.com/showthread.php?p=1191153
22/jun2008  fnf báo có bản vá cho vi-telex.mim và vi-base.m

26jun08  xvnkb-scim-unikey  cho ubuntu fedora  (version 8 / 9 )

73 Reply by wangji 04/07/2008 22:29

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                   Ngoảnh lại thăm viếng wrapper  /  wrapper  revisited .

  Thường xuyên ,khi ai dùng kde với gõ chữ việt  thì chỉ có một dạng gõ trên bản soạn thảo .
Đây cho ta thí nghiệm trên bất kỳ sọan thảo nào trong Kubuntu hay
K fedora 9 dịch chuyển giữa scim và xvnkb .

0  Khởi Kubuntu-8.04-livecd

1 tải về gói xvnkb-scim-unikey-ubuntu386.deb
     clicclic gói deb đó rồi cài install

Tới đây bất kỳ sọan thảo nào có mặt trên bàn giấy desktop đều cho gõ chữ việt với xvnkb .
Mở terminal gõ ./unikey_wrapper kwrite  hay ./scim_wrapper kwrite cũng gõ được chữ việt.


  2  Kmenu_logout_login trở lại   ,hay nhanh hơn , gõ  ctrl-alt-backspace  .
Khi X trở lại ta có bàn phím scim ở góc phải phía dưới

  Nhấn chuột trên bất kỳ icon_kapps nào  (kwrite,kmaik,konqueror,knotes ...)-xvnkb

  đều có thể gõ chữ việt dưới 2 dạng  scim / xvnkb.

scim_telexQuartz/xvnkb_off   <--- nhấn tí (子) chuột--> scim_kbdenglish/xvnkbTelex


  Riêng trình open office word không thuộc môn phái Kde ,phải làm thao tác clicclic oowriter-scim_icon  để có thể gõ chữ việt với scim.
Nhưng lúc đó ,không còn thể chuyển sang xvnkb nữa !
Và vì điểm 2 mặc định đặt hệ scim tòan diện - global - không thể chạy xvnkb_wrapper oowriter  !( như lúc chỉ khởi điểm 1 !)

   Đó là các óai oăm  về wrapper /local/global.

Để hiểu làm sao ở đây chúng ta có thể chọn hoặc scim ,hoặc xvnkb trên cùng văn bản ,mà chỉ bật tắt trên icon : với scim việt : kbd_english  ,với xvnkb telex/off !

  Ta hãy làm các thí nghiệm sau ; -thí nghiệm ...nó cụ thể  hơn chục dòng giải thích  .

  Làm lại hai điểm 0 và 1 như trên ,tức là khởi kubuntu và cài gói xvnkbscimunikey  nhưng chưa đăng ký môi trường scim (điểm 2 )

  Để giả mạo điểm 2 bằng 2 ngón tay ,trong terminal gõ

   cp  /etc/X11/Xsession.d/74custom-scim_startup  foo

   echo "sudo killall scim-bridge" >> foo
   echo " skim -d -c kconfig" >> foo
   sh  foo

Đọc foo  ..và quan sát !
tỉ dụ muốn chạy scim với openoffice bằng 2 ngón tay :

3  Mở Kmenu_system_terminal  ,gõ  sudo killall  scim-bridge
rồi
  Kmenu _ utilities _ skim  ; rightclic icon_skim  _configure Frontend_general scim other_configModule __ chọn kconfig  (thay cho mặc định simple !) __apply __ ok

   Mở Kmenu_ office __ word processor    clic bàn phím scim chọn vietnamese  TelexQuartz
là gõ việt trong oowriter

Hãy suy nghĩ phải làm thế nào để các thao tác vừa làm 2 ngón tay ,chạy trên livecd !

  Khi loay hoay chơi với foo trong terminal ,các biến môi trường chỉ có hữu hiệu thừa kế cho các trình gọi từ terminal đó
Trong khi các tệp đặt tại /etc/X11/Xsession.d/  đều hữu hiệu tòan diện
ngay sau khi khởi phiên xsession .
Coi chừng với các dịch vụ nòi giống Kde -như skim  - thì phải đợi
giao diện Kde nạp xong xuôi ,nhất là  dịch vụ DCOP ,chứ không thể nhét chỗ khởi scim  ! 

Tất cả mọi điểm nêu ở trên với Kubuntu   đều hữu hiệu y hệt với
K fedora 9  với gói xvnkb-scim-unikey-anyfedora
trừ trình ooffice writer  không có cài trong Kfedolivecd .

Last edited by wangji (05/12/2008 23:43)

74 Reply by wangji 06/07/2008 13:21

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                               wrapper  revisited .( tiếp theo )


0  Khởi Kubuntu-8.04-livecd

1  tải về gói xvnkb-scim-unikey-ubuntu386.deb
     clicclic gói deb đó rồi cài install

2  Trong terminal  gõ
   $cat > xvnkb-scim_wrapper << EOF
#!/bin/sh
sudo killall scim-bridge >/dev/null 2>&1
export LANG=en_US.utf8
export QT_IM_MODULE=scim-bridge
#export XMODIFIERS="@im=scim-bridge"
skim -d -c kconfig
export LD_PRELOAD=/usr/local/lib/xvnkb.so.0.2.9
xvnkb
$1
EOF

$chmod +x  xvnkb-scim_wrapper

Chạy lệnh và so sánh  : 
   a  $./xvnkb_wrapper  kwrite                         --> chỉ gõ việt với xvnkb
 
   b  $./xvnkb-scim_wrapper  kwrite                 -->  gõ việt với xvnkb  hay scim  trong soạn thảo kwrite !

Thao tác ctrl-alt-backspace  đóng mở lại cửa hàng X - refresh X -  đọc cái /etc/X11/Xsession.d/74custom-scim_startup và suy nghĩ khác nhau thế nào khi so sanh với xvnkb-scim_wrapper vừa mới tạo !

Thử làm tương tự với unikey .
Suy nghĩ tại sao unikey_wrapper kwrite cho phép gõ việt với unikey ,tuy " unikey-scim_wrapper" chỉ cho gõ với scim mà tắc kẹt" với unikey  !!!

Last edited by wangji (05/12/2008 23:44)

75 Reply by lyk 06/07/2008 23:51

  • lyk
  • Thành viên
  • Offline
  • Đăng kí: 16/08/2006
  • Bài: 131

Re: Học với ubuntu

newbie mà với được tài liệu này, cũng giống như người sắp chết đuối vớ phải... chai nước khoáng La Vie. big_smile

Last edited by lyk (06/07/2008 23:51)

TeX: http://viettug.org/forum * Arch repos: http://kyanh.zapto.org:9999/?p=archlinux

Topic options

RSS

Trang: 1 2 3 4 5

You must đăng nhập or đăng kí to post a reply

VnOSS forum » Thảo luận chung » Học với ubuntu


Jump to forum:
Thông báo Góp ý, báo lỗi ABC ... Thảo luận chung Lập trình Networking An toàn, bảo mật Multimedia, Entertainment, Desktop Cơ sở dữ liệu Howto Dịch thuật Service4fun(d) Việc làm - Doanh nghiệp - Thị trường Bản tin (obsolete) Vừa học, vừa chơi (La)TeX Ứng dụng & Dịch vụ của Google Các chủ đề khác Trash Hacao Linux FC-One

Powered by FluxBB

[ Generated in 0,655 seconds, 8 queries executed ]

  PageRank
Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp Tự động Chính tảBỏ dấu kiểu mới [ Bật/Tắt (F9) Ẩn/Hiện (F8) ]

VnOSS forum » Thảo luận chung » Học với ubuntu

Trang: 1 2 3 4 5

You must đăng nhập or đăng kí to post a reply

Học với ubuntu (Trang 4 / 5)

Bài [76-100/123]

76 Reply by vnpenguin 07/07/2008 02:17

  • vnpenguin
  • FêĐôVô
  • Offline
  • Đăng kí: 03/07/2004
  • Bài: 4515

Re: Học với ubuntu

wangji viết:

2  Trong terminal  gõ
   $cat > xvnkb-scim_wrapper << EOF
#!/bin/sh
sudo killall scim-bridge >/dev/null 2>&1
export LANG=en_US.utf8
export QT_IM_MODULE=scim-bridge
#export XMODIFIERS="@im=scim-bridge"
skim -d -c kconfig
export LD_PRELOAD=/usr/local/lib/xvnkb.so.0.2.9
xvnkb
$1
EOF

$chmod +x  xvnkb-scim_wrapper

Chạy lệnh và so sánh  : 
   a  $./xvnkb_wrapper  kwrite                         --> chỉ gõ việt với xvnkb
 
   b  $./xvnkb-scim_wrapper  kwrite                 -->  gõ việt với xvnkb  hay scim  trong soạn thảo kwrite !

Hai nhận xét nhỏ:

1. Nếu có một ứng dụng nào đó (giả sử thôi) khi chạy cần có LD_PRELOAD riêng của nó thì wrapper này sẽ không dùng được smile Do vậy nên kiểm tra biến LD_PRELOAD trước, không có thì mới định nghĩa mới, có rồi thì check xem đã có .so cần trong đó chưa, có rồi thì thôi, chưa có thì thêm vào.

2. Cứ mỗi lần chạy wrapper là nó lại phóng (launch) xvnkb à ? Phí quá, vì nếu xvnkb đã có chạy trước đó rồi thì cần gì chạy nữa đâu hè smile

"La photographie est une brève complicité entre la prévoyance et le hasard." John Stuart Mill

77 Reply by wangji 07/07/2008 14:25

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

vnpenguin viết:

Hai nhận xét nhỏ:

1. Nếu có một ứng dụng nào đó (giả sử thôi) khi chạy cần có LD_PRELOAD riêng của nó thì wrapper này sẽ không dùng được smile Do vậy nên kiểm tra biến LD_PRELOAD trước, không có thì mới định nghĩa mới, có rồi thì check xem đã có .so cần trong đó chưa, có rồi thì thôi, chưa có thì thêm vào.

2. Cứ mỗi lần chạy wrapper là nó lại phóng (launch) xvnkb à ? Phí quá, vì nếu xvnkb đã có chạy trước đó rồi thì cần gì chạy nữa đâu hè smile

yep,sir.
ya absolut rite for #1  !

1 có thể làmnhư LD_PRELOAD=/usr/local/lib/xvnkb.so,$LD_PRELOAD  được không ,nếu muốn giữ các LDPRELOAD  của apps tư nhân  ?
(8/7/08 :sai bét ! vẫn chưa hiểu đúng để...mần )

2 mình vẫn có cảm tưởng - sai hay không ? - là tha hồ gọi xvnkb ,nó vẫn chỉ có instance đầu chiếm chỗ bộ nhớ  !!(hey cảm tưởng thôi chưa biết cách check đàng hòang )
--> mở oowriter-xvnkb  và  gedit-xvnkb  chỉ có một "instance" xvnkb xuất hiện
"nếu có khả năng 2 bàn phím song song" chạy cho 2 soạn thảo trên ...thì chắc chắn có vấn đề : anh nào nhanh tay là chuyển trước xvnkb !!!
Hỏi tại sao không xvnkb_local_instance ...thì phải hỏi MexừChuối

Last edited by wangji (08/07/2008 13:04)

78 Reply by lyk 07/07/2008 16:58

  • lyk
  • Thành viên
  • Offline
  • Đăng kí: 16/08/2006
  • Bài: 131

Re: Học với ubuntu

Xin lỗi bác.

Đến bây giờ vấn đề của bác là gì? Mình đọc mấy bài cuối nhưng mà nhiều chi tiết quá 0 hiểu đầu đuôi chi trơn.

Một người bạn của mình (xài Arch) có một miếng vá nho nhỏ, giải quyết được vấn đề gõ xvnkb với kde. Có phải bác muốn vậy? Mình có thể gửi bác miếng vá đó. (mình đã 0 công bố vì nó hiện chỉ thích hợp cho Arch -- tuy nhiên cách tiếp cận thì có thể học hỏi được)

Have fun!

TeX: http://viettug.org/forum * Arch repos: http://kyanh.zapto.org:9999/?p=archlinux

79 Reply by wangji 07/07/2008 19:09

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

lyk viết:

Một người bạn của mình (xài Arch) có một miếng vá nho nhỏ, giải quyết được vấn đề gõ xvnkb với kde. Có phải bác muốn vậy? Mình có thể gửi bác miếng vá đó. (mình đã 0 công bố vì nó hiện chỉ thích hợp cho Arch -- tuy nhiên cách tiếp cận thì có thể học hỏi được)

Have fun!

hi,
1 cứ gửi vá .

chờ !


  Để chọn vẹn ,cái gtk-im-vi của Lý Sư pclouds (2006) cũng vừa cài vô đây ( 6 aug 2008)

          mì ăn liền lẩu thái  x86_64   aka 64bits  (15 jul 08 )

       xvnkb-scim-unikey-fedora9-x86_64  gnome/kde
      xvnkb-scim-unikey-ubuntu8-amd64

     mì ăn liền lẩu việt x86_32 aka 32 bits (i386 i686 ...)

      xvnkb-scim-unikey-anyubuntu386  7.04 to 8.04 ,intrepid (alpha1)

  xvnkb-scim-unikey-anyfedora386  f7,8,9  gnome or kde

Last edited by wangji (07/08/2008 01:50)

80 Reply by lyk 07/07/2008 21:23

  • lyk
  • Thành viên
  • Offline
  • Đăng kí: 16/08/2006
  • Bài: 131

Re: Học với ubuntu

Em sẽ hỏi lại lão bạn xem cái wrapper đã có trên Arch là thế nào.

Tại em thấy bài của bác viết rất nhiều, nhưng em lại không quen với văn phong của bác. Đọc tùm lum ... phải chịu khó lắm mới đoán ra được topic.... nên em làm liều hỏi bác như vậy.

Mong bác lượng thứ!

Last edited by lyk (07/07/2008 21:24)

TeX: http://viettug.org/forum * Arch repos: http://kyanh.zapto.org:9999/?p=archlinux

81 Reply by wangji 09/08/2008 02:18

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Khoác áo vào các gói gõ chữ việt



Sau khi cài gói xvnkb-scim-unikey-ubuntu386.deb  khởi clic vào gedit-xvnkb cho phép chọn nhiều kiểu gõ chữ việt.

Nhấn chuột phải trong màn rồi inputmethod  sẽ thấy
  1  X input method     gõ với xvnkb của Chuối
  2  pclouds-telex (| vni )  gõ với  gtk-im-vi  của pclouds
  3  scim | scim-bridge  -> leftclic scim-keyboard -> vietnamese -> chọn m17n_mim / scimtable
  4  unikey input method  gõ với x-unikey  của PkLong

  Kiểu gõ scim-m17n  multilang đều ở dạng vi-xyz.mim  chỉ cần đổi tên xyz là có điều kiện phân biệt "áo khoác" gói
vi-xyz.mim của ai ,nguồn gốc từ đâu ...đọc một hai cái sẽ thấy ngay.

  Kiểu gõ scim-table (của thạchAnh ) và gtk-im-vi ( của pclouds )  tế nhị hơn .
Cài bản gốc  :
        http://thachanh.tin1k41.com/scim/scim-t … 6-9.tar.gz
thì có "áo khoác ngoài" là /usr/share/scim/tables/Telex.bin (VNI.bin)  và "áo khoác trong" là Telex (VNI) ;
"áo khoác trong" hiển thị khi clic vào inputmethod - scim - vietnamese    ->scim-kbd

Cài bản gốc :
        http://dev.gentoo.org/~pclouds/files/gt … 1.1.tar.gz
thì có "áo khoác ngoài" là /usr/lib/gtk-2.0/2.10.0/immodules/im-telex.so  hay im-vni.so  và "áo khoác trong" là
vietnamese (telex)  hay vietnamese (vni)

   Như vậy người dùng khó thấy chữ telex đó là liên quan tới thạchanh_scimtable  hay pclouds_gtkim  !
Để sau này dễ phân biệt cho ai muốn tu sửa các gói gõ chữ việt ,tui muốn đổi

scim-table  áo ngoài tên telex-thachanh.bin   vni-thachanh.bin
                    áo trong        telex-Quartz              vni-Quartz
gtk-im-vi   áo ngoài        im-telexPclouds.so    im-vniPclouds.so
                   áo trong         pclouds-telex             pclouds-vni

   Đổi tên như vậy cho phép học hỏi đọc nguồn , thay đổi nhưng không dính nhiều tới cú pháp mà chỉ liên hệ tới
các tiện ích quá thường dùng configure , make  ... mà thực ra những ai không viết lập trình thường ít biết !
Ôn lại bài   
19/11/2007 16:37       Học với ubuntu :bài số #17  Từ configure/make tới autotools

  A  thachanh

   Sửa gói  scim-tables-vietnamese-ext-0.5.6-9   khá dễ ;  Kê sau đây 3 cách làm để có cái nhìn từ nhiều góc

       1   Dùng 2 ngón tay  , không configure ,cũng chẳng makefile .... Chỉ ghé chân vào trình scim-make-table
       2   Sửa trực tiếp gói bản gốc ,rồi dùng make để biên dịch
       3   Ghép bản nguồn của thạchanh vào gói  scim-tables-0.5.8.tar.gz  lấy từ sfnet ,rồi dựa theo cái viqr có săn trong đó...làm tiếp !
             

  tháo nén bản gốc    
http://thachanh.tin1k41.com/scim/scim-t … 6-9.tar.gz
chỗ mới hơn
http://code.google.com/p/scim-tables-vietnamese-ext/


                1    Khoác áo thạchanh với 2 ngón tay



   thay trong tệp Telex.txt.in 
  dòng 18
-   ICON = @SCIM_ICONDIR@/vikb.png
+  ICON = /usr/share/scim/icons/vikb.png

  và dòng 21
- NAME = Telex
+ NAME = Telex-Quartz

gõ :
   scim-make-table      Telex.txt.in  -b -o  Telex-Quartz.bin
 
  Làm tương tự cho VNI-Quartz.bin ;  Install bằng tay với
  cp         Telex-Quartz.bin VNI-Quartz.bin   /usr/share/scim/tables
  cp      vikb.png     /usr/share/scim/icons/


               2     Sửa trực tiếp bản gốc

  các dòng NAME=  Telex-Quartz   cho  Telex.txt.in
                  NAME= VNI-Quartz      cho  VNI.txt.in
và sửa Makefile  cho phù hợp 
  coi bản đã sửa  http://people.vnoss.org/~wangji/scim-ta … 6-9.tar.gz

             3      Dựa gói   scim-tables-0.5.8.tar.gz 
lấy từ sfnet :
          http://sourceforge.net/project/showfile … _id=108454

  kiểu gõ viqr đã được đưa vào gói này từ lâu do samuel Thibault nhóm "linux user group khiếm thị" tại trường
sư phạm Lyon ,miền nam nước Pháp .
Như vậy chỉ cần "nhét" 2 gói Telex.txt.in VNI.txt.in  của ThạchAnh rồi loay hoay sửa 2 têp
   tables/vi/Makefile.am   
   configure.ac
  Sau đó  gõ lần lượt  aclocal  ,  automake  ,autoconf 
rồi chỉ cần ./configure  --enable-skim-support=no ,và  make như thường lệ

aclocal  để tạo lại môi trường làm việc
automake sẽ đọc các Makefile.am rồi tạo Makefile.in để dùng cho configure
autoconf  sẽ đọc configure.ac  để tạo configure

  coi bản đã sửa  http://people.vnoss.org/~wangji/scim-ta … rtz.tar.gz

      B  pclouds

  Đổi tên áo trong cho gtk-im-vi khá dễ ;  Đổi cả áo trong lẫn áo ngoài thay đổi khá nhiều
Hay nhất là quan sát 
bản gốc                  http://dev.gentoo.org/~pclouds/files/gt … 1.1.tar.gz
và bản đã sửa     http://people.vnoss.org/~wangji/gtk-im- … uds.tar.gz

  Vì gói gtk-im-vi ra đời khá lâu (automake-1.7)  cần chạy aclocal ,automake ,autoconf  như trên (./configure --prefix=/usr )

Last edited by wangji (05/12/2008 23:10)

82 Reply by myquartz 09/08/2008 14:50

  • myquartz
  • Không rõ
  • Offline
  • From: HCM và HN
  • Đăng kí: 17/09/2007
  • Bài: 135

Re: Học với ubuntu

Thạch Anh đã đưa code mới nhất của bảng định nghĩa lên Google Code, thay vì tải các file gốc như trên, hãy tải từ:
http://code.google.com/p/scim-tables-vietnamese-ext/
Cảm ơn wangji đã bỏ công viết hướng dẫn install cho Ubuntu.

83 Reply by wangji 04/09/2008 23:17

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                   Đôi lời  về gói  KNOPPIX  cloop_compressed_iso_image

ôn lại :
học với ubuntu #18,19  và howto ai thích build thật với ảo

Đa số livecd hiện nay dùng 2 loại nén squashfs và cloop  cho các cây thư mục lớn bự (700MB_cd  2.5GB_dvd ..)
ubuntu ,cũng như fedora đã chuyển sang squashfs trong khi đó tất cả các Knoppix_chính quy đều vẫn giữ dạng nguyên thủy cloop dùng từ cuối 2002 (dĩ nhiên nhiều phiên bản đã ra đời phù hợp với đòi hỏi ngày càng nhiều )

  Nếu ta đang dùng ubuntu ,muốn tò mò quan sát cái tệp bự KNOPPIX ,không có mẹo nào
Thế thì phải làm thế nào ?
Có 4 cách :

    1 nếu tệp KNOPPIX đó nằm trong một  livecd : khởi qemu -cdrom livecd.iso  && examine /KNOPPIX

   nếu tệp KNOPPIX nằm riêng lẻ :   

    2  qemu  -cdrom anylivecd.iso  -hdb KNOPPIX  -boot d  &&  mount /dev/hdb  /mountpoint

    3  qemu  -kernel vmlinuz  -initrd  initrd.gz  -hda /dev/zero -hdb  KNOPPIX  && mount /dev/hdb  /mountpoint

    4  extract_compressed_fs  KNOPPIX > knoppix.iso  && mount -o loop knoppix.iso  /mountpoint

Cái 1 chạy là vì livecd họ tạo như vậy ! kernel trong đó có driver_cloop.ko cho phép móc mount tệp KNOPPIX

Điểm 2 và 3  chạy là nhờ qemu có tự giác đọc hệ tệp loại cloop  ! (chạy qemu như vậy ...là .. ít người ...dùng   !) Dĩ nhiên ,mount /dev/hdb trong console_qemu

Điểm 4 là tiện ích của "knoppix" để tháo nén trở về đĩa ảo dạng iso

  Trong gói  funqemu.tar.gz (5MB )  có  puppytiti.iso , dslvntiti.iso  và KNOPPIX cùng với  tools.sqsf
các gói livecd iso đó đã bị loại các thứ không cần thiết cho các thao tác trên nên chỉ có chừng 2-3MB
vmlinuz initrd.gz  lấy từ các livecd iso đó  !
( nguồn rõ ràng là puppylinux_squashfs và damnsmalllinux_cloop !  dslvn là vì đã thay minirt24.gz của dsl )
Gói KNOPPIX nhỏ xíu - 150KB -để trình bày nguyên tắc !
Thay anylivecd.iso  với puppytiti hay dslvntiti  !

Last edited by wangji (05/12/2008 23:11)

84 Reply by wangji 05/10/2008 22:28

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                Bát Chánh Đạo tới livecd :The Eightfold Way To Livecd

Trên đường tạo livecd là đầy vấn đề ,không khó nhưng cũng chẳng dễ ;Mỗi distro có một cách riêng ,script hầu như
chỉ chạy cho distro đó. Nếu muốn ngồi trên tọa sen ubuntu mà lại tạo livecd cho fedora hay slackware -hay bất kỳ
phân vùng hd đã cài  ,chỉ có một cách : đi tu Bát Chánh Đạo : The Eightfold Way to LiveCd .

                           Chánh Đạo một : thủ hiền,thân lành

                           Chánh Đạo hai : ngoảnh nhìn tiền kiếp để giải thoát oái oăm nghiệp chướng

                           Chánh Đạo ba  :  am hiểu tiền kiếp để chuẩn bị lột thể xác

                           Chánh Đạo bốn : gò ép  ( cramfs  cromfs  cloop  squashfs  )

                           Chánh Đạo năm : Trở về cội nguồn

                           Chánh Đạo sáu : hội nhập ( ramdisk   ,unionfs  ,aufs )

                           Chánh Đạo bảy : nghiệp chướng ( chủ não 2.4/2.6  , kinh điển  glibc 2.2/2.4 )
                             
                           Chánh Đạo tám :

Last edited by wangji (05/12/2008 23:11)

85 Reply by wangji 05/10/2008 22:30

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Chánh Đạo một : thủ hiền,thân lành

  Cái đầu kernel mà không có thể xác coi như bất thiện . Tất cả các distro hiện có là bật lên cái thân nhập vào cái đầu , mà ít ai được coi đọan trung gian : khởi đầu là nạp kernel ,gọi tiền kiếp -initramdisk-sống tạm tới lúc lôt da
đổi thể xác - chroot -
Để quan sát nghiệp chướng trước khi đổi thể xác,tạo  gói hoclinux1.iso nhỏ xíu - 7MB đủ để thực thi như livecd lớn
để ngâm cứu lề lối họat động ! ( nhỏ để tránh cho ai thiếu điều kiện kết nối mạng nhanh )
 
a Thử livecd như thường lệ .

qemu -cdrom hoclinux1.iso

Gõ enter hay return  lúc  boot :
Khi vào linux terminal  các lệnh thông thường để bíết hòan cảnh hệ thống
uname -a , export , mount ,df , ls /cdrom  , ls  /mnt ,lsmod ,ifconfig , ping -c 2 $URL   ....
Để thử tải tệp từ vnoss  :
busybox  wget  http://people.vnoss.org/~wangji/busybox_uclibc_static
chmod +x busybox_uclibc_static  &&  ./busybox_uclibc_static

Ở trường hợp này ,khởi lõi kernel ,nạp minirt24.gz vào ramdisk rồi chạy linuxrc ;từ đó tháo nén và nạp  rootfs  cây
- gói rootfs.clp - rồi lột da chroot sang rootfs đó để  init tiếp  ,mà người ta thường gọi change root on real device
khi chạy với hdd thật !
Thư mục /cdrom  chứa dữ liệu của đĩa cd ảo hoclinux1.iso
                /mnt    chứa cây đã tháo nén rootfs.clp  có trong đĩa hoclinux1.iso

b  Dừng chân nơi ramdisk   

qemu -cdrom hoclinux1.iso

Gõ "b" để nạp vào hòan cảnh gần giống a)  ; chỉ thiếu  thao tác chroot
Tiếp tục quan sát như điểm a ; Sẽ thấy tải từ vnoss bị lỗi  " bad address vnoss.org "

Máy chủ Host -từ đó qemu khởi hoclinux1.iso  - có ip = 10.0.2.2
máy khách Guest - hoclinux1- có ip =10.0.2.15
Lịnh route cho thấy cổng chính gateway là ip máy chủ
gõ  ping  -c 2  10.0.2.2  chạy ok  ,tức mạng nội địa -local net - chạy tốt

Không ra được ngoài đời www là vì busybox_static có vấn đề với thư viện libnss libresolv và libbind
Để giải quyết khâu này ,trên nguyên tắc ta chỉ cần chroot sang cây thư mục /mnt  ,đã móc rootfs
     1 chroot  /mnt  /bin/bash 
        mount -t proc proc /proc
thử tải tệp từ vnoss với busybox wget  như điểm a ;sẽ bị báo lỗi  readonly filesystem
     2 Kiểm tra mount  /  ext2 (rw) ,nếu chỉ ro thì remount nó rw
    busybox mount -o rw,remount  /
    busybox mount --bind  /home  /mnt/home  để có thể viết vào đó
rồi chroot và tải tệp vnoss như trên.
   Sẽ bị báo lỗi đĩa hết chỗ ! (đĩa ảo minirt  dĩ nhiên  !)
   3 Tạo một đĩa ảo ramdisk 10MB mới rồi làm tiếp .
  mkdir  /ramdisk
  busybox mount -t tmpfs  -o size=10000k  /ramdisk  /ramdisk
mkdir /ramdisk/home
busybox mount --bind /ramdisk/home  /mnt/home
chroot tiếp như trên !
   4 Hòanh tráng hơn là sau khi tạo đĩa ảo ramdisk,nạp unionfs.o rồi móc hội nhập (mount -t unionfs ...)
/ramdisk với /mnt (rootfs)  !! Sẽ trở lại điểm này ! (unionfs.o  có trong minirt thư mục /modules)

c tháo nén hoclinux1.iso ,chép các tệp [linux24,minirt24.gz ,mimi.gz rootfs.clp ] vào cùng thư mục chứa tệp iso

Để chơi nghịch vài khía cạnh khác

   c1
  qemu  -kernel linux24  -initrd  minirt24.gz  -hda /dev/null

nó sẽ chạy ,tìm gói /cdrom/KNOPPIX/KNOPPIX không thấy ,tuột vào ash (cái shell nhỏ xíu của knoppix ,nhỏ hơn cả dash của redhat !),nhưng cũng có thể quan sát vói mount ,cat /proc/filesystems....
cái -hda /dev/null là bó ép của qemu phải có đĩa hda ;/dev/null là chốn vô thiên vô dịa ,giếng đen không ngó tới bận tâm !

   c2
  qemu  -kernel linux24  -initrd  mimi.gz  -hda /dev/null
thì tuột vào cái busybox static đầy đủ lịnh linux để ...vọc !

   c3
  qemu  -kernel linux24  -initrd  mimi.gz   -cdrom hoclinux1.iso  -hda /dev/null
Đủ hết mọi thứ ;ghi chú là không bó buộc kernel minirt.gz giống y hệt cái có trong iso   !!
Đó là một hình thức để thử kernel mới !

   c4
  qemu  -kernel linux24  -initrd  mimi.gz   -cdrom hoclinux1.iso  -hda /dev/null -append " root=/dev/ram0"

Lần này chỉ dừng chân tại ramdisk với kernel  !
gõ  PATH=/static
     mount -t proc proc /proc
là có đàng hòang busybox  ,nhưng lsmod không thấy drivers nào hết
Chạy  ./linuxrc_fun 
sẽ nạp drivers cho cạc mạng ne2k-pci  (qemu mặc định đòi nó ).  Vọc mà quan sát
Nếu vô tình các lịnh không được thực thi ,nhớ kiểm PATH bằng lịnh "export"
hoặc trực tiếp gõ PATH=/stat

   c5
   qemu -kernel linux24 -initrd mimi.gz -hda rootfs.clp
vào được ramdisk ,nhưng ,lsmod thấy có drivers mạng  ,ping local_net ok
phải
mount /dev/hda /mnt  để móc rootfs vào điểm /mnt

   c6
    qemu -kernel linux24 -initrd mimi.gz -hda hoclinux1.iso
vào ramdisk, muốn đọc đĩa ảo iso thì móc nó vào /mnt
mount /dev/hda   /mnt

   c7
     qemu -kernel linux24 -initrd mimi.gz -cdrom  hoclinux1.iso -hda /dev/null
vào ramdisk...cdrom đọc ...tự động !

    c8
      qemu -kernel linux24 -initrd mimi.gz -cdrom  hoclinux1.iso -hda mimi
vào ramdisk ,đọc được cdrom ,đĩa  hda  ! ping local
(mimi là copy_ tháo_nén của mimi.gz dĩ nhiên )

    c9
     qemu -kernel linux24  -cdrom  hoclinux1.iso -hda mimi

Lỗi
hda1 bad address : block 2 count 2  dev 03:01  sector 2 : unable to read superbloc ext2-fs
                                block 0 count 1          03:01  sector 0    unable to read sector 0 ,Fat-fs
                                block 64 count 2        03:01  sector 64  iso_blknum 16  block 32 ,isofs_read_super
kernel panic : VFS:unable to mount root fs on  03:01
Tại sao có 3 dòng lỗi ? kernel thấy báo hda mimi  ,vội chạy đi tìm những hệ tệp nó biết ; vì chưa nạp mô đun
gì cả nó chỉ biết các hệ tệp builtin : ở linux24 này có  ext2  fat và isofs  (Khi có console chạy gõ
cat  /proc/filesystems  thì thấy các hệ tệp đó - chỗ nodev - )
Vì mimi không thuộc loại bootable disk, kernel không boot vào nó được ,thế là chẳng có hệ tệp gì cả ,thế là kernel ...panic  !!

Last edited by wangji (05/12/2008 23:12)

86 Reply by wangji 06/10/2008 21:33

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                           Chánh Đạo hai : ngoảnh nhìn tiền kiếp để giải thoát oái oăm nghiệp chướng



Những oái ăm của tiền kiếp

    1 tiền kiếp knoppix
       qemu -kernel linux24 -initrd minirt24.gz -hda mimi

Dừng chân ở ash  của minirt24.gz  vì trong  đĩa mimi không tìm thấy tệp   /KNOPPIX/KNOPPIX . " ash "  không thân thiện như busybox  ,không có help thành mù tịt không biết có lệnh gì để dùng ,ngoài khai báo có

  mount umount  insmod rmmod lsmod và  cat   !!muốn quan sát  đĩa mimi  ,chạy

    mount -t ext2  /dev/hda  /mnt 
    cat  /mnt/linuxrc_fun
    cat  /mnt/linuxrc

Coi chừng ,ash  nhỏ xíu ,cú pháp viết không có thân thiện như bash ,viết
mount -text2  /dev/hda  /mnt
sẽ không chạy đâu .   Phải   " -t ext2 "  !

    2 
            qemu -kernel linux24 -initrd mimi.gz -hda mimi -append "root=/dev/ram0"

Dù các lệnh thường như " ls  , busybox..."  vẫn chạy , nếu gõ
  #mount    sẽ được khai báo   " no /proc/mounts  "
  #lsmod       thì bị  " cannot open /proc/modules "
Đó là hệ tệp procfs để lõi kernel ghi chú các hành động /  trạng thái ,kết quả chưa được " móc vào điểm móc cụ thể "

   #mount  -t proc proc  /proc  sẽ thoát cái nghiệp chướng "khai báo " đó .
Bây giờ mount sẽ được báo các hệ tệp đã móc  ;

rootfs  on       /   type  rootfs (rw )
/dev/root  on /   type  ext2 ( ro )
proc  on        /proc   type  proc (rw )

lsmod báo các modules đã nạp  ! nếu trống rỗng thì chưa có môđun nào !

#route add default gw  10.0.2.2
route : SIOCADDRT : Network is unreachable .  Đó là khai báo không làm sao kết nối được với cổng gateway

#ifconfig -a  báo có loopback device
Tạo mạng nội địa
#ifconfig lo 10.0.2.15
#route add default  gw  10.0.2.2
bây giờ có thể ping
#ping -c 2  10.0.2.2  chạy ok  tuy không ra thế giới www  được  !
ping -c 2 www.yahoo.com  báo bad address  !  ( Thiếu domain name resolution  !)


   3
qemu -kernel linux24 -initrd mimi.gz -hda rootfs.clp -append "root=/dev/ram0"


#ifconfig  eth0  10.0.2.15  được báo   " ifconfig:SIOCSIFADDR : no such device "
đó là interface address  ,trên máy thật thiếu cạc mạng ; trên máy ảo - như ở đây - thiếu môđun driver !!
Cắm giây cáp vào máy thật y hệt nạp mô đun - insmod - trên máy ảo ; Đẻ thóat nghiệp chướng ,gõ
#busybox insmod  /modules/crc32.o
#busybox insmod  /modules/8390.o
#busybox insmod  /modules/ne2k-pci.o 
thế là được báo
eth0: RealTek RTL-8029 found at 0xc100  ,irq 11  52:54:00:12:34:56  với số mac addr ảo  (không có cạc mạng trên  thị trường có số đó  !)
Tại sao phải nạp 3 mô đun ?  lần lượt như trên ?  Sẽ đề cập chuyện này trong Chánh Đạo ba

Bây giờ móc thể xác mới rồi lột da

#mount  /dev/hda  /mnt  &&  chroot  /mnt  /bin/bash
#ping -c 2  www.yahoo.com  báo unknown host
#ifconfig  -a    báo  cannot open  /proc/net/dev 
đó là vì sau khi lột da chưa tạo lại hệ tệp procfs trên thể xác mới  ! Giải thóat nghiệp chướng với

#mount -tproc proc /proc
là chạy được ifconfig -a  ; nhưng lúc đó cái ip đã sác định cho eth0 không còn đó nữa mà chỉ có mac_addres ảo là còn
  Đó là cái lý do nếu muốn giữ các tham số có trước khi lột da -chroot -  thì phải mount --bind /proc  /mnt/proc
trước khi chạy chroot  !!! Muốn giải thóat trường hợp này chỉ cần ifconfig lại cạc mạng  !
#ifconfig eth0  10.0.2.15
#route add gw  10.0.2.2
là trôi chảy  chuyện mạng .
 


   4
qemu -kernel linux24  -hda mimi  -append "root=/dev/ram0"
Fat: bogus logical sector size 0
kernel panic : VFS : unable to mount root fs on 01:00
Đó là khai báo không móc được vào cây gốc ramfs  Đơn giản vì không có initrd ,mà trái lại có đĩa hda .
Giải thóat nghiệp chướng này chỉ cần thay chữ ram0 bằng hda   !!!

   5
    qemu -kernel linux24  -hda mimi  -append "root=/dev/hdb"
lỗi
VFS: cannot open root device "hdb" or 03:40
please append a correct "oot=" boot option  r
kernel panic : unable to mount root fs on 03:40 
Giải thóat  thay hdb bằng hda   !

   6 
     qemu -kernel linux24  -hda /dev/null
Lỗi  :
hda1 :bad access : block 2 count 2  ext2-fs unable to read superbloc   dev 03:01(hda)  sector 2
hda1: bad access: bloc 0   count 1    Fat unable to read boot sector      dev 03:01 (hda) sector 0
hda1: bad access:  bloc 64 count 2  isofs_read_super                             dev 03:01 iso_blknum 16 bloc 32
kernel panic :VFS: unable to mount root fs on 03:01
Tại sao có 3 dòng lỗi ? kernel thấy báo hda /dev/null  ,vội chạy đi tìm những hệ tệp nó biết ; vì chưa nạp mô đun
gì cả nó chỉ biết các hệ tệp builtin : ở linux24 này có  ext2  fat và isofs  (Khi có console chạy gõ
cat  /proc/filesystems  thì thấy các hệ tệp đó - chỗ nodev - )
Vì /dev/null là chẳng có hệ tệp gì cả ,thế là kernel ...panic  !!


ps   Ngày xưa ,cách đây nửa thế kỷ ,cuối năm đầu trường radio - năm thứ 2 đại học - thi để lấy bằng "thợ giáp dây radio "  (hồi đó radio còn dùng đèn dây đốt cho cathode nóng bỏng  ,ở Pháp chưa có transistor bán dẫn 3 cẳng -ngay cả trong labo khảo cứu ! )Ông thày cắt dây rồi "dính nó lại như chưa cắt  tạo lỗi bug để sinh viên phải tìm lỗi
để có ...bằng !
   Trang này chúng ta cũng sẽ tạo lỗi - tuy ảo - nhưng khá giống thực tế ... để học các oái oăm nghiệp chướng !

Last edited by wangji (05/12/2008 23:14)

87 Reply by wangji 13/10/2008 01:51

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Chánh Đạo ba  :  am hiểu tiền kiếp để chuẩn bị lột thể xác

                       1 nhập hộ initramfs
                        2 dò tìm thíết bị
                        3 rắn già rắn lột

  Đại đa số distro linux ngày nay dùng initramfs phối hợp với lõi 2.6.x  . Trong các gói linux.iso đó đều có tương đương
vmlinuz và initrd.img  để khởi động đĩa cd .Khi lõi nạp initrd.img ,tháo nén vào  " đĩa ramfs " rồi chạy trình "init" có trong " gốc rootfs "  của initramfs .
  Với hầu hết các linux.iso hiện có trên mạng ,gõ :

   qemu  -kernel  vmlinuz  -initrd  initrd.img  -hda  /dev/null

lõi sẽ chạy init,dò tìm thiết bị ,rồi tìm thể sác rootfs mới để lột da ; tìm không thấy lõi sẽ dừng chân trong console
bash của rootfs_initramfs .
Trong console  này có thể quan sát môi trường của máy với hệ tệp procfs như
cat  /proc/mounts  để coi các hệ tệp đã được móc
       /proc/devices   coi các thiết bị lõi đã nhận dạng
       /proc/modules  coi các module_driver đã nạp
       /proc/filesystems  coi các hệ tệp lõi biết và đã nạp module_driver

Nhưng nếu muốn dừng chân lúc nhập hộ initramfs ,thì chỉ có một cách : thay cái tệp init trong initrd.img  băng
một script ngắn ngủi
  #!/bin/bash
exec  /bin/bash

Để tháo gỡ gói initrd.img (cpio_initramfs)  vào thư mục temp
mkdir  temp && cd temp && zcat  initrd.img | cpio -i  --no-absolute-filename
Chuyển init sang init_org và  thay init với script trên ,rồi tạo lại gói cpio với lịnh
find .   | cpio -o -H newc | gzip > ../initrd.img-mod
Gọi 
  qemu  -kernel  vmlinuz  -initrd  initrd.img-mod  -hda  /dev/null
sẽ được dừng chân ngay say khi nạp initrd.img-mod  ;quan sát so sánh với
với trường hợp khi chưa đổi init  !

  Chùa ubuntu có đặc điểm : các kinh điển init đều cho phép ngắt đoạn ,dừng chân lúc nhập hộ initramfs mà không
cần thay sửa tệp init. 
                                1  nhập hộ initramfs
Với tất cả các phiên bản từ 7.04 tới 8.10 chỉ cần gõ

qemu  -kernel  vmlinuz -initrd  initrd.img  -hda /dev/null  -append " break"

Hãy quan sát hệ procfs  như trên

CHÚ THÍCH :Đọc script init sẽ thấy có thể -append " break=mount"  hay break=premount....
                               
                                   2  dò tìm thiết bị


gõ trong console
(initramfs) /scripts/init-premount/udev
Hãy quan sát hệ procfs và so sánh với điểm 1 ở trên  ! Hai điểm đáng chú ý
  a  lõi nhận ra đĩa sda ,nạp cạc mạng ne2k_pci ,8390 ...
  b  So sánh kết quả lịnh "mount " với  cat /proc/mounts  sẽ thấy dòng :
       rootfs   /   rootfs   rw   0  0 
Dòng này không có trong mount ! Lý do :
Sau khi lõi nạp và được trao tay cái initrd.img ,lõi tháo nén gói cpio_initramfs  trên một cái pseudo partition
dạng ramfs và dùng như gốc cây  rootfs  ; Hệ rootfs này là hệ tệp đặc biệt -loài  pseudo filesystem,như procfs
tmpfs  ...-mà chỉ lõi dùng lúc khởi boot ! Vì nó không dính líu tị gì với các hệ tệp móc thường có  - tỉ dụ không thể umount nó được - nên không được phản ánh sang hệ tệp procfs   !!!


                              3   rắn già rắn lột

Nếu chạy thẳng thừng init ,mà không qua điểm 2  ... như boot nó thật ;tuy rằng vẫn chưa để rootfs thật để lột da chroot

                             4  mẹo chuột đồng

Tất cả các kết quả thử nghiệm quan sát có thể log với redirection > log .
Trên nguyên tắc cạc mạng cho phép kết nối với máy chủ host bằng lệnh ifconfig  và ip route có trong initramfs
rồi gửi log đó sang ông chủ host . Khổ nỗi trong busybox chỉ có ftp và tftp mà lại quá hiếm thí dụ cụ thể ,vậy đề nghị mẹo chuột đồng,rất hữu hiệu thay thế

Trước khi gọi qemu như trên ,hãy tạo một đĩa ảo nhỏ cỡ 10M với
   qemu-img  create  dsklog  10M
Trên nguyên tắc ,nếu muốn dùng như đĩa ,phải format nó với mke2fs dsklog ; Tỉ dụ quên không format nó ,vẫn có thể dùng ghi dữ liệu ....một cách cẩu thả ( cũng như đi mua chợ Nhật Tảo ,làm sao chắc hdd  đã format ngon lành ?)

  qemu  -kernel  vmlinuz -initrd  initrd.img  -hda dsklog  -append " break"

Sau khi chạy /scripts/init-premount/udev  để nhận đĩa ,nhưng không thể mount nó được
vì chưa format  có thể "chép "cái log đã thu ghi với dạng

cat  log  > /dev/sda   !!!

Tất cả các thứ đã ghi trong log sẽ được "nhét nhồi" vào dsklog qua thiết bị ảo /dev/loop  (loopback device )
Dĩ nhiên là dùng ẩu đả  thì không thể ghi các phiên khác nhau vào đĩa như đã có format ! ...nhưng nếu chỉ cần... có một lần thì ...ok thôi !
Chú ý :Chơi bậy trên máy ảo ,thì tha hồ ! Đừng dại dột dùng các thứ đó ...trên máy thật  !

Last edited by wangji (26/10/2008 16:46)

88 Reply by wangji 21/10/2008 13:57

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                   Chánh Đạo bốn  :  gò bó thể xác

                              A   phần một
       Có bao nhiêu cách gò bó ? Để dễ nói chuyện hãy kê ngắn gọn các lịnh dùng

1  squashfs  : ubuntu_archive/squashfs-lzma : slax_site
          mksquashfs  [-nolzma]  /path_srcdir  src.sqfs
          mount -oloop -tsquashfs src.sqfs  /mnt_point

2  cloop : http://debian-knoppix.alioth.debian.org/sources/
       mkisofs -R -joliet-long  /path_srcdir  | create_compressed_fs  -  65536  >  src.cloop
       insmod  cloop.ko  file = src.cloop  &&  mount /dev/cloop0  /mnt_point

3  zisofs
        mkzftree  /path_srcdir  src-zfdir/
        mkisofs  -R -joliet-long -z  -o  src-zftree.iso  src-zfdir/
        mount -oloop  src-zftree.iso  /mnt_point

4  cromfs : http://bisqwit.iki.fi/src/arch/cromfs-1.5.4.tar.bz2
       mkcromfs  /path_srcdir   src.cromfs
       cromfs-driver  src.cromfs   /mnt_point

5  cramfs
      mkcramfs  /path_srcdir  src.cramfs
      mount -oloop   src.cramfs   /mnt_point

5  axfs :   svn co https://svn.sourceforge.net/svnroot/axfs
       mkfs.axfs  /path_srcdir  src.axfs
       modprobe axfs.ko
       mount -t axfs -oloop src.axfs  /mnt_point
   
    doc: http://ols.fedoraproject.org/OLS/Reprin … eprint.pdf
            http://free-electrons.com/community/videos/conferences/

  6  pramfs :http://pramfs.sourceforge.net/

Last edited by wangji (05/12/2008 23:14)

89 Reply by wangji 25/10/2008 02:53

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Chánh Đạo bốn

                      B  phần hai

         
   Tạo hệ tệp nén có thể đọc mà không bung ra trước khi đọc - read on the fly - Đây là hệ nén hữu hiệu nhất hiện nay .
Ngày xưa zlib ,cramfs ,zisofs đã chạy từ ...lâu lắm (dùng trong cd-rescue của P Anvin - tác giả sys/isolinux chẳng hạn !)
Sau đó Knoppix đã cho nổi bật hệ nén cloop từ 2003 tuy loop.c viết từ 1993 bởi Theodore Ts'o ,biến sang compressed_loop.c nhờ Paul "Rusty" Russel,rồi Knopper đã thực hiện livecd Knoppix huy hòang ; cloop được bồi dưỡng tới dạng ngày nay- chuyển sang 4 device cloop0-cloop3- nhờ Alex de Landgraaf - tác giả Morphix-  !!
Knopper vẫn tiếp tục nâng cấp ,ghép cloop với advcompress cho hiệu quả nén không xa lắm với squashfs
Ngày nay khi nạp module cloop là cho phép có ngay 8 devices ,giống hệt với loopback_device  loop   ;

Cách dùng :

insmod cloop.ko   file = /path/KNOPPIX
mount -t iso9660 /dev/cloop0  /mnt/path/
Lý do type iso9660 là vì các gói nén KNOPPIX đã được tạo vói mkisofs + cloop_compresed !
Các gói nén sau đòi hỏi ghép với losetup  trước khi móc -mount-
losetup  /dev/cloopj   /path/KNOPPIXj
mount  /dev/cloopj   /mnt/path/knoppixj   

Áp dụng :

Từ hồi dvd-4.5Gb rẻ đi -2005- là người ta bắt đầu chuyển knoppix ,Quantian financial math hầu như là người đầu
với Knopper ! Vì vấn đề hệ tệp isofs bị hạn chế ở mức 2Gb (thừa kế con trỏ filesize ở 32bits ) thế là đẻ ra kiểu nén
gói thành khúc : knoppix  knoppix1 knoppix2  vv  mỗi cái dưới 2Gb
Sau khi
insmod cloop.ko  file=knoppix  đầu ,các gói sau nạp theo
losetup  /devcloop1  knoppix1
losetup  /dev/cloop2 knoppix2    .v v..

rồi móc hệ tệp mount  /dev/cloopj   /mnt-point_j  như thường lệ.

Last edited by wangji (05/12/2008 23:09)

90 Reply by wangji 25/10/2008 02:56

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                       Chánh Đạo năm   : trở về cội nguồn


   
Trong trang Chánh đạo ba ,ta có thử /scripts/init-premount/udev  để dò tìm thiết bị ...nhưng nó có vẻ ảo thuật
đầy huyền bí  không cho cảm giác cách udev làm việc !
  Để thử với 2 ngón tay ...cho chậm chạp hơn : dò tìm thiết bị lõi đã nhận (số dev Maj-min )

qemu -kernel vmlinuz-2.6.24-12-generic -initrd initrd.img-2.6.24-12-generic -hda /dev/null -cdrom /dev/null  -append "break"

  cho vào  initramfs   với  vmlinuz / initrd.img  của ubuntu-8.04 (dĩ nhiên chạy với phiên bản khác của ubuntu )

   modprobe ata_piix 
ls /sys/bus  sẽ tòi ra scsi  (không có trước khi modprobe  !)

  modprobe  sd_mod
ls  /sys/block sẽ tòi ra  sda
cat /sys/block/sda/dev  sẽ tòi ra  8:0  đó là Major:minor  dạng tên thiết bị sda mà lõi đã nhận ra
Sau đó chỉ cần :
  mknod  /dev/sda  b  8 0   là có chỗ móc đĩa hda khi gọi với qemu .
Dĩ nhiên ,nếu lúc gọi qemu với   -hda  disk_ao  ,mà đĩa ảo đã được chia nhiều phân vùng thì lõi cũng sẽ biết mà
nhận ra các phân vùng đó vào /sys/block/sda/sda1  sda2  ...vv  với Major:minor  8:1  8:2

modprobe  sr_mod
  ls /sys/block  sẽ tòi ra  sr0 
  cat  /sys/block/sr0/dev  sẽ tòi ra   11:0  tên thiết bị cho cdrom  !

Ỡ trên ta vừa thử dò tìm với bus scsi ; Đĩa hard disk  và cdrom được coi như đĩa scsi ,ở dạng emulated scsi .
Đó là dạng được khuyến cáo thay cho dạng cũ bus IDE  từ hồi có lõi 2.6 ,tuy dạng ide vẫn tồn tại

Tỉ dụ nếu
    modprobe ide_scsi 
thì tòi ra
ls /sys/bus/ide/drivers   --> ide-scsi
thêm  modprobe ide-cd   -->  /sys/bus/ide/drivers/ide-cdrom

  cat  /proc/modules  sẽ thấy

cdrom.ko --> ide_cd  sr_mod
ide-core  --> ide-cd   ide_scsi
scsi_mod --> ide_scsi  sr_mod sd_mod

  cái driver cdrom có thể dùng một trong hai bus đó  ide hay scsi  .

chú ý: Tất cả ghi chú của hệ thống đều nằm trong sysfs ,
procfs vẫn còn tồn tại ,và ghi tựa tựa như trên trong phần /proc/sys....chắc rồi /proc/sys sẽ bị loại thải về sau này ! và /proc chỉ còn tồn tại ghi ký sự process (các "nhánh" có ghi số - các lá có số chỉ là thread- thread chết đi thì lá ..rụng ) !

udev -hay mdev khi ai dùng busybox trong initrd -tỉ dụ slackware-12.1 - nó "đọc -scan-" các tham số trong hệ tệp sysfs rồi tạo dynamically các "nút" thiết bị dev   !

Nếu biên dịch lõi, đã chọn CONFIG_BLK_DEV_IDEDISK=y  - gọi là builtin module - thì không còn phải modprobe ide-disk nữa ! Chỉ cần đọc trực tiếp trong /sys  là tìm thấy dev-Maj-min !

Last edited by wangji (05/12/2008 23:15)

91 Reply by wangji 08/11/2008 22:06

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                       Chánh Đạo năm   : trở về cội nguồn
              b  thực tập

Dừng chân nơi ramdisk/initramfs  có khả năng rất lớn để giải đáp gỡ khâu vướng rối tơ tầm . Nhưng với ai chỉ quen
nút chuột thì chắc khó nắm cụ thể ;  Để dẫn đường từng bước , 2 trường hợp tượng trưng cho "tạo liveusb" đặt ra là

   1  MCNLive-Delft.iso
   2  AllInOnePendriveLinux

Giới thiệu : MCNLive do cô Chris của nhóm mandriva club Hà Lan tạo khoảng 05/2005 . Cái script mkmcnl cô ta viết
dựa trên mklivecd của Jaco Greef khi anh ta bật dự án minicd tại berlios.de . Tuy phỏng theo dự án nổi tiếng knoppix
của Klaus Knopper ,mklivecd cũng như mkmcnl được viết một cách giáo khoa ,phân chia rõ ràng phận sự các hàm ,
rất dễ theo dõi . Dĩ nhiên linuxrc trong đó cũng như vậy .
   
   mục tiêu :
  Trên mạng pendrivelinux cũng như nhiều chỗ khác ,họ thường để tệp iso ; muốn tạo liveusb đều phải tải về , đốt
bánh đa ,khởi máy từ bánh đa rồi cliclic chuột để tạo liveusb .
Trong chuyến tập sự này ,chúng ta sẽ làm khác đi tuy vẫn dùng nguyên liệu gốc của họ ;
   1 ta sẽ không đốt bánh đa iso
   2 ta sẽ tạo thẻ ảo - virtual stick usb  - liveusb
   3 nhận xét giữa thẻ ảo và thẻ thật .

   nguồn vật liệu :
     1  ftp://ftp.nluug.nl/pub/os/Linux/distr/m … l/mcnlive/
     2  http://www.pendrivelinux.com/

Last edited by wangji (05/12/2008 23:16)

92 Reply by wangji 08/11/2008 22:07

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                             Chánh Đạo năm   : trở về cội nguồn
                         b  thực tập

   

               b-1  Mở màn : ngó hàng ngoài chợ giời

  Ngày xưa ta thường ra tiệm xem hàng trước khi mua ! Ngày nay muốn coi cái livecd có chi trong bụng ... là cứ phải
mua đại - tức là tải về - adsl chậm 512kb cũng phải mất 3-5 giờ như chơi ,đấy là chưa nói tới livedvd ...

  Từ 2 năm nay ,thực ra có giải pháp  "xem" mà không phải tải hết cả cái livecd ,kể cả các gói nén -dạng cloop hay squashfs -   
  Có 2 loại http_disk  và httpfs . Với các distro ngày nay ,hầu hết có cài fuse -cho phép usermount đủ thứ ,chỉ cần

  tải về:
  http://downloads.sourceforge.net/httpfs … g_mirror=0

  Trong thư mục $HOME tạo  điểm móc
$mkdir  hocvnoss   moc_iso
$httpfs   http://people.vnoss.org/~wangji/hoclinux1.iso   hocvnoss
thế là cái bánh đa ảo hoclinux1.iso  hiện ra trong thư mục hocvnoss  tuy ta không tải tị nào nó về nhà cả !
$sudo mount  -oloop,ro  hocvnoss/hoclinux1.iso   moc_iso
cho phép dòm ngó bên trong đĩa ảo iso  trên điểm móc hocvnoss !
Muốn ngó các tệp nén trong đó ...thì cứ việc móc nó lên chỗ khác mà dòm  !

  Dĩ nhiên thí dụ trên chạy với bất kỳ $url nào có tệp iso .
Trên nguyên tắc có thể trực tiếp chạy  qemu -cdrom  hocvnoss/hoclinux1.iso   !
trên thực tế ,nếu cái iso to bự ...thì ...phải can đảm chờ  !
nhưng nếu chỉ muốn tải đôi ba tệp trong cái bánh đa iso đó ... thì vô tư !

Last edited by wangji (05/12/2008 23:16)

93 Reply by wangji 08/11/2008 22:09

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                   Chánh Đạo năm   : trở về cội nguồn
                   b  thực tập

   

            b-2  MCNLive-Delft.iso
Tất cả mọi điều nêu ở đây vói Delft đều hữu hiệu với các phiên bản khác của nhóm MCNL ,
nhất là MCNLive-Toronto.iso .
Cái Delft có tranh của họa sĩ nổi tiếng Vermeer ,cái Toronto có VirtualBox nhưng chỉ có tiếng english  !
   1  tạo thẻ usb bootable
   2  Chép nội dung của bánh đa iso vào thẻ usb
Cả 2 điểm trên tập trung trong script mkpendrive ; chỉ cần gõ trong thư mục đã tải MCNLive-Delft.iso
$sudo ./mkpendrive  Delft
  Vài phút sau sẽ có thẻ ảo Delft !  Boot nó với

$ qemu  -m 256  -std-vga  Delft
cho đén lúc tắc kẹt vào
Busybox /initrd/bin/ash : can't access tty :job control turned off
$
Lý do đứng ở đây là vì ta dã chép nội dung của bootable_cd mà đây ta lại muốn nó ...như usb !

$ls  /sys/block    sẽ thấy  hda  hdc  và nhiều ram  ,tức là lõi đã nhận có thiết bị hda -dạng mặc định đĩa boot của qemu-
qemu lúc đọc tệp Delft ,nó coi như nằm trên đĩa hda1
$ls /dev/hd* sẽ thấy  hda hda1 hdc  : đĩa hda có một phân vùng hda1 ; đĩa hdc tượng trưng cho cdrom . Móc nó lên
$mount /dev/hda1  /initrd/cdrom
$losetup  /dev/loop0  /initrd/cdrom/livecd~1.sqf
( lý do livecd.sqf thay cho tên livecd.sqfs là vì thừa kế hệ tệp fat16  msdos )**
$modprobe squashfs
$mount  -t squashfs  /dev/loop0  /initrd/loopfs
Thế là ta có đủ mọi thứ như boot_usb khi nó chạy ; chỉ cần init sang thể xác mới

$exec  /etc/rc.d/rc.sysinit 

Dù không nắm hết ngay bây giờ ,hãy thực tập và quan sát  ; Cuối chương bài giải thích tổ hợp sẽ thấy dễ hiểu !

**Thực ra không những chỉ phải do fat16 mà còn đụng cả tới codepage mặc định lúc boot ; Để tránh khâu vướng này  thì phải thay  dòng "mount /dev/hda1  /initrd/cdrom " như sau :
mount -t vfat -o rw,codepage=437,iocharset=iso8859-1 /dev/hda1     /initrd/cdrom

Last edited by wangji (05/12/2008 23:17)

94 Reply by wangji 10/11/2008 02:38

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                  Chánh Đạo năm   : trở về cội nguồn
                b  thực tập

   

            b-2  MCNLive-Delft.iso  (tiếp ; -dĩ nhiên cũng chạy với MCNLive-Toronto )
Để tránh những câu hỏi "làm sao  tự viết cái script mkpendrive" như vậy ? Và cũng để chuẩn bị sang "thẻ usb thật "
Ra mua chợ nhật tảo : cái stickusb  ; nếu chưa có cái stickusb thật thì :
$qemu-img  create stickusb  512M
chạy 
$qemu  -std-vga -cdrom MCNLive-Delft.iso   -hdb  stickusb  -boot d   

Boot xong -nếu màn ảnh quá lớn không nhìn hết thì ...chuột-phải ,configure sang 800x600 ...cho gọn.
Mở terminal $su  với mật khẩu "root"
Trên nguyên tắc có thể dùng stick tòan bộ - đĩa không chia phân vùng - ; thực ra nó lệ thuộc script linuxrc ;các tệp
MCNLive-$VERSION.iso  chỉ có thể chạy với stick có 1 phân vùng . Vì vậy ta phải chạy fdisk để mình phân vùng
#fdisk  /dev/hdb 
và gõ lần lượt  n ,p ,1 , "enter" ,"enter" , a ,1 ,t ,06 ,w
Tạo dạng tệp fat
#mkdosfs  /dev/hdb1
móc nó vào /mnt
#mount /dev/hdb1  /mnt
rồi chép
#cp  /initrd/cdrom/livecd.sqfs  /mnt
#cp  /initrd/cdrom/isolinux/* /mnt
#cp /usr/local/bin/syslinux.cfg  /mnt
#umount /mnt
Tạo đầu nạp -bootloader cho stick
#syslinux  /dev/hdb1
#dd if=/usr/local/bin/mbr.bin  /dev/hdb

Khi thử với qemu stickusb   sẽ cũng bị vướng như các lần trước ;Nhưng nếu thử với stickusb thật ...thì chạy vô tư !
Điều đó sẽ giải quyết trong các bài tới ! (sẽ có bài đặc biệt về các đầu nạp mbr,ldlinux.sys ,stage1)

  Để nhớ các lịnh vừa dùng : vào đọc  /usr/local/bin/mkmcnlive   ! Đó là script để tạo liveusb của cô Kris viết
nhưng vì chúng ta đang nằm trong máy ảo qemu  các thiết bị thật của máy chủ không được nhìn thấy  !

Last edited by wangji (05/12/2008 23:18)

95 Reply by wangji 10/11/2008 02:39

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                            Chánh Đạo năm   : trở về cội nguồn
                   b  thực tập

   

            b-3  AIOPendrivelinux08.zip   All In One Pendrive
Ra đời hè 2008 ,-sau khi cô Kris từ bỏ trách nhiệm mcnlive năm 2007 vì lý do cá nhân -Tệp aiop không còn ở dạng
livecd.iso - thừa kế thời buổi stickusb còn đắt tiền -
Nếu ta unzip  gói đó vào stickusb và chạy syslinux thì sẽ có stickusb bootable thẳng vào máy .Nhưng nếu thử chạy
với qemu stickusb thì lại vướng như mấy lần trước với Delft hay Toronto !
  Tuy nhiên gói này đã được cải thiện ...để chạy với qemu  ! dù rằng các tác giả không ghi nhắn sự kiện đó lên mạng.
Đọc kỹ linuxrc trong gói initrd.gz sẽ thấy là chỉ cần :
$qemu stickusb
chọn một trong các menuboot hiện ra ,đừng vội gõ "enter" ,mà phải gõ "tab"  để lấy dạng dòng lệnh cmdline
thay chữ " fromusb"  bằng  ' fromqemu"   là ăn tiền  !

   Nếu ta thay  linuxrc của gói Delft hay Toronto bằng linuxrc của gói aiop  ... thì cũng thành công y hệt
stickusb (Delft hay Toronto ) lúc đó sẽ chạy trên máy thật cũng như trên qemu  !

Last edited by wangji (05/12/2008 23:18)

96 Reply by wangji 10/11/2008 02:41

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                            Chánh Đạo năm   : trở về cội nguồn
        b  thực tập

   

            b-4  stickusb thật và ảo

Ta đã dùng nhiều ảo - chỉ cần ghép nối loopback ,losetup ...
Với stick thật vấn đề lớn nhất là làm sao biết nó ghép vào thiết bị nơi đâu : /dev/hdx hay /dev/sdy và x,y bao nhiêu ?
Hai lý do chính gây sự kiện này :
  1 Mỗi máy pc có trang bị khác nhau ,cái stickusb chỉ có thể kiếm chỗ ngồi còn trống !
  2  Thuộc lòai hotplug ,chỉ khi được cắm  mới tòi ra /dev/thiếtbị  ; đôi khi lục đục cache ,lần đầu cắm tuột ra sdf ,ngay sau đó cắm lại có thể tuột ra sdg  !!

  Đó là lý do trên tất cả háo tu về chuyện này họ khuyến cáo như sau :
$mount ,rồi cắm stickusb lại gõ $mount  ;Nếu udevd làm việc tốt thì sẽ hiện ra dòng mount mới có "dính" tới usb vừa cắm .
Tất cả mọi điều nói với stickusb ảo đều hữu hiệu với /dev/sd_vừa tìm thấy !

                make bootable !

Hầu hết các stickusb thật mua về đều đã được format dạng fat ,nhưng không phải chỉ một  "kiểu" !
Có cái partition1 thì ở offset=16384 bytes ,có cái không có partition ! chưa kể còn có dạng security protection ở ngay đọan đầu của stick !
Vì lý do window compatible mà người ta dùng dạng fat ,chứ với ext2 chạy vô tư trên linux.
Khi chạy syslinux trên một partition fat ,nó ghép tệp ldlinux.sys (như ld-linux.so  trong pc) để nạp lõi kernel !
Nếu stick cả đĩa -chạy không phân vùng partition- thì syslinux làm xong nhiệm vụ bootable cái stick
Nếu stick có chia phân vùng ,thì mỗi phân vùng bootable bởi syslinux ,nhưng cái đĩa stick phải được nạp mbr
-master boot record - 430/440 bytes trên đầu đĩa : đó là nhiệm vụ
  dd  if=mbr.bin  of=/dev/sd_thật   hay /dev/loop ảo

  Nếu dùng grub dĩ nhiên stage1 sẽ kế chân mbr  ,stage1.5 hay stage2 kế chân ldlinux.sys .
Tất nhiên với dòng chainloader +1 (chuyển dịch một sector) ta cũng có thể làm multiboot với windows như hệt
khi dùng hdd  .

Last edited by wangji (05/12/2008 23:19)

97 Reply by wangji 11/11/2008 15:19

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                       Chánh Đạo năm   : trở về cội nguồn
               b  thực tập

   

            b-5 MCNLive trên thẻ usb tòan diện -full disk - (không có chia phân vùng )

Tóm tắt nhắc lại các bài truớc :
     1 MCNLive-Delft/Toronto  boot thẻ usb thật ,không boot với qemu
     2  AIOPendrivelinux08      boot usb thật cũng như ảo với qemu

     3 Nếu dùng linuxrc_aiop thay linuxrc của initrd.gz  trong Delft/Toronto thì điểm 1 cũng boot được với qemu

  Tuy nhiên cả 3 cái đó chỉ chạy trên thẻ usb có chia phân vùng (có ít nhất 1 phân vùng -partition- ).
Nếu muốn chạy trên đĩa tòan diện - full disk - thì phải cải thiện danh bạ thiết bị -bảng  $CDROM_LIST trong gói
findcdroms() -của linuxrc : phải lồng ghép thêm đĩa không phân vùng !
tỉ dụ 
   linuxrc-delft-nopartition.patch :
--- linuxrc_delft       2008-11-10 20:05:58.000000000 +0100
+++ linuxrc-aiop_nopart 2008-11-10 20:10:35.000000000 +0100
@@ -1,11 +1,11 @@
#!/bin/busybox ash
-#
+#set -x
# LiveCD startup (linuxrc) script
#
# Copyright (C) 2002-2004, Jaco Greeff <jaco@puxedo.org>
# Copyright (C) 2003, Buchan Milne <bgmilne@obsidian.co.za>
# Copyright (C) 2004, Tom Kelly  <tom_kelly33@yahoo.com>
-#
+# hacked by wangji to add case no partition on stick_usb

                ## Check for usb stick
-               for usb_device in /dev/sd[a-h][0-2]; do
+               for usb_device in /dev/sd[a-h] /dev/sd[a-h][0-2]; do
                        if [ -e "$usb_device" ]; then
                                CDROM_LIST="$CDROM_LIST $usb_device"
                        fi
                done
        fi
+
+
+       ## Do we want to boot from QEMU?
+       qemulive=`grep -iq fromqemu /proc/cmdline && echo 1`
+       if [ -n "$qemulive" ]; then
+               echo -n "  Booting from QEMU "
+               rm -rf /initrd/sbin/halt.local
+               ## Check for qemu hd devices
+               for qemu_device in /dev/hd[a-h]  /dev/hd[a-h][0-4]; do
+                       if [ -e "$qemu_device" ]; then
+                               CDROM_LIST="$CDROM_LIST $qemu_device"
+                       fi
+               done
+       fi
+
+

findcloop() {
-       ## set the isotype cd or usb
+       ## set the isotype cd or usb (or qemu)
+       ISOTYPE="iso9660"
+       READONLY="ro"
        if [ -n "$usblive" ]; then
                ISOTYPE="vfat"
                READONLY="rw"----
-       READONLY="ro"
        fi
-
+       if [ -n "$qemulive" ]; then
+               ISOTYPE="vfat"
+               READONLY="rw"
+       fi

Phần liên quan tới qemulive cho phép boot với qemu ;  các dòng có /dev/hda[a-h]  /dev/sda[a-h] cho phép dò tìm
đĩa tòan diện !

      mcnlive thẻ usb tòan diện :

   mkdosfs  /dev/sdx_thẻ_usb  ;  syslinux  /dev/sdx_thẻ_usb  là có thẻ tòan diện bootable .
Chỉ cần cóp [vmlinuz livecd.sqfs syslinux.cfg  livecd*msg  initrd.gz]  vào thẻ /dev/sdx_thẻ_usb .
Các tệp trên có thể từ bất kỳ Delft Toronto hay AIOPendrive  ; nhớ thay linuxrc trong initrd.gz với
  linuxrc_add-no-partitiondisk trên vnoss.

Last edited by wangji (05/12/2008 23:19)

98 Reply by wangji 11/11/2008 15:22

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                             Chánh Đạo năm   : trở về cội nguồn
                b  thực tập

   

            b-6 yếu lược  liveusb
Khởi máy pc ,bios nạp ldlinux.sys -->  lõi_kernel ,lõi nạp initrd.gz và chạy linuxrc ( hay  init ) đi dò tìm đầu thiết bị
chứa thể xác nén livecd.sqfs .  tạo ramdisk ,móc  thể xác nén  ,  ...rồi lột thể xác chuyển sang rootfs mới
với unionfs/aufs  : ramdisk & rootfs  !

  Khâu dò tìm đầu thiết bị chứa thể xác là dễ vướng nhất ; Khi tuột vào busybox_ash với đầy dòng than phiền
thiếu sed ,awk ,unionfs.ko  ....root= panic vfs  ...là đó :
  Trở về cội nguồn đi tìm thể xác livecd.sqfs mà không thấy ;sinh nở ra oái oăm nghiệp chướng của tiền kiếp initrd.gz

  Ngày xưa khi Klaus Knopper bắt tay vào livecd_knoppix udev chưa ra đời (2003) ! devfs đang còn hoành tráng ,đầy khí thế nhưng khó dùng cho livecd !   
Phần dò tìm đầu thiết bị làm theo kiểu a_la_windows ,nghĩa là nhét đầy /dev/inode với tất cả danh thiết bị bán trên thị trường dù trong máy người dùng chỉ có ...mỗi một thiết bị ! mklivecd - cũng như mcnlive - hưởng thừa kế knoppix cũng dò tìm như vậy .

Danh bạ đầu  thiết bị dài rằng rặc  ;như :
DEVICES=/dev/scd? /dev/scd?? /dev/hd? /dev/pcd? /dev/sd? /dev/sd?[1-9] /dev/sd?[1-9][0-9] /dev/ub?[1-9] /dev/ub?[1-9][0-9] /dev/ub? /dev/hd?[1-9] /dev/hd?[1-9][0-9]

(quan sát lúc khởi livecd   cứ thấy chữ hd hay sd liên tục thay đổi là nó đó  ! )

  Sau khi udev_start ta đã biết là  ls /sys/block | grep d  sẽ thể hiện các đầu thiết bị đang có trong máy pc !
Nó sẽ ít hơn rất nhiều với $DEVICES  trên  ! Chỉ cần thay

  DEVICES= `ls  /sys/block | grep d `  là khâu làm việc  sẽ bài bản hơn ,chính quy hơn ...có lý hơn  ! (nhớ chèn sys2dev để có chữ  /dev/ ...đằng trước !)

Hy vọng bài kết thúc thực tập giải thích cội nguồn !

Last edited by wangji (05/12/2008 23:20)

99 Reply by wangji 20/11/2008 02:36

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                           Chánh Đạo năm   : trở về cội nguồn

                b  thực tập

   

            b-7 Tạo   liveusb từ đĩa livecd ubuntu-8.04  với script nhỏ xíu !

     1  boot  ubuntu-8.04 livecd
     2  tải stick.sh từ vnoss (nửa phút )
     3  Cắm thẻ usb mới nguyên  (> 1Gb )
     4  sudo stick.sh
     5 uống tí bia
     6 boot  máy với thẻ usb vừa tạo  !!


~$ cat stick.sh

#!/bin/sh
devicemnt=`mount | grep vfat | awk '{ print $3 } ' `
rm -fr $devicemnt/*
cp -aP /cdrom/* /cdrom/.disk $devicemnt
mkdir $devicemnt/boot $devicemnt/boot/grub
cp /usr/lib/grub/i386-pc/* $devicemnt/boot/grub
cat > $devicemnt/boot/grub/menu.lst <<EOF
title Ubuntu-liveusb
kernel /casper/vmlinuz boot=casper
initrd /casper/initrd.gz
EOF
grub --batch --no-floppy << EOF

device (hd6) `mount | grep vfat | awk '{ print $1 }' | sed s/[1-9]// `
root (hd6,0)
setup (hd6)
quit
EOF
umount $devicemnt
exit

Last edited by wangji (05/12/2008 23:21)

100 Reply by wangji 26/11/2008 01:57

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                 Chánh Đạo năm   : trở về cội nguồn

                c  Kiếm bọ   ( thực tập  debugging )

   Khó mà có lý thuyết để tu hành kiếm bọ ;
Chỉ có cách " tu thân " - học hỏi những điều chưa biết - và  trau dồi tu luyện ...thực tập !

Tạo livecd  liên quan mật thiết rất nhiều với initrd.img  và gói rootfs_nén  ( KNOPPIX cloop  hay  livecd/filesystem squashfs ) ta sẽ tập trung tạo bọ trong môi trường này ,mà quên đi các loài nén thiểu số  khác !

  1   Tạo bọ : Đừng làm gì y hệt người khác đã làm ! Càng khác càng lắm bọ !

  2  Chiến lược kiếm bọ :
     Cũng như trong lập trình phải chèn dòng printf ,thì trong script (linuxrc hay init ) chèn dòng debug (knoppix) hay
break (ubuntu)  nơi đó là có tạo -fork- một shell mới  để có thể tiếp tục .
      Trong lúc ngưng chân ,để dòm ngó dùng busybox với các lịnh thông thường ls ,lsmod
      hay chắc chắn hơn cat /proc/[ filesystems  modules  mounts  ]   

  3  Tu hành :
      Sau khi nạp initrd  ,nhiệm vụ chính của lõi là dò tìm cái gói rootfs_nén nằm đâu trên livemedia (cdrom hay thẻ usb). Nó liên quan tới các chữ  bus (ide  scsi usb )  các hệ tệp  fat/vfat (nls_cp437  iso8859-1 ) ext2,3 reiserfs
thiết bị ảo loopback , hệ nén cloop  squashfs  .

   Am hiểu mọi điều trên cho phép bước chân tới ngưỡng cửa X ; ( bọ trong X là thế giới khác ,sẽ ...không đề cập tới )

Last edited by wangji (05/12/2008 23:21)

Skip to forum content

VnOSS forum

Diễn đàn phần mềm mã nguồn mở cho người Việt khắp nơi

Bạn chưa đăng nhập. Xin đăng nhập hoặc đăng kí

Chủ đề mới Chủ đề chưa có trả lời


VnOSS forum » Thảo luận chung » Học với ubuntu

Trang: 1 2 3 4 5

You must đăng nhập or đăng kí to post a reply

Học với ubuntu (Trang 5 / 5)

Bài [101-123/123]

101 Reply by wangji 26/11/2008 02:00

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                              Chánh Đạo năm   : trở về cội nguồn

                      c  Kiếm bọ
                              c-1  Khóac áo ubuntu lên vai Mandriva !

  Trong phần b chúng ta đã có dịp tạo liveusb vói mcnlive-Delft  và ubuntu-8.04 . Ở đây ta sẽ thay thể xác
filesystem.squashfs của ubuntu với  livecd.sqfs  của mcnl-Delft  để ...tạo bọ  ! Có nhiều cách  gọi ,tùy góc nhìn

1 cao siêu  : Nâng cấp mcnl-Delft kernel mới  (mcnl-Delft   kernel-2.6.17-13mdv vs  ubuntu 2.6.24-12-generic )

2 đùa bỡn  : Đánh lừa cậu ubuntu với mandriva  của cô Kris ! 

3 tương lai :  Bánh cũ nhân mới  .
    Trên hdd đĩa cứng ,nguời ta thường ghi lại  3 thứ (vmlinuz  initrd.img  và /lib/modules/$version/*  )
    Trên cdrom / hay thẻ usb  thì họ  phải "tháo bánh cũ " " độn nhân mới " rồi "hâm" lại  : "remastering " là nó
  Chúng ta sẽ từng bước dần dần tiến tới bánh cũ nhân mới mà chẳng "hâm" lại chi  ..
  Tới bước cuôi  ta sẽ chạy livecd/liveusb  với "bánh đa cũ đã đốt" với nhân mới.



   Bắt đầu từ thẻ usb 1Gb ta đã tạo ubuntu liveusb trên đó .(gọi dưới đây liveusb cho tiện )

Xóa tệp nén   rm  /liveusb/casper/filesystem.squashfs  và
chép                cp   /mcnl-Delft/livecd.sqfs    /liveusb/casper/filesytem.squashfs

chép từ ubuntu-8.04 của máy chủ
                        cp  -aP  /lib/modules/2.6.24-12-generic   /liveusb/
để có các modules cần thiết khi chạy với lõi kernel của ubuntu .

   1  boot lại máy với liveusb  . Sẽ gặp bọ
           [ 1190.776051 ] Kernel panic - not syncing: Attempt to kill init !

   2 boot lại máy với liveusb ,nhưng khi có menu_grub hãy gõ "e" hai lần để edit dòng lệnh kernel cmdline ,chèn vô "break=init" như sau :
                      kernel /casper/vmlinuz boot=casper  break=init
  gõ enter rồi "b" (boot)  để ngưng chân tại chỗ "trước init thể xác mới "

  3  Nếu đã chép 2 tệp chrootfun.sh  và gox  vào /liveusb  thì gõ

         /root/cdrom/chrootfun.sh

"enter" 2 lần để trở về initramfs sau chroot  ,rồi gõ

        /cdrom/gox

  Khi tới  menu của DrakConf   ( XFDrake )  ráng cấu hình display  cho phù hợp máy bạn ,khi xong sẽ boot sang X

  Dĩ nhiên ,nếu đã không chép các tệp trên vào liveusb ,thì chỉ cần gõ từng lệnh một với 2 ngón tay ! Kết quả y hệt
Nhớ sửa gox cho phù hợp máy bạn ( vì mouse,network...)

 chrootfun.sh :
#!/bin/sh
mkdir /root/sys /root/dev /root/proc
mount --bind /dev /root/dev
mount -tsysfs sys /root/sys
mount --bind /proc /root/proc
mkdir /root/tmp /root/lib/modules/2.6.24-12-generic
mount --bind /root/cdrom/2.6.24-12-generic/ /root/lib/modules/2.6.24-12-generic/
rm /root/lib/modules/2.6.24-12-generic/modules.dep >/dev/null 2>&1
chroot /root /bin/bash
exit
gox :
#!/bin/sh
PATH=/usr/X11R6/bin:$PATH
/usr/X11R6/bin/DrakConf
depmod -a
modprobe psmouse
ifconfig eth0 192.168.1.3
route add default gw 192.168.1.1
echo "nameserver 192.168.1.1" > /etc/resolv.conf
/usr/bin/startx
exit

Last edited by wangji (05/12/2008 23:22)

102 Reply by wangji 05/12/2008 17:53

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                         Chánh Đạo năm   : trở về cội nguồn

                c  Kiếm bọ
                  c-2  Khóac áo mcnlive-Delft_2.6.17-13mdv/initrd lên vai Ubuntu-7.10_filesystem.squashfs !

Mục tiêu :
       dùng rootfs _filesystem.squashfs_ubuntu-7.10 với kernel/initrd/lib-2.6.17-13mdv  của mcnlive-Delft
Dụng cụ :
  trong cùng thư mục : MCNLive-Delft.iso  ubuntu-7.10.iso  mkgrubusb.sh  next.sh stick-usb-1Gb  (new / 1 fat partition)

Thực hành :
      1 cắm thẻ usb (để ubuntu nhận diện ...và automount)
      2 sudo  mkgrubusb.sh
      3 uống tí bia ; reboot máy lần này với thẻ usb
dĩ nhiên gặp khó khăn không phù hợp giữa lõi kernel-2.6.17-13mdv  với các modules của ubuntu-7.10
      4 gõ
$dmesg  | grep  sd         #để xem thẻ usb được nạp vô đầu thiết bị nào
  tỉ dụ đã thấy  sdc : sdc1   thì gõ tiếp
$mount  -t vfat  -o rw,codepage=437,iocharset=iso8859-1  /dev/sdc1  /initrd/cdrom

      5 gõ từng dòng lệnh có trong next.sh
  hay gõ   $/initrd/cdrom/next.sh  nếu đã chép script đó vào thẻ usb

  Giải thích :
  1 tại sao phải dùng ubuntu-7.10-filesystem.squashfs  mà không dùng ubuntu-8.04 ?
    Vì ta "xuống cấp kernel"  ! squashfs.ko của mcnlive-Delft phiên bản 3.2
ubuntu-8.04_filesystem.squashfs được néngói với phiên bản 3.3 ; cái lõi Delft không đọc nổi !
Kiểm tra bằng  "modinfo  squashfs.ko "   hay "mksquashfs  -version "

  2 tại sao phải mount vfat cái thẻ usb vào /initrd/cdrom bằng 2 ngón tay để chạy tiếp next.sh ?
Sau khi boot vào linuxrc của thẻ usb ,tìm không thấy các "modules phù hợp với lõi "  ( thì ta cố tình lõi nọ thể xác kia ) "lõi nó" tháo hết và linuxrc chuyền vào ash (bash_títi ) để ...lọ mọ bọ  !
   - fat vì thẻ usb mới như vậy
   - codepage=437  bó buộc có mặt
   - iocharset=iso8859-1  có thể quên đi , mọi chuyện có vẻ chạy trôi chảy
nhưng coi chừng khi vào được màn X của 7.10  thì khởi động firefox để lượn mạng sẽ không chạy  !
Muốn tháo bọ mới này phải khởi   "/usr/bin/firefox -safe-mode %u " 
(safe-mode không nạp mặc định các plugins_firefox ; Lỗi hay bị với firefox khi thiếu charset,fonts v v
thường có thể thoát bằng cách chạy fc-cache -f -v   ,tuy nhiên khi bí quá -safe-mode giải toả hết !)

3  next.sh làm gì ?
Các thể xác dạng nén chỉ móc read-only ,gốc hệ tệp cần rw cho môt số thư mục proc sys var tmp etc home ....
các thao tác trong next là tạo các ramdisk cho các chuyện rw  ;ghép nối unionfs  phần thể xác chính ro với các
phần ramdisk  (trong này có tên cow - copy on write -) quản trị hành chính sys proc dev .
Và dĩ nhiên "ghép" các modules-2.6.17-13mdv cho ..thể xác ubuntu  !
Khi chạy với 2 ngón tay từng dòng lệnh của next.sh hãy cố gắng quan sát với các lịnh cat /proc/vânvân như đã nói nhiều lần .

next.sh :
#!/bin/sh
#set -x

losetup /dev/loop0 /initrd/cdrom/livecd.sqfs
modprobe squashfs
mount -t squashfs /dev/loop0 /initrd/loopfs
cp /initrd/cdrom/2.6.17-13mdv/kernel/fs/unionfs/unionfs.ko.gz /
gunzip unionfs.ko.gz
insmod unionfs.ko
mkdir /root /cow
mount -t tmpfs tmpfs /cow
mount -t unionfs -o dirs=/cow=rw:/initrd/loopfs=ro unionfs /root
mount --bind /proc /root/proc
mount -tsysfs sysfs /root/sys
mount --bind /dev /root/dev
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:

cd /root
pivot_root . initrd
/bin/sleep 2
mkdir /lib/modules/2.6.17-13mdv
mount --bind /initrd/initrd/cdrom/2.6.17-13mdv/ /lib/modules/2.6.17-13mdv/
#lines below depend on your machine network stuff ! you still get X even no networking !
echo "nameserver 80.10.246.1" > /etc/resolv.conf
cd /lib/modules/2.6.17-13mdv/kernel/drivers/net/
cp mii.ko.gz 8139too.ko.gz /
cd /
gunzip mii.ko.gz 8139too.ko.gz
insmod mii.ko
insmod 8139too.ko
ifconfig eth0 192.168.1.3
route add default gw 192.168.1.1
startx
mkgrubusb.sh :
#!/bin/sh
#plug in your new usb stick 1Gb
devicemnt=`mount | grep vfat | awk '{ print $3 } ' `
rm -fr $devicemnt/*
mount -oloop MCNLive-Delft.iso /cdrom
mkdir tmpmnt && mount -oloop -tsquashfs /cdrom/livecd.sqfs tmpmnt
cp -aP tmpmnt/lib/modules/2.6.17-13mdv/ $devicemnt >/dev/null 2>&1
umount tmpmnt && rmdir tmpmnt
cp -aP /cdrom/isolinux/vmlinuz /cdrom/isolinux/initrd.gz $devicemnt >/dev/null 2>&1
umount /cdrom
mount -oloop ubuntu-710.iso /cdrom
cp -aP /cdrom/casper/filesystem.squashfs $devicemnt/livecd.sqfs
umount /cdrom

mkdir $devicemnt/boot $devicemnt/boot/grub
cp /usr/lib/grub/i386-pc/* $devicemnt/boot/grub
cat > $devicemnt/boot/grub/menu.lst <<EOF
title mcnlDelft-liveusb
kernel /vmlinuz root=/dev/rd/3
initrd /initrd.gz
EOF
grub --batch --no-floppy << EOF

device (hd6) `mount | grep vfat | awk '{ print $1 }' | sed s/[1-9]// `
root (hd6,0)
setup (hd6)
quit
EOF
#cp next.sh $devicemnt
umount $devicemnt

exit

Last edited by wangji (06/12/2008 15:07)

103 Reply by wangji 07/12/2008 20:20

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                       Chánh Đạo năm   : trở về cội nguồn

                                         Tạo live-slackware-12.1

mục tiêu : livecd /liveusb slackware-12  từ đĩa     slackware-12.1-install-dvd.iso

   a  áp dụng các điều đã trình bày ;
đĩa slack - install không có  "cloop ,squashfs  ,unionfs  hay aufs " nghĩa là thiếu tòan bộ vật liệu cần để tạo livecd

   b  Để tránh phải dành riêng một phân vùng đĩa cho cài đặt , hãy  cài lên đĩa ảo - hòan tòan như hệt đĩa thật -     

qemu-img create  slkdsk 5G
qemu -m 512 -cdrom slackware-12.1-install-dvd.iso -hda slkdsk -boot d

  Trong quá trình cài đặt ,cũng tạo ra một phân vùng ext3 bootable chẳng hạn , mật khẩu root ...
   c  Tạo gói nén với

  mount -oloop,offset=32256  slkdsk   /mnt/tmp
  cd  /mnt/tmp
mkisofs  -r -joliet-long -allow-lowercase  -iso-level 4  .  | create_compressed_fs  -  65536 > /home/~user/slack12.clp 
umount /mnt/tmp

  d  Đóng khung gói nén slack12.clp  với  kernel/initrd .

  Tải gói  slack12-live_tobe.tar.gz  ; trong gói có các tiện ích /tools
Chép slack.clp vào thư mục /KNOPPIX  (phải chép với tên mới KNOPPIX nếu dùng thẻ usb _fat  )
   
    untar to  /~/live
    cp  slack12.clp   /~/live/KNOPPIX/KNOPPIX

  make bootable với syslinux / grub /isolinux tùy ý !

  d-1  tạo liveiso (mkclpiso)  cd /~/live then
mkisofs -R -J -joliet-long -l -iso-level 4  -V " Slackware_pix" -o ../slack12-live.iso -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
   d-2  tạo liveusb
Sau khi cóp /~/live vao thẻ usb_2Gb  ,chạy syslinux /dev/thẻ_usb1 (partition1 !)


  e  Bài tới sẽ quan sát chi tiết điều kiện và cách tạo kernel/initrd cho   phù hợp slackware-12
gói slack.clp =1.4Gb khoảng 35% của cài đặt hay đĩa install .(thẻ usb_2Gb )

  d live dvd fedora10 (1.2Gb iso)  ảnh chạy thử với qemu trên ubuntu

Last edited by wangji (12/12/2008 00:15)

104 Reply by wangji 13/12/2008 19:00

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                     Chánh Đạo năm   : trở về cội nguồn

            Tạo live Dvd  :  kernel khi khởi động

Khi tạo livecd cho một distro ,điểm khó đầu là lõi -kernel - lúc khởi động . Có 3 trường hợp

    1  Lõi y hệt lõi nguyên thủy của distro
    2  Lõi khác biệt hẳn -nâng cấp lõi chẳng hạn - với lõi của distro
    3  Lõi giả mạo ,hay lõi clone ,lõi compatible   với lõi của distro

Điểm 1 đòi hỏi dùng script của distro -nếu có - ,hoặc phải có đủ patches vá distro đã dùng  : không dễ có !
Điểm  2 ta đã có đề cập đôi chút khi bập bẹ với  ubuntu & mandriva-Delft
Điểm 3 là lõi biên dịch với unionfs_aware ,squashfs /cloop_aware và compatible với lõi của distro dưới hình
thức cho phép nạp_loadmodule_insmod bất kỳ module nào có trong /lib/modules/$version/  của distro.

  Điểm compatible không phải nhỏ ,vì ghép thêm bất kỳ module nào ,nếu cần vá lõi -patch kernel- hầu như 99% biên dịch sẽ không phù hợp modules cũ !.....

  Trường hợp slackware-12.1 khá dễ vì hầu như họ dùng vanilla kernel (lõi của kernel.org ) với " ít vá ". Dố là lõi có trong bài livedvd -slackware  ; Phần ghép thêm là aufs  squashfs cloop .

  Trường hợp fedora-10  khó hơn nhiều ...vì họ có rất nhiều vá  - mà trên mạng khó tìm được nguồn vá chính quy ! 
Khi có vá "nguồn" thì chỉ cần "hâm" lại bếp nước  (các lệnh patch , configure_make  chỉ là hâm ,chứ đâu có phải làm gì )
  Khó là khi các vá đem về gặp đầy lỗi khi biên dịch ; Phải sắn tay áo nhặt sạn ,nhặt bụi   ... cho tới khi sạch !
Mà rồi có sạch ,biên dịch hết lỗi ...cũng chưa chắc ...đủ khả năng như lõi của họ ;
Ta chỉ mong nó cho phép chạy khi insmod các modules họ đã tạo  :  -->  lõi kernel compatible !
  Tại đây có lõi compatible fedora10  với builtin  aufs và squashfs (cái sau không bó buộc  vì họ đã có module )

Last edited by wangji (13/12/2008 19:13)

105 Reply by wangji 13/12/2008 19:05

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                                 Chánh Đạo năm   : trở về cội nguồn

            Tạo live Dvd Fedora 10

Vật liệu : 1 gói nén fedora10
                 2 khuôn với kernel/initrd compatible  (TuxFedo10.tar.bz2   5Mb )

Tỉ dụ đã cài fedora10 vào phân vùng sda2 (ext3 ) . Ngồi trên ubuntu_home phân vùng sda1 ,gõ
  mount /dev/sda2  /media/sda2
  mksquashfs  /media/sda2    $home/fedo.sqfs     (khỏang 1Gb_nén nếu cài standard không development )

Gỡ khuôn  :  cd funFedo  &&  tar xjf  TuxFedo10.tar.bz2
                     cp  $home/fedo.sqfs  funFedo/KNOPPIX/KNOPPIX
                     cd TuxFedo10  &&  ./mkfedoiso

  Sẽ có  liveDvd   liveFedora10.iso   
Lý do đổi tên gói nén sang KNOPPIX  cho tiện khi tạo liveusb với dạng fat ( dạng không cho phép symbolic link )

  Chú ý :  Khi cài đặt fedora10 có mật khẩu root ,user ... ;Nên tạo một user_vnoss  không cần mật khẩu với quyền sudo . để dễ hành động trong livecd  (sau khi tạo nén với mksquashfs thì xóa đi các thứ đã chèn vào )
   Trong linuxrc của khuôn đã để 4 "bến đò" debug .  Khi khởi livefedo10 gõ
  1 enter  -mặc định khởi động thường -
  2  debug  sẽ được dừng chân ở bến debug ,tha hồ dùng các lịnh có trong busybox quan sát
Quan sát xong gõ exit sẽ sang bến đò sau ....
Trên sông tới chùa liveFedora10
   Khởi cd , bến đò 2  .. 3  4  5  6

Last edited by wangji (14/12/2008 04:21)

106 Reply by wangji 14/12/2008 00:54

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                  Chánh Đạo năm   : trở về cội nguồn

            Tạo live-usb Fedora 10   kernel compatible + builtin_aufs

  1  mount  /dev/sda2  /media/sda2      (fedora10 đã cài tại sda2 dạng ext3 ) **
  2  mksquashfs  /media/sda2/     $home/KNOPPIX
  3  mkdir  funFedo  &&   cd  funFedo   &&  tar  xjf   TuxFedo10.tar.bz2
  4  cp  $home/KNOPPIX    $home/funFedo/KNOPPIX/KNOPPIX

  5  plugin  thẻ usb    > 2Gb    ,giả sử   móc vào  /dev/sdf1   /media/disk

  6   cp  -aP   $home/funFedo/*     /media/disk
  7  umount  /media/disk
  8   syslinux   /dev/sdf1

**
chú ý :
nếu đã cài dạng khác như reiserfs  thì phải  nhét reiserfs.ko vào thư mục modules/ của mimi.gz  và thêm dòng "loadmodule  reiserfs.ko" trong linuxrc  ! Nếu không lúc dò tìm nhận diện đĩa cdrom/usb
sẽ không tìm thấy ...panic luôn !

Last edited by wangji (21/12/2008 02:31)

107 Reply by wangji 21/12/2008 02:34

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                       Chánh Đạo năm   : trở về cội nguồn

            Tạo live-usb Fedora 10 - non modified kernel

  1  mount  /dev/sda2  /media/sda2      (fedora10 đã cài tại sda2  )
  2  mksquashfs  /media/sda2/     $home/KNOPPIX
  3  mkdir  funFedo  &&   cd  funFedo   &&  tar  xjf   fedora10orig-livetobe.tar.bz2
  4  cp  $home/KNOPPIX    $home/funFedo/KNOPPIX/KNOPPIX

  5  plugin  thẻ usb    > 2Gb    ,giả sử   móc vào  /dev/sdf1   /media/disk

  6   cp  -aP   $home/funFedo/*     /media/disk
  7  umount  /media/disk
  8   syslinux   /dev/sdf1

  Nguồn gốc livecd knoppix từ thời buổi 2002-2003 chỉ dùng ramdisk ,khi unionfs / aufs chưa họat động .
Ở đây đơn giản lấy nguồn từ gói miniroot.gz của Sidux ( 2007feb  khi một nhóm developer của Kanotix tách ra nhóm sidux ) rồi thêm bớt mắm muối cho phù hợp fedora10  ! (vì tổ chức fedora không hòan tòan giống debian hay slackware  !).
Trong gói fedorra10orig-livetobe.tar.bz2   kernel/initrd  có tên  fedorg / fedorgrt ,fedorg chép nguyên văn từ /fedora_installed/boot/vmlinuz-2.6.27.5-117.fc10.i686

  Khi boot livefedora10  ,gõ cat /proc/mounts  sẽ không nhìn thấy unionfs như trên bản TuxFedora10 !
Trong gói có bản gốc siduxrc  để dễ so sánh với bản đã sửa  siduxmodrc
boot :  enter  khởi động bình thường
           debug   cho phép dừng chân quan sát .

mắm muối :
Lõi vmlinuz-2.6.27.5-117.fc10.i686  chỉ có ext3 builtin ,vậy nếu muốn dùng miniroot cổ  điển thì phải tune2fs nó ! (Dùng cpio_initramfs thì vô tư ) .
Hơn nũa linuxrc của sidux theo chùa kde ,nhớ thêm /var/lib/gdm  /var/gdm và cái mầm ngẫu nhiên /var/lib/random-seed  cho vào ramdisk_rw chứ không thể chỉ symlink với hệ tệp nén được !

Last edited by wangji (23/12/2008 13:51)

108 Reply by wangji 26/12/2008 21:58

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                                Chánh Đạo năm   : trở về cội nguồn
                          Đầu thiết bị  và hệ tệp

Trong /etc/fstab  cái hình thù quen thuộc   :
     /dev/sda2 /media/sda2     ext3    noauto        0       0
là ai cũng đã hiểu hệ tệp ext3  có trên phân vùng sda2  được móc từ "đầu thiết bị /dev/sda2" vào điểm móc "/media/sda2" .
  thiết bị - " đĩa " sda  : "phân vùng" sda2   cắm ở "khe" IDE1/2  hay SATA hay SCSI
  đầu thiết bị /dev/sda2  coi như chỗ cắm "khe mềm " để lõi kernel + anh lái driver ( module )quản lý  !
  điểm móc   trong không gian người dùng ,để người dùng xử lý !

  Có 2 loài hệ tệp  :
   a  hệ tệp có "đầu thiết bị" 
   b  hệ tệp không đầu thiết bị (có chữ  "nodev"  khi gõ cat /proc/filesystems )
  Đa số các hệ tệp không đầu thiết bị  là của sở hữu hệ thống  :
sysfs  rootfs  bdev  procfs  debugfs  securityfs  sockfs  pipefs  anon_inodefs  futexfs tmpfs inotifyfs  devpts
  ramfs  nfs nfs4 nfsd  aufs mqueue  rpc_pipefs  fuse  fusectl  usbfs  binfmt_misc

tuy có vài hệ tệp không đầu thiết bị thuộc không gian người dùng như : unionfs  aufs  fuse nfs  binfmt_misc  ...

  Móc không đầu thiết bị đều ở dạng  :  mount  -t xyzfs  none   /điểm_móc

  Đa số thiết bị "thật" (- mua ở chợ nhật tảo đem về cắm vào khe_cổng_phích của PC -) đều cần có đầu thiết bị để hệ điều hành ...còn nói chuyện  ! Nhưng không phải vì thế mà thiết bị ảo không có đầu thiết bị !
Chúng ta đã từng có dịp nhiều lần gõ  ls /sys/block  để quan sát các "thiết bị gói" -block device -  đang có mặt trong máy . Tất cả các tên thiết bị gói có mặt trong ls /sys/block  đều có đầu thiết bị dù thật hay ảo  !
sda  sr0  đĩa thật  hdd  và cdrom 
ram0  ram1  ..  đĩa ảo ramdisk   !
Nếu gõ modprobe  cloop  hay  kqemu  thì sẽ có sự hiện diện  cloopj  hay kqemu  trong /sys/block  ; các đầu thiết bị
/dev/cloop  hay /dev/kqemu đều là đầu thiết bị ảo  (không mua được ở chợ giời !)

Khi ta bật terminal / xterm /rxvt  là ta bật console ảo trong hệ thống X  ; Các thiết bị ảo đó đều có đầu thiết bị  thuộc loại pseudo tty  /dev/ptynn (tên cũ)  được quản lý dưới dạng mới hệ tệp devpts với điểm móc /dev/pts
Trong quá trình khởi động máy - trước khi bật X - lịnh
   mount  -t devpts  none  /dev/pts   cho phép bật console ảo ,mỗi lần bật là hiện ra một inút đằng sau /dev/pts/ !

  Mong vài dòng trên làm quen với các chữ thiết bị , thật và ảo

109 Reply by ptruyphong 30/03/2009 12:52

  • ptruyphong
  • Thành viên
  • Offline
  • Đăng kí: 12/09/2007
  • Bài: 2

Re: Học với ubuntu

haha không biết là dịch hay viết nhưng nói chung là khá lắm !! Nếu bạn có time thì nên viết luôn giống LFS hay gentoo đới đầu á !Rồi giải thích lý do tại sao kernel trong các distro lâu lâu thay bằng kernel mới từ .org bị "kernel panic..." relation giữa kernel/glibc-libc ... như vậy thì sẽ có hệ thống hơn.

110 Reply by wangji 30/03/2009 14:23

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

ptruyphong viết:

haha không biết là dịch hay viết nhưng nói chung là khá lắm !! Nếu bạn có time thì nên viết luôn giống LFS hay gentoo đới đầu á !Rồi giải thích lý do tại sao kernel trong các distro lâu lâu thay bằng kernel mới từ .org bị "kernel panic..." relation giữa kernel/glibc-libc ... như vậy thì sẽ có hệ thống hơn.


   1  Chắc là dịch thôi ! nhưng không làm sao tìm thấy nguồn nữa ! gu gồ hoài không thấy dù ingliche hay phờ răng xe

  2  "Rồi giải thích lý do tại sao kernel trong các distro lâu lâu thay bằng kernel mới từ .org bị "kernel panic..." relation giữa kernel/glibc-libc ... như vậy thì sẽ có hệ thống hơn."

   thì nó sẽ vào bát chánh đạo 7  !  coi  :

Chánh Đạo bảy : nghiệp chướng ( chủ não 2.4/2.6  , kinh điển  glibc 2.2/2.4 ) 

   http://forum.vnoss.org/topic5261-p4.html  ##84    .... còn xa !

------------------------------------

124 Reply by wangji 23/06/2009 10:50

    wangji
    Thành viên
    Online

    Registered: 20/10/2004
    Posts: 541

Re: Học với ubuntu

Kiếm bọ lõi   grub2-gdb: Đôi lời giải thích cho bài tập .

Cái vá elfgdb_patch có 3 thành phần : cái vá thực , .gdbinit grub.gdb và gmodule.pl
Cái vá thực vá vào grub để tạo các module.elf và giữ lại các ký tự symbolic (bỏ đi tác động "strip" obj ) .
Vì grub tham vọng chạy trên nhiều loại máy (platform_pc/efi/ieee1275/coreboot   hay intel apple sparc-powerpc) nhiều cpu (i386,x86-64-efi ,powerpc)  Gnu Makefile gặp vấn đề ; đó là lý do có các tệp genmk.rb  conf/arch-cpu.rmk để chạy thế "Makefile" ,hiện giờ interpreter là ruby ;có lẽ một ngày gân đây sẽ chuyển sang lua

grub.gdb gồm một số macro_gdb để tiện  dùng trong lúc kiếm bọ grub .Khi bật gdb ,gdb đọc -mặc định .gdbinit mà người dùng muốn
màu mè hoa hóet thì ghi vô đó ,kể cả tha hồ define macros !

Trong console_gdb gõ
(gdb)help user-defined  hiển thị các lịnh macro đã nạp qua .gdbinit ( source grub.gdb )

List of commands:

_cleanup -- User-defined
_dump_module_sections -- Gather information about module whose mod structure was
_match_and_load_symbols -- Launch script
break_load -- User-defined
load_kernel -- Load debugging information for kernel
load_module -- Load debugging information for module given as argument
load_modules -- Load debugging information for all loaded modules

  Cái perl_script   gmodule.pl chỉ dùng -internal use - với macro load_modules ( patch cũ gọi nó load_all_module ) .
break_load cho phép "nạp đại " một module mới để moi móc !

  Tài liệu cho ddd  cũng như gdb  ...khó mà đọc và thấm hết ! Chỉ có cách thực tập ,lọ mọ rồi từ từ mới cảm thấy thân thiện với móc bọ  .

Tin ngắn : ubuntu-9.10 chuyển sang grub2 ,cũng như debian
opensuse  fedora ...còn lưỡng lự ! Bài săp tới trên lwn: http://lwn.net/SubscriberLink/338337/e44cc926a53c0fc0/

Last edited by wangji (25/06/2009 20:54)

E-mail wangji

Report Post 124 Edit Post 124 Quote Post 124
125 Reply by wangji 28/06/2009 17:55

    wangji
    Thành viên
    Online

    Registered: 20/10/2004
    Posts: 541

Re: Học với ubuntu
  Bát Chánh Đạo  Phụ lục  :

                        coreboot  và payloads

              welcome to coreboot after 10_octal years !  jan2008 Ron Minnich
http://www.coreboot.org/pipermail/coreb … 29133.html    (the short story )
http://www.h-online.com/open/features/print/112353   the coreboot story  interview 6jan2009

http://www.nttdata.co.jp/en/media/2009/041400.html   Đừng hỏi tui ai trước ai sau !

  Nói thật ngắn : coreboot+linux = linuxBios thay Bios_phải_trả_tiền mà còn khởi nhanh gấp bội ( dùng trong "cụm máy tính" ! )
Đôi lời :  R Minnich làm ở LosAlamos ,nơi khảo cứu bom nguyên tử ,pulsed_power_laser  (starwar !), có supercomputer ...hạng bự !
và đã nhảy vào cụm PC từ thập niên 90 ! Dự án của LinuxBios dựa lưng trên một hạ tầng cơ sở nhiều tiền ,không như các dự án không lợi nhuận  ở âu châu ,đại học cũng cóc giúp đỡ !

coreboot "biết " rất nhiều chipsets ,nhiều cạc mẹ (26),và có thể kết nối với nhiều hệ điều hành như
     Linux, FreeBSD, DragonFly BSD, Solaris et Mac OSX
payload có nhiều dạng
* Custom - Allows you to specify an external ELF file
* Etherboot
* FILO
* Kernel - build a kernel payload (just the kernel - no initramfs)
* LAB - Build a kernel plus a Linux As Bootloader initramfs attached to it
* OFW - Open Firmware
* Memtest - Memtest86
* Grub2
* ADLO  to boot win2k  !

Lấy thí dụ cho dễ nói : Ta muốn thay biosRom của PC bằng coreboot.rom . Trong coreboot.rom có 2 thành phần
        coreboot  và  payload
coreboot tương đương như bios !
payload có thể là kernel ,LinuxAsBootloader  ,hoăc là grub_payload ....

Tải về nguồn corebooot_v2 hay v3 nếu muốn tự tạo coreboot phù hợp với máyPC đang có .

Nếu ngần ngại sợ PC ngoẻo thì chỉ có cách chạy platform_emulation !
(Tất cả mọi chuyện development trên coreboot ,"Họ"- các guru ! đều chạy với qemu )

Tải về buildrom :

1  svn co svn://coreboot.org/buildrom
2  cd buildrom/builrom-devel && make menuconfig

chọn platform_config : platform qemu emulator  ; build qemu with patches for coreboot .
         payload_config :  LAB  ( linux as bootloader )

3  make

sẽ có error  qemu-0.90.tar.gz  not found ;lọ mọ tìm trên mạng ,tải về và đưa vào địa điểm
~/buildrom/buildrom-devel/sources/
edit  ~/buildrom/buildrom-devel/packages/qemu/qemu.mk
thay dòng đầu
QEMU_URL=http://bellard.org/qemu/
bằng
  QEMU_URL=localhost:~/
( làm vậy cho quen debug những cái nho nhỏ )

Gõ lại make

Cuối cùng sẽ có trong thư mục buildrom-devel/deploy/   các tệp :

   emulation-qemu-x86.rom     lab-payload.elf.lzma    lab-payload-uncompressed.elf       
config initrd.uncompressed   bzImage   vmlinux

Chép ~/buildrom/buildrom-devel/work/qemu/qemu-0.9.0/i386-softmmu/qemu  vào  ~/buildrom/buildrom-devel/deploy

cd ~/buildrom/buildrom-devel/deploy && ln -s  emulation-qemu-x86.rom  bios.bin

./qemu  -nographic  -L .  -hda /dev/null     

   rồi uống tí trà  .

Last edited by wangji (29/06/2009 08:15)
126 Reply by wangji 06/07/2009 20:01

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu
Bát Chánh Đạo  Phụ lục  :

                        coreboot  và payloads : tiếp

Trong bài coreboot & payload  trên ta đã dùng giải pháp có sẵn buildrom-devel  để thí nghiệm coreboot.rom . Tuy nhiên khá nhiều payload trong đó ... khó chạy vì thiếu hướng dẫn ;
Ngay cả trên coreboot.org , tuy rất nhiều tài liệu ... nhưng vì biến chuyển rất nhanh của coreboot-devel  các tài liệu đó ...không theo kịp thời đại .
  Kết luận : chỉ có cách hiểu với 2 ngón tay ...thì giải quyết dễ hơn .

  emulation-xyz.rom  / coreboot.rom   còn gọi là firmware hay bios.rom   gồm có 2 phần chính bootblock và payload .
bootblock mật thiết liên hệ tới cạc mẹ - mainboard gồm có cpu+ chipsets-  Ở đây ta chỉ dùng emulation "qemu-x86 chipset_intel "
payload   là cước phí hỏa tiễn thứ 2 cho phép du hành xem hoa ( coreinfo  memtest ) chơi tetris ( tint )  nạp linux ( LinuxAsBootloader  kernel_as_payload )  nạp loader khác ( filo  grub ).

  Trong cây coreboot-devel có nhiều tiện ích trong thư mục util/  ,trong đó có 2 tiện ích đóng gói cho coreboot.rom  :  buildrom  và cbfstool  . Vì là tiện ích "nội bộ coreboot " không đâu có tài liệu !
 
  1 Dùng buildrom :
                             ./buildrom  coreboot.strip coreboot.rom payload.elf  0x10000  0x200000
gói bootblock_coreboot.strip  với payload thành coreboot.rom  ( 0x200000 rom_size_2M )

  2 Dùng cbfstool :

    ./cbfstool ./coreboot.rom create  2097152  65536 ./coreboot.rom.bootblock
    ./cbfstool ./coreboot.rom add-payload $1 normal/payload     
gói bootblock là coreboot.rom.bootblock

  Sau khi đã chạy coreboot-devel  lần đầu ,bootblock và các tiện ích có thể dùng tiếp với mọi payload khác ; lúc đó chỉ cần biết tạo payload.

     Tạo payload : Phần này giúp giải quyết các khó khăn khi " theo" hướng dẫn của coreboot.org/QEMU_Build_Tutorial

LAB_payload : (lablinux.elf)
#!/bin/sh
mkelfImage --type=bzImage-i386 --append="console=ttyS0" --initrd=initrd.gz vmlinuz  lablinux.elf

grub2_payload : (grub-payload.elf)
#!/bin/sh
svn co svn://svn.savannah.gnu.org/grub/trunk/grub2
  cd grub2
  ./autogen.sh
  ./configure --with-platform=coreboot
  make
mkdir -p boot/grub
cp at_keyboard.mod ata.mod iso9660.mod  boot/grub
cat > boot/grub/grub.cfg <<EOF
serial --speed=115200 --word=8 --parity=no --stop=1
terminal_output serial
terminal_input serial

search -s -f /grub.cfg
source /grub.cfg
EOF
tar -cf memdisk.tar boot
LISTS="moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst"

  MODULES="normal ls cat help ext2 iso9660 reiserfs xfs fat pc gpt ata serial memdisk multiboot linux  configfile search cpio at_keyboard"
  ./grub-mkelfimage -d . --memdisk=memdisk.tar $MODULES $LIST -o ../grub-payload.elf --prefix='(memdisk)/boot/grub'

filo_payload : (filo.elf)
#!/bin/sh
svn co svn://coreboot.org/filo/trunk/filo
cd filo*
build.sh

coreinfo_payload : (coreinfo.elf)
#!/bin/sh
svn co svn://coreboot.org/repos/trunk/payloads/coreinfo
svn co svn://coreboot.org/repos/trunk/payloads/libpayload
cd libpayload
make defconfig
make
make DESTDIR=../coreinfo install
cd ../coreinfo
mkdir -p configs
cat > configs/defconfig <<EOF
# General settings
CONFIG_SHOW_DATE_TIME=y
CONFIG_PAYLOAD_INFO_NAME="coreinfo"
CONFIG_PAYLOAD_INFO_LISTNAME="System Information"
CONFIG_PAYLOAD_INFO_DESC="Display information about the system"
CONFIG_PAYLOAD_INFO_VERSION="0.1"
# Modules
CONFIG_MODULE_COREBOOT=y
CONFIG_MODULE_CPUINFO=y
CONFIG_MODULE_PCI=y
CONFIG_MODULE_NVRAM=y
CONFIG_MODULE_BOOTLOG=y
CONFIG_MODULE_RAMDUMP=y
CONFIG_MODULE_LAR=y
EOF
make defconfig
make LIBPAYLOAD_DIR=libpayload
   
Để có thể thí nghiệm ngay dù vẫn gặp khó khăn khi tự biên dịch hãy tải về
http://wjhowto.googlepages.com/buildrom … ol.tar.bz2 (< 2M ) .
Chạy runme trong đó và ...loay hoay nhiều payloads .
127 Reply by wangji 09/07/2009 22:56

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu
Bát Chánh Đạo  Phụ lục  :

                        coreboot  và payloads : tiếp 2
Như ta đã thấy coreboot.rom with grub2 as payload   có thể boot thẳng với qemu  .
Để nắm rõ tiến triển nhanh , grub2 từ ngày 26-06-2009 có khả năng mới với grub-mkimage  cho phép gói ghém " cái boot image" một cách hết sức đơn giản !  (bắt chước ...coreboot  !!  )

    svn co   svn://svn.savannah.gnu.org/grub/trunk/grub2
(cd grub2  , ./autogen.sh  ./configure  make  như thường lệ )

./grub-mkimage -d .  at_keyboard normal minicmd -o ./grubtst
cp /usr/share/qemu/pc-bios/vgabios-cirrus.bin .

qemu -L . -bios grubtst /dev/null

  Trong console_grub  lsmod  sẽ hiển thị các modules minicmd  normal boot  at_keyboard  !!
Dĩ nhiên trong dòng grub-mkimage trên muốn thêm bớt các modules thì ...tùy tiện !

chú ý :
1 Nhớ là không có readme hay hướng dẫn trong cây grub_tree_svn  !!!Gục đầu vào src hay theo dõi forum ( không đơn thuần tí nào ! )

2  Nếu dùng grub-mkimage  cũ (svn cũ hơn 26-06-2009 )  thì phải làm thế nào để có kết quả tương đương ?
Vào grub2 cũ :
   ./grub-mkimage -d . at_keyboard normal minicmd -o grubtst
cat lnxboot.img grubtst > grub2.bin       # nạp linux_loader vào "coreimage_grubtst"

qemu -kernel grub2.bin /dev/null     # Dùng bios mặc định của qemu

Last edited by wangji (10/07/2009 20:05)
128 Reply by  tieuthunongdan_hp  27/07/2009 10:56

    tieuthunongdan_hp
    Bị cấm
    Offline

    Đăng kí: 27/07/2009
    Bài: 4

Re: Học với ubuntu

em mới đăng nhập, xin hỏi up ảnh lên mãi mà không được, ai giúp em với
129 Reply by wangji 27/07/2009 13:12

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu
tieuthunongdan_hp viết:

    em mới đăng nhập, xin hỏi up ảnh lên mãi mà không được, ai giúp em với

  nguyên tắc : không bao giờ nên up ảnh vào forum !!
(người không muốn xem cứ chờ ảnh một cách vô lý ! )

Muốn dẫn chứng với ảnh  :  để cái link tới chỗ có ảnh ; chỗ để ảnh đầy ra trên mạng  (google sẽ thấy )
130 Reply by wangji 03/08/2009 03:45

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo .

Hầu hết các livecd chạy trên qemu đều có thể nạp mạng qua máy chủ ...mà chẳng phải làm gì cả ,chỉ gõ  qemu -cdrom xyz.iso  !
Trên mạng có rất nhiều trang nói về qemu-networking  kể cả ...tuntap ,slirp_usermode  ..vv   Các giải thích đó ,hay các hướng dẫn rất  đầy đủ so với hướng dẫn mạng trên " bochs "  một emulator tương đương như qemu . Tuy nhiên nếu thử một distro nào đó mà không vào được mạng ...thì "pó tay" ,các mẹo ,thủ thuật trên mạng đều không giải thích nguyên nhân !

   Để cụ thể ta hãy thử đĩa floppy bootable  -nổi tiếng tuy đã cũ 2002- cỡ nhỏ không mất thì giờ tải ,nhưng đủ  để dẫn chứng .
              http://www.ibiblio.org/pub/Linux/system … 88.img.bz2
 
  Gõ  qemu   -fda    tomsrtbt-2.0.103.ElTorito.288.img   khởi động vào linux console  nhưng  không vào được mạng !
Thử nghiệm  với đĩa ảo linux-0.2.img của F Bellard
( http://www.qemu.org/linux-0.2.img.bz2 ) cũng vướng y hệt .

   Đôi điều nên biết khi vướng :

Hầu như trên bất kỳ distro nào   cat /proc/net/dev cho nhìn các thiết bị cạc mạng mà lõi kernel đã nhận được .
qemu có 2 cạc mạng ảo  ne2k và rtl8139 ; với tên thiết bị "tap" ,tap device thay cho ethernet device bên mạng thật
( Tôi khư khư tin rằng chữ tap này nguồn gốc có từ hồi "nghe trộm "=to tap a telephone wire  1920-30  chi đó ! Sau này tap cũng trỏ tới cắp điện ,cắp nước ...Ở đây "tap" vào "dây ethernet" !!).
Muốn bật cạc ảo ,dùng tunctl tiện ích của dân uml userModeLinux .Sau đó cấu hình tap đó như cấu hình cạc eth0 thường trong linux .
Hơn nữa cũng có thể tạo hub ảo - bridge để nối các cạc mạng ,thật và ảo với bridge . Routing thì như trong linux !

  Để thí dụ cụ thể  ta sẽ coi
     1 mạng ảo routing với ip
     2 mạng ảo với bridge .

  Môi trường làm việc  Host PC  nối với  router (192.168.1.1 ) rồi qua modem ra chợ giời . Hostpc_ip có thể là static (192.168.1.2)hoặc dynamic do dhcp của router+modem+ISP cho   .Trước khi gọi qemu ,bật cạc mạng ảo ,để bên máy ảo có điều kiện kết nối với cạc ảo đó.
Gọi qemu với option -net nic -net tap,ifname=tap0  để khẳng định dùng cạc ảo.

    Thí nghiệm A
  Chạy  qemu -cdrom  dsl.iso  cho phép lượn mạng nhưng không tài nào kết nối -hay ping- từ hostPC tới khách_guest_dsl_ảo .
Nếu làm như sau
   1  sudo  tunctl -u $UID -t -b    # bật thiết bị ảo tapj  j=0 nếu là lần đầu !
   2  qemu  -cdrom dsl.iso  -net nic  -net tap,ifname=tap0
(dsl  damnsmall linux  , hay bất kỳ livecd.iso )
   3  Trong một terminal khác của hostpc
       a  sudo ifconfig  tap0 10.0.2.2
       b  route add  -host  10.0.2.15   dev tap0
  bây giờ có thể ping -c 2 10.0.2.15  vào guest_dsl_ảo_của qemu !
Lịnh b  "nối"  guest_ip với thiết bị ảo tap0  !

script mì ăn liền :
$cat wrapiso_qemu.sh

    #!/bin/sh
    #set -x "usage wrapiso_qemu.sh  livecd.iso"

    sudo chmod 0666 /dev/net/tun
    sudo modprobe tun 2>/dev/null
    tapnew=$(sudo tunctl -b -u $UID)
    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
    sudo ifconfig $tapnew 10.0.2.2
    #this allows pinging from host to qemu_guest
    sudo route add -host 10.0.2.15 dev $tapnew
    sudo  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    qemu  -net nic -net tap,ifname=$tapnew -boot d  -cdrom $1   
    sudo ifconfig $tapnew down
    sudo tunctl -d $tapnew
    sleep 2

Sau khi khởi  wrapiso_qemu.sh  dsl.iso   ,mở terminal trong dsl_ảo ,sudo su (với hacao2009ce.iso không cần vì đã root_rxvt )rồi cấu hình cạc mạng ảo
ifconfig  eth0  10.0.2.15 && route add default gw eth0 10.0.2.2 && echo "nameserver 192.168.1.1" >> /etc/resolv.conf
Nhớ gọi /etc/init.d/ssh start  để có keypairs cho phép chui vào máy với ssh từ hostPC ! Và nhớ gõ passwd dsl để đổi mật khẩu dsl -chứ không còn lâu biết mật khẩu cũ của dsl_iso  !!!
  Thế là có cái dsl_ảo có thể lượn mạng và cũng có thể  ssh 2 chiều : hostpc --> dsl_ảo   dsl_ảo --> hostpc
(Dám khẳng định bạn chưa bao giờ chứng kiến hoàn cảnh này với qemu_livecd !)

Last edited by wangji (15/08/2009 19:53)
131 Reply by wangji 03/08/2009 03:46

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )

  Thí nghiệm B  : mạng ảo với masquerade

$cat  wrap_qemu.sh

    #!/bin/sh
    #set -x  "usage : wrap_qemu  linux-0.2.img "
    sudo chmod 0666 /dev/net/tun
    sudo modprobe tun 2>/dev/null
    tapnew=$(sudo tunctl -b -u $UID)
    sudo ifconfig $tapnew 10.0.2.2
    # Nối guest_ip với cạc ảo tapnew
    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
    sudo route add -host 10.0.2.15 dev $tapnew
    #NAT net addr translation qua router_gateway và masquerading
    sudo  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    qemu $1 -net nic -net tap,ifname=$tapnew ,script=no     
    sudo ifconfig $tapnew down
    sudo tunctl -d $tapnew
    sleep 2

  script wrap_qemu linux-.0.2.img  chạy với quyền user thường ,khởi linux ảo ;sau khi nhập dưới tên root :xxxx phải khai báo cổng gateway   
     # echo  " nameserver  192.168.1.1" > /etc/resolv.conf   thế là có thể
   #ping  -c 2 www.vnn.vn
Ở đây ta có 2 mạng : mạng lớp 10.0.20  và mạng lớp  192.168.1.0  !

Last edited by wangji (03/08/2009 19:04)
132 Reply by wangji 03/08/2009 03:48

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )

  Thí nghiệm C : mạng ảo với bridge ( hub ảo )

$cat bridge_qemu.sh

    #!/bin/sh
    #set -x
    sudo chmod 0666 /dev/net/tun
    sudo modprobe tun 2>/dev/null
    sudo ifconfig eth0 0.0.0.0
    sudo brctl addbr br0 2>/dev/null
    sudo brctl addif br0 eth0
    sudo ifconfig br0 192.168.1.55 netmask 255.255.255.0 up
    sudo route add -net 192.168.1.0 netmask 255.255.255.0 br0
    sudo route add default gw 192.168.1.1 br0
    tapnew=$(sudo tunctl -b -u $UID)
    sudo ifconfig $tapnew up
    sudo brctl addif br0 $tapnew
    qemu $1 -net nic -net tap,ifname=$tapnew ,script=no

    #restore hostpc network_config
    sudo ifconfig $tapnew down
    sudo brctl delif br0 eth0
    sudo tunctl -d $tapnew
    sudo ifconfig eth0 192.168.1.121 netmask 255.255.255.0
    sudo route add -net 192.168.1.0 netmask 255.255.255.0 eth0
    sudo route add default gw 192.168.1.1 eth0

Ở đây chỉ có một lớp mạng 192.196.1.0  vì bridge không có trách nhiệm router nên chỉ dùng như một cái hub !
Kết luận bridge cũng như các cậu bridge_ports  đều cùng lớp mạng với nhau .Vì qemu mặc định đặt ip cho máy ảo đầu là 10.0.2.15  ,ta không thể
có arp ,nat ...phân giải cho lớp mạng 10.0 được .Trong console ảo gõ
#ifconfig eth0 192.168.1.12  &&  route add default gw  192.168.1.1
#echo "nameserver 192.168.1.1" > /etc/resolv.conf
là có thể ping -c 2 www.yahoo.com

  Chú ý  :
1  Khi có máy ảo qemu ,có thể gõ ctrl-alt-2  để vào "console system của máy ảo "  Từ đó gõ
#info network  để xem cạcmạng trong hệ máy ảo !
2  Các script trên cũng chạy với  tomsrtbt-2.0.103.ElTorito.288.img  nhưng
   a  phải chèn option -fda trước tomsrtbt
   b  phải cấu hình lại eth0 của tomsrtbt  vì /sbin/init nó mặc định đặt ip=1.1.1.1
3 Khi dùng máy ảo ,cấu hình có vẻ chạy như ý, nhớ gõ "exit"  nó sẽ reboot lại
và sẽ ghi những thay đổi vào đĩa ảo trước khi tắt máy ảo (qemu)
  Nếu rủi ro gập đĩa ảo mount readonly ,không cho viết thì gõ
#mount -o remount,rw /

Last edited by wangji (03/08/2009 19:05)
133 Reply by wangji 03/08/2009 19:12

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )

  Thí nghiệm D : khảo cổ

Khá lâu ( 1995-96)có người đã tạo đĩa ảo dlxlinux - Lõi linux-1.3.89 ! -để thử nghiệm với bochs ;
trên bochs  đĩa đó - tên hd10meg.img - cho phép nối mạng ! Hồi 2006-7 một ai đã gói lại thành
bochs-dlxlinux-2.3-7.fc6.x86_64.rpm (google sẽ đầy url để tải )
Trong gói đó có đĩa hd10meg.img.gz (1.5Mb) .Hãy thử như với A,B,C  .. để trả lời các câu hỏi sau
  1 Dẫn chứng khi cấu hình cạc mạng ảo sẽ báo lỗi   
SÍOCIFADDR:no such device   ; tìm hiểu ý nghĩa lỗi
  2 Chứng minh là lõi kernel không nhận được cạc mạng ảo : không nhận được có ý nghĩa không có cạc ,hay có cạc nhưng lõi không có driver !
  3 Sau khi giải được điểm trên tìm hiểu tại sao ...vẫn không nối được mạng như khi dùng cũng đĩa đó trong bochs  ! (khó đấy )

  Dĩ nhiên  tha hồ google tất cả các tài liệu liên quan có trên mạng !
Hints:
Ngày xưa ,thuở ban đầu thế hệ PC các thiết bị ngoại vi chỉ có ISA ;đôi năm sau PCI ra đời ; Vì lý do giữ chức nhiệm phù hợp thừa kế máy cũ ,ISA và PCI được đi cùng nhau trên chục năm trời !
Khi qemu ra đời hồi 2003 (10 năm sau khi tác giả tốt nghiệp trường X Palaiseau )qemu cũng giữ cả 2 .. Vì qemu có tính năng "dễ dùng" họ ghi mặc định một số chuyện ,trong đó cạc mạng PCI ne2k-pci .
bochs-dlxlinux lúc ra đời muốn hợp thời trang -còn nhiều máy ISA hồi đó - ....
  Tìm dạng qermu gọi với ISA  sẽ tránh được chuyện  SÍOCIFADDR:no such device khi sử dụng   bochs-dlxlinux   !!!

Last edited by wangji (07/10/2009 14:59)
https://sourceforge.net/projects/toysbox/files/scratchboxToolkit/Rootstraps-Toolchains/mkgrubusb.sh/download
134 Reply by wangji 17/08/2009 15:34

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )

Thí nghiệm E : Khảo cổ 2
tomsrtbt-1.6.263   13aug98ay  (http://www.linuxfocus.org/Francais/January2000/) thời buổi 1997-8 floppy rescue nổi tiếng
tomsrtbt-2.0.103     may2002       (http://www.toms.net/rb/ )   ...mới nhất !
  Khó nhất với khảo cổ là tài liệu hiếm hướng dẫn ! Phải mầy mò !

    ---------------------lan 192.168.1.0 ------------------Host nic eth0 (192.168.1.2 )------routerModem (192.168.1.1 )--- internet www-
                                                                                                                                                DNS server
----vlan0 10.0.2.0--- (eth0 saigon1 10.0.2.15 )-------  Host tap0 (10.0.2.2 )
                   |
               socket,mcast
                   |
-----------------vlan1  10.0.4.0 (eth0 hanoi1 10.0.4.1 )

Đôi điều nên biết với qemu _mạng

1 option  -net nic  sắp đặt tham số về phần cứng cạc mạng ( model  ne2k , rtl8139 ..  macaddr  -số địa chỉ ethernet duy nhất,dù ảo )
2 option  -net "bên máy ảo"
    2a  -net user
    2b  -net tap,  hay -net socket,   hay  "-net tap,  -net socket, "

-net user không còn hữu dụng độc quyền stack nếu một option 2b được chọn tiếp !!!
(tỉ dụ  qemu -net nic -net user -cdrom anylivecd.iso  cho nối mạng chợ giời
  qemu  -net nic -net socket,macaddr=a.b.c.d:1234 -cdrom anylivecd.iso
chỉ nối mạng ảo  những ai cũng cắm vào socket đó )
Với 2b ,muốn nối mạng chợ giời ,bó buộc phải có cạc ảo "thiết bị tap" !

3 Trong thế giới ảo có thể tạo nhiều mạng vlan ảo ,mỗi vlan có một socket
Trên cùng một socket tất cả các máy ảo có thể gọi nhau -trao đổi dữ liệu ,telnet ...- Nếu mạng đó có một cạc ảo nối với chợ giời thì
tất cả các máy trên mạng đó cũng được nối với chợ giời ,dù ip có vẻ không cùng subnet_segment (10.1.1.1  gọi được 10.0.2.15! )

4 Mỗi máy ảo dùng một image riêng tomsrtbt-xyz.img ,Vì cỡ nhỏ cóp nó thành n client  : client1,2,3  .....img
Nhưng nếu muốn dùng image cỡ lớn -debootstrapping ,đĩa có sẵn -thường từ 400M tới 2.5G  thì người ta tạo client_n với qcow

for i in 1 2 3 4
qemu-img create -f qcow2 -b tomsrtbt-2.0.103.ElTorito.288.img client$i.img
done

Làm như vậy tiết kiệm  đĩa hdd .(qcow2 nén cao hơn ,cũng như bzip2 hơn bzip)
Lúc đó chỉ những gì biến đổi mới chép vào bên qcow ,còn phần "base.img readonly  vẫn nằm chỗ  cũ  - base.img đây là tomsrtbt
(Ở đây giống hệt các livecd ngày nay;  phần base là nén readonly squashfs  ,phần biến đổi dùng mount unionfs hay aufs  với tmpfs !
cho phép tha hồ apt-get thay đổi trên ..."livecd "  )

Trao đổi dữ liệu giữa 2 máy
(học mạng ;tha hồ thí nghiệm chẳng chết ai ! Hãng tư vấn "free-electrons " dạy mạng cũng dùng ...qemu-arm  !)

Dùng netcat : nc
(coi chừng nc trong tomsrtbt hạn chế hơn nhiều với nc ngày nay trên ubuntu ,busybox size problem)

    máy gửi_hanoi   dd  if=file  |  nc  10.0.2.15  78
    máy nhận_saigon  nc -l -p 78 > received_file
máy nhận ngồi chờ -listen mode -  thì phải khởi trước máy gửi .

chuyển thư mục etc/ :
   máy gửi  (cd /etc )  find . |cpio -o  | nc saigon1 78
   máy nhận (cd tmp ) nc -l -p 78  | cpio  -imd
Trên nguyên tắc có thể dùng tar thay cpio ,nhưng không hiểu sao tar -x  của  tomsrtbt không bung ra  (tar -c  thì có gói được )

telnet  giửa 2 máy :
máy dịch vụ telnet_server (saigon)   /usr/bin/nc -l -p 23  -e  /usr/bin/telnetd
máy khách telnet :  telnet saigon  (hay 10.0.2.15 )
Để thử có chạy chôi chảy ,trên khách telnet gõ:  echo " oi gioi oi " > oigioi
sẽ hiện ra tệp oigioi  trên máy telnet_server : cat oigioi  sẽ thấy kết quả !

chú ý :
muốn dùng tên symbol saigon1 như trên ,phải viết vào /etc/hosts  :  10.0.2.15  saigon1  vv  vào tất cả các máy trong mạng ảo !

mì ăn liền :$cat rezo_tom.sh

    #!/bin/sh
    #set -x "usage rezo_tom.sh  "

    sudo chmod 0666 /dev/net/tun
    sudo modprobe tun 2>/dev/null
    tapnew=$(sudo tunctl -b -u $UID)
    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
    sudo ifconfig $tapnew 10.0.2.2
    #this allows pinging from host to qemu_guest
    sudo route add -host 10.0.2.15 dev $tapnew
    sudo  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    #qemu -name router -m 32  -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=230.0.0.1:1234  -fda router.img &

    qemu -name saigon1 -m 32 -net nic,macaddr=52:54:00:12:34:57 -net socket,mcast=230.0.0.1:1234 -net tap,ifname=$tapnew,script=no -fda client1.img &

    qemu -name saigon2 -m 32 -net nic,macaddr=52:54:00:12:34:58 -net socket,mcast=230.0.0.1:1234 -fda client2.img &
    qemu -name hanoi1 -m 32 -net nic,macaddr=52:54:00:12:34:59 -net socket,mcast=230.0.0.1:1234  -fda client3.img &
    qemu -name hanoi2 -m 32 -net nic,macaddr=52:54:00:12:34:60 -net socket,mcast=230.0.0.1:1234 -fda client4.img &

    qemu -name livecd -net nic,macaddr=52:54:00:12:34:61  -net socket,mcast=230.0.0.1:1234 -cdrom dsl-4.2.4.iso

    sudo ifconfig $tapnew down
    sudo tunctl -d $tapnew
    sleep 2


Sau khởi động ,cấu hình mỗi máy ảo ...tùy thích ; nếu khéo tay tất cả các máy ảo đều ra chợ giời , và xã giao với nhau trong mạng ảo
tỉ dụ trên máy saigon1 (có thiết bị ảo tap )
ifconfig  eth0  10.0.2.15  && route add default  gw  10.0.2.2  && echo "nameserver  192.168.1.1" >> /etc/resolv.conf

The undocumented tomsrootboot :
Cũng có thể nhanh tay khi đĩa qemu_saigon1 boot  gõ ngay vào chỗ boot :
bz2bzImage   IPADDR= 10.0.2.15  GATEWAY=10.0.2.2  DNS_1=192.168.1.1
  sẽ có kết quả ...y hệt !!!

chú ý:
Dòng khởi livecd không cần thiết ,có đó để chứng minh có thể trà trộn distro khác nhau trên mạng ảo
Trên nguyên tắc ping url_chợ giời đủ dẫn chứng nối mạng ; Cho ai còn nghi ngờ chỉ cân gõ
wget  http://forum.vnos.org   sẽ tải về index.html !

Last edited by wangji (07/09/2009 18:43)
135 Reply by wangji 27/08/2009 01:37

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )

Thí nghiệm F : Đường hầm Củ Chi : Từ hanoi vào saigon .

Tạo 2 mạng ảo saigon (1 2 ...)  và hanoi ( 1 2 ..)  .các máy trong mạng saigon nối cùng một cổng socket1 ,các máy trong mạng hanoi nối cùng cổng socket 2 . Chỉ có saigon1 nối tiếp với cạc ethernet_ảo tap0  và hanoi1 nối với tap1  cho phép tất cả các máy trong 2 mạng ra internet chợ giời  qua hostPC chính .
Bất kỳ máy nào trong saigon không nói chuyện với bất kỳ máy nào trong hanoi .

A
  Từ hanoi1  ,đào hầm "CủChi " chui vào saigon1 ; thế là từ hanoi1  có thể "đăng nhập" vào saigon1   ...như là hai máy được "kết nối" với nhau
B
Từ cổng saigon1_trên máy hanoi1- chuyển kiện hàng qua saigon2  vẫn trong hầm_ssh

Tuy có trao đổi 2 mạng vẫn ...xa cách (cóc ping được ! nhân  dịp này ôn lại học mạng kiện hàng dạng ip udp icmp  )

Môi trường làm việc :tất cả các máy phải có sshd ;  livecd là dsl-4.2.4.iso ( bất kỳ livecd nào hiện nay đều được ,dsl nhỏ cho phép khởi lẹ và đỡ tốn ram ).
#wget ftp://ftp.is.co.za/mirror/damnsmall/arc … -4.2.4.iso.

create_dsl:  tạo 4 image ảo dựa trên base_dsl-4.2.4.iso

rezo_dsl :     tạo 2 mạng ảo  saigon và hanoi

Phải cấu hình trên mỗi máy dsl _i   
                                                           1  sudo su
                                                           2  ifconfig  eth0   10.0.2.15/16/17/18  ( cho saigon1/saigon2/hanoi1/hanoi2 )
                                                           3 route  add  default  gw  10.0.2.2
                                                           4  echo  "nameserver  192.168.1.1 "  >> /etc/resolv.conf   (đây là ip_router và là gateway của PC_lan )
                                                           5   passwd  dsl    (chọn 4 mật khẩu dễ nhớ cho 4 dsl@máy_ảo )
                                                            6  /etc/init.d/ssh  start    ( tạo keypairs và bật  daemon  sshd )

***  Dĩ nhiên hostPC cũng đã bật sshd  với /etc/init.d/ssh start (chứ không làm sao đào hầm chui !)

     Thí nghiệm A  :  đào hầm từ hanoi1 vào saigon1
  termA_hanoi1$ ssh  -t  -L  8000:saigon1:22  user@hostPC   (trả lời mật khẩu của user trên hostPC)

  Đăng nhập từ hanoi1 vào saigon1 trên một terminal B :
termB_hanoi1$  ssh  -l  localhost  -p 8000     ( trả lời mật khẩu của dsl  trên máy saigon1  !! )

Để chứng minh là đang ngồi trong saigon1  ,gõ
"termB_hanoi1$"  echo "dang o hanoi viet vao saigon qua ham cuchi"  > han-sgn

  Quan sát trên máy saigon1  ! ( Dĩ nhiên phải thay trong các cmdline saigon1 bằng 10.0.2.15  ,  hostPC bằng 10.0.2.2   vv )

   Thí nghiệm B :
  Vẫn ngồi trên saigon1-trong_hanoi1 ,gửi kiện hàng han-sgn qua hanoi2 !
"termB_hanoi1$"  scp   han-sgn  dsl@hanoi2   (trả lời mật khẩu của dsl trên máy hanoi2 !)
vào máy hanoi2 kiểm tra có nhận hàng   !

Khi tắt máy nhớ tắt hanoi2 cuối cùng ,lúc đó script sẽ tháo detach  các ethernet_ảo (nếu không phải dùng tunctl -d tap_j )

Chú ý:  Không có một admin nào cho phép thử nghiệm bậy bạ  chui hầm trên mạng thật  .Rủi ro tí ti là các máy treo !
Đó là lý do chính nên thí nghiệm với mạng ảo !(Nhưng không phải ai cũng biết tạo mạng ảo để  lọ mọ chơi )
Nếu "bí" về ssh  /tunneling vô đây  http://www.phwinfo.com/forum/comp-security-ssh/

create_dsl :

    #!/bin/sh
    #create clones dsl.iso in qcow2 based on dsl-4.2.4.iso
    for i in 1 2 3 4 ; do
    qemu-img create -f qcow2 -b dsl-4.2.4.iso dsl$i.iso
    done

rezo_dsl :

    #!/bin/sh
    sudo chmod 0666 /dev/net/tun
    sudo modprobe tun 2>/dev/null
    tapnew1=$(sudo tunctl -b -u $UID)
    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
    sudo ifconfig $tapnew1 10.0.2.2
    #this allows pinging from host to qemu_guest
    sudo route add -host 10.0.2.15 dev $tapnew
    sudo  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    qemu -name saigon1 -m 32 -net nic,macaddr=52:54:00:12:34:57 -net socket,mcast=230.0.0.1:1234 -net tap,ifname=$tapnew1,script=no -cdrom dsl1.iso  &

    qemu -name saigon2 -m 32 -net nic,macaddr=52:54:00:12:34:58 -net socket,mcast=230.0.0.1:1234 -cdrom dsl2.iso &
    tapnew2=$(sudo tunctl -b -u $UID)

    qemu -name hanoi1 -m 32 -net nic,macaddr=52:54:00:12:34:59 -net socket,mcast=230.0.0.1:1235 -net tap,ifname=$tapnew2  -cdrom dsl3.iso  &

    sudo ifconfig $tapnew2 10.0.2.20
    qemu -name hanoi2 -m 32 -net nic,macaddr=52:54:00:12:34:60 -net socket,mcast=230.0.0.1:1235 -cdrom dsl4.iso

    sudo tunctl -d $tapnew1
    sudo tunctl -d $tapnew2
    sleep 2

chú ý :  Nếu ai cho account_ssh ở xa (bibirox/cranNinja  )có thể thay trong thí nghiệm A  user@hostPC  bằng account đó  ; với diều kiện là mạng ảo saigon
cũng có dyndns_account để có thể ...kết nối từ ngoài khơi !!

Last edited by wangji (07/09/2009 18:45)
136 Reply by wangji 07/09/2009 15:09

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )
        Dẫn đường lên mạng : tạo router ảo .

  Ở nhà bạn có vài máy ,cắm chung vào router - bridge của router - ;lúc bật máy ,đến lúc nào trong quá trình boot sẽ tới dhcp client xin sỏ IP di động với router  !
Trong bài Đường hầm củ chi ,ta có đủ tiện ích để tạo hòan cảnh trên ; nếu dsl.iso  có thiếu dhcpc-server chẳng hạn ,thì từ máy ảo cứ chui vào chợ giời mà tìm rồi nạp !

  Để có cái nhìn khía cạnh khác sao không tạo một DSLslim - đĩa ảo bootable - nhỏ xíu (1/10 của dsl.iso) ,nhưng cũng có đủ các tiện ích mạng  (netcat ,ftpput ftpget telnet rsync ...và openssh );
Đơn giản lắm
  1 biên dịch busybox mới nhất ,dạng static cho khỏi suy nghĩ lệ thuộc
  2 lượm nhặt từ máy ảo có dsl-xyz.iso  mọi thứ liên quan tới ssh   scp  ...cùng các thư viện cần thiết  ( ldd   là "bạn" cho tìm các lệ thuộc) nhưng coi chừng phần bảo mật liên quan tới libmath , phần "gọi tên nhau trên IP " ,nslookup  liên quan tới libnss ,libresolv ...
(dĩ nhiên áp dụng cách dùng scp  trong máy ảo để chuyển sang máy chủ các tệp muốn có !
Nếu quên nhớ ôn lại :  " ai thích build thật với ảo" : http://forum.vnoss.org/topic4610.html)

  Thế là có đĩa dể thay cho dsl.iso  , máy ảo chỉ cần 16M ram (dsl.iso gọi với 128M )  DSLslim-shnetcat
http://wjhowto.googlepages.com/DSLslim-sshnetcat.bz2

Thí nghiệm router ảo :
  Tạo mạng ảo saigon từ đĩa DSLslim -cắm chung cổng socket -bridge ảo - trạm router ta sẽ cho cắm nối cọc "tap" với host chủ  để mạng có điều kiện ra chợ giời www  ....các trạm khác saigon 2 3 4   sẽ gọi dhcpc xin IP di động  với router ảo !

mì ăn liền   mangao :

    #!/bin/sh
    #wget http://wj.howto.googlepages.com/DSLslim-sshnetcat.bz2
    for i in 01 02 03 04 ; do
    qemu-img create -f qcow2 -b DSLslim-sshnetcat mangao$i
    done

    sudo chmod 0666 /dev/net/tun
    sudo modprobe tun 2>/dev/null
    tapnew=$(sudo tunctl -b -u $UID)
    sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
    sudo ifconfig $tapnew 10.0.2.2
    #this allows pinging from host to qemu_guest
    sudo route add -host 10.0.2.15 dev $tapnew
    sudo  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    for i in  02 03 04;do
    qemu -name saigon$i -m 32 -net nic,macaddr=52:54:00:12:34:$i -net socket,mcast=230.0.0.1:1234 mangao$i  &
    sleep 8
    done
    qemu -name router  -m 32 -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=230.0.0.1:1234 -net tap,ifname=$tapnew mangao01   
    sudo tunctl -d $tapnew
    sleep 2

Sau khi gọi mangao ,vào trạm router cấu hình với
ifconfig eth0 10.0.2.15 && route add default gw  10.0.2.2 && udhcpd

  Vào các trạm sau gọi udhcpc rồi tha hồ thí nghiệm tất cả các tiện ích mạng giữa các máy ảo , kể cả host chủ len chui được vào các đĩa ảo!
Nếu  muốn lúc boot có hết chỉ cần nhét vào  /opt/bootlocal.sh  dòng udhcpc
(nhét cấu hình bằng 2 ngón tay ban nãy cho router_/opt/bootlocal.sh  !)

  Coi ảnh sau ,nhìn kỹ discover các IP khác nhau của các máy ảo !
http://wjhowto.googlepages.com/udhcpc-ok.png

Muốn đào sâu vào dhcp  ... đọc các /etc/udhcpd.conf  ,/usr/share/udhcpc/default.script  ,trong các đĩa ảo .
Trên nguyên tắc có thể biết các IP leases đang xài ,với dumpleases  ...
nhưng thực tế busybox khó nhai  , dù bất kỳ applet lịnh nào của busybox cũng có help khá đầy đủ  ( busybox applet --help )

Last edited by wangji (07/09/2009 15:17)
137 Reply by wangji 19/09/2009 20:33

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )
        Dẫn đường lên mạng : tạo router ảo (tiếp ):

   Chuyển hộ -chroot -vào dòng họ mips
DD-WRT54
hay
Openwrt-Kamikaze-8.09  ... ảo .

  trong khi chờ bản việt coi :  http://wjhowto.googlepages.com/runningo … -wrtinqemu

Last edited by wangji (22/09/2009 19:25)
138 Reply by hung98se 20/09/2009 01:33

    hung98se
    Thành viên
    Offline

    Đăng kí: 25/11/2007
    Bài: 186

Re: Học với ubuntu
wangji viết:

      Bát Chánh Đạo  Phụ lục  :

                            coreboot  và payloads

    coreboot "biết " rất nhiều chipsets ,nhiều cạc mẹ (26),và có thể kết nối với nhiều hệ điều hành như
         Linux, FreeBSD, DragonFly BSD, Solaris et Mac OSX

    payload có nhiều dạng
    * Custom - Allows you to specify an external ELF file
    * Etherboot
    * FILO
    * Kernel - build a kernel payload (just the kernel - no initramfs)
    * LAB - Build a kernel plus a Linux As Bootloader initramfs attached to it
    * OFW - Open Firmware
    * Memtest - Memtest86
    * Grub2
    * ADLO  to boot win2k  !

    Lấy thí dụ cho dễ nói : Ta muốn thay biosRom của PC bằng coreboot.rom . Trong coreboot.rom có 2 thành phần
            coreboot  và  payload
    coreboot tương đương như bios !
    payload có thể là kernel ,LinuxAsBootloader  ,hoăc là grub_payload ....

Nhìn vào "Sponsors - Coreboot" http://www.coreboot.org/Sponsors:

    Development Sponsors

        * Google, Inc., for sponsoring QA-related coreboot development.

    Vendors who have donated hardware

        * Acer
        * Advantech
        * AMD
        * Artec Group
        * SiS
        * Technologic Systems
        * VIA
        * Momentum Computer
        * Newisys

thì hình như Coreboot chỉ dùng với AMD/VIA 's CPU, chứ không dùng được với Intel CPU ?
(Intel CPU đi kẻm với (U)EFI  http://en.wikipedia.org/wiki/Unified_Ex … _Interface )

?

LH
139 Reply by wangji 24/09/2009 01:39

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )
                                                    Dẫn đường lên mạng : tạo router ảo (tiếp ):

                    Chuyển hộ -chroot -vào dòng họ mips : DD-WRT54  hay   Openwrt-Kamikaze-8.09  ... ảo .

Đây là 2 firmwares  - bleeding edge dùng cho " router_thật "  có trên mạng  (aug 2009 )! Dù nhiều người có thể có router đó ở nhà nhưng không phải ai cũng mạnh bạo moi móc hack ,vì sợ gia đình ...la , nếu ...mất "mạng" ! Mà trên mạng  không ai thử ...với máy ảo các soft này !

Trên nguyên tắc ,có thể dùng qemu-system-mips  để hòan tòan "mạo"  cái router  ; thực tế chưa thấy "ai" biết làm trên mạng !
Cách đơn giản hơn dùng qemu-user-mips  để mạo cpu_mips  ; lúc đó chỉ cần  "chuyển hộ   change_root " để chạy các apps_mips
còn phần "vật chất liên quan pchost " thì nhường lại kernel của pchost !
  Nhiều người biết ,nhưng cũng chưa thấy ai ghi lên mạng chi tiết cách ...thực hành có hiệu quả !
(Dĩ nhiên chỉ có qemu cho phép chuyển dòng họ cpu ! )

   Nguyên tắc chuyển hộ : từ hộ A  sang hộ B  (dĩ nhiên không bàn trường hợp A B cùng dòng họ cpu ; mạng có nhiều tài liệu )
       A dùng x86 (cái pchost )  B  dùng mips (mạo với qemu )

Vì qemu khởi từ A tất nhiên lệ thuộc các thư viện libc libpthread libm librt  và dĩ nhiên quan trọng nhất cái ld-linux -loader  -
Khi chuyển sang hộ B  các thư viện cho mips không thể chạy cho qemu , mà từ hộ B không còn mối dây liên lạc tới hộ A nữa !
Kết luận
     A  Trong hộ B phải có qemu _mạo_mips cùng với thư viện kèm theo :  dễ nhất chỉ có qemu-mips-static .

Mỗi lần gõ một lịnh trong shell , linux gọi loader_ld-linux để kiểm tra header và "nạp" lịnh đó vào bộ nhớ  ,rồi lõi kernel "trao tay" cho lịnh để ...thực thi.
   ld-linux  của hộ A thì x86  mà ld-linux hộ B thì mips . Vì ta "mạo" mips ,cái loader  gọi interpreter  ,được thay bằng cả  dòng "qemu-mips  lịnh_cho_mips ".
  Lõi linux có khả năng đặc biệt binfmt_misc  : tùy dạng bin lõi trao tay cho interpreter khác nhau  !  Hai hộ khác họ cần có hai interpreter ; (chi tiết bài sau )
kết luận
    B   Cần có "interpreter switch "  khi chuyển hộ !
Gói qemu-binfmt  có trên mạng chạy với debian ,ubuntu nhưng không chạy với puppy chẳng hạn vướng víu với phiên bản Perl !
Phải chịu khó viết lại bằng bash_script thì chạy đủ mọi nơi !(coi gói qemu-binfmt  cuối trang,có kèm theo qemu-static )
  qemu-mipsel-static phải tìm patch nếu muốn compile lấy
( ôn lại trang "Vài chiêu lẩu nhúng " trong  "học với ubuntu" !  )

Mì ăn liền cho ai nóng nẩy :
screenshot :
http://sites.google.com/site/learnembed … e-8.09.png
http://sites.google.com/site/learnembed … e-8.09.png

  Tải http://wangji.hoan.googlepages.com/emul … ed.img.bz2
hoặc http://hoan.ngoc48.googlepages.com/emul … ed.img.bz2

Gõ qemu  emulate-embedded.img
Khi vào linux_host_x86  gõ  /kamikaze.sh  hay /dd-wrt.sh  thì có trước mắt cái router_mips ( như đã đăng nhập qua ssh !)

  Các tài liệu liên quan có tại :
http://sites.google.com/site/learnembeddedlinuxnow/home

http://sites.google.com/site/learnembed … ed.img.bz2
http://sites.google.com/site/learnembed … fs.tar.bz2
http://sites.google.com/site/learnembed … fs.tar.bz2
http://sites.google.com/site/learnembed … e-embedded
http://sites.google.com/site/learnembed … mt.tar.bz2
http://sites.google.com/site/wjhowto/ru … -wrtinqemu

Dùng browser mà tải ,wget không ăn tiền đâu ! Sẽ có chi tiết giải thích cách tạo các tệp trên .

Last edited by wangji (24/09/2009 14:30)
140 Reply by wangji 27/09/2009 19:36

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )
                                                    Dẫn đường lên mạng : tạo router ảo (tiếp ):

                    Chuyển hộ -chroot -vào dòng họ mips : InterpreterSwitch

Cách giải thích interpreter_switch   dễ nhất là lấy vài thí nghiệm .
Nhưng trước hết phải nhắc đôi điều về binfmt_misc . Đây là chức năng của lõi cho phép gọi trình_apps với dạng mệnh_danh_naming. (tài liệu tại  kernelsrc/Documentation ) .
Vì tên tệp nằm trong hệ tệp , binfmt thuộc dòng giống pseudo filesystem ; muốn dùng phải móc ,kiểu
              mount -t binfmt_misc  none  /proc/sys/fs/binfmt_misc
,rồi mới có thể "đăng ký tên_gọi  cùng với  interpreter"  để nạp trình .

Tỉ dụ khi có tên mipsel  thì interpreter sẽ là  "qemu-mipsel  trình_mipsel"

Các trình trong linux đều có "đầu tệp  header "  có "dấu ghi Magic" thuộc dòng họ nào .
Khi gõ "file app" để xem app đó là ELF mips chẳng hạn , lệnh file quan sát đầu tệp rồi khai báo .
Cách mọi rợ hơn -nhưng chạy ở gần như đủ mọi nơi -
     head  -c 20  app | hexdump   

Trong máy qemu emulate-embedded.img   có thể nhìn  trên điểm móc binfmt_misc

  cat  /proc/sys/fs/binfmt_misc/mipsel  | grep  magic     thì kết quả cũng y hệt .

  Khi ngồi trong shell ta gõ tên một trình app  ,ld-linux nạp và quan sát đầu tệp ;nếu có chữ mipsel lõi sẽ lôi đầu qemu-mipsel thay interpreter

chú ý : Sách thường nói "hệ thống nạp trình rồi quan sát  ; như vậy rất mơ hồ vì hầu như cái gì mà chả hệ thống ! Ngoài ra nhiều nơi giảng ld-linux chỉ để nạp thư viền chia sẻ - các lib.so  ,nhưng chính nó là interpreter linux cho  cpu ( bên mips thì hay mặc định ld.so.1  trỏ  tới ld-linux của mips ! Nó có chức nhiệm nạp trình và tìm nạp  các thư viện liên quan  !
(Cứ gõ thử ld-linux Tab any_app  thì sẽ thấy )

Môi trường thí nghiệm : một trong 2 trường hợp sau đây:
  1  pcHost (fedora ubuntu puppy đều ok hết  ) + qemu (-mipsel ) +qemu-binfmt-support + rootfs-mipsel
  2  qemu  emulate-embedded.img
(coi bài trước nếu cần tải tệp về để thử )

$ cd   rootfs-mipsel   ( kamikaze-8.09.01  hay rootfs-dd-wrt24 )

  Thí nghiệm 1
        Trong shell x86 -linux của pcHost -  gõ
   
              $qemu-mipsel    -L .  bin/busybox
sẽ mạo cái mips chạy trình busybox  như là đã gọi busybox trong máy mips thật .(tuy chỉ chạy có một trình mà không có cả hệ thống ).  " L . "  để khai báo với qemu địa điểm thư viện mips cho trình busybox . ( Đang ngồi trong thư mục mips !)

chú ý :qemu thừong mặc định tìm thư mục lib ở /usr/lib/gnemul/  hay /usr/gnemul/ cho mọi dòng giống cpu ,nếu không chèn option -L

  Thí nghiệm 2
        Trong shellx86/rootfs-mipsel  gõ
          $  bin/busybox
Cũng chạy y hệt ;lý do   ld-linux _x86 nạp bin/busybox ,nhận ra là mips (little endian) ,trao cho binfmt_misc  ,rồi gọi
    /usr/local/bin/qemu-mipsel  -L  path_lib_mips   busybox

   Thí nghiệm 3
      Trong shellx86/rootfs-mipsel  gõ  (su quyền root trước nếu chưa có)
        # chroot  .  bin/busybox

  Lúc busybox được gọi với ld-linux_x86  ,được nhận có dấu Magic_mips ,trao tay cho binfmt_misc rồi tới /usr/lib/qemu-binfmt/qemu-run-binfmt; coi chừng bây giờ đang ngồi trong chroot_rootfs-mipsel  ,trình gọi bởi qemu-run-binfmt trỏ có thể bước tới cái gì có trong ngục tù chroot này !
  Đó là lý do khi tạo rootfs-mipsel ,chép nguyên bản " /usr/lib/qemu-binfmt/"  từ x86_pchost  sang mips_rootfs   không đủ , mà phải  chuyển tất cả các  shared_lib_dependant_executables  sang dạng static_executables  !!! vì ở đây ta không còn tị gì là lib_x86.so nữa .   

  Muốn quan sát nhiều hơn thì dùng
" strace  chroot .  bin/busybox "
hoặc
   "chroot .  strace  bin/busybox "   
( trong lịnh thứ 2 này strace phải là đã biên dịch static vì nằm sau chroot tuy vẫn còn x86 ! )
Nếu muốn chơi cao thì
  "chroot . sh &&  strace_mips busybox"  !
nhưng khó đấy ! vì vẫn chưa tìm được "ai "  biết biên dịch strace cho mipsel với uClibc  !!!
***chờ tiếp : coi bào #142  !
   Dĩ nhiên  "chroot .  sh && strace busybox " vẫn chạy với strace_x86_static  vì shell vẫn thuộc x86 ,và ld-linux_x86 vẫn họat động trong shell này !
       
Các tệp nên quan sát trong gói emulate-mebedded.img :
1 /usr/lib/qemu-binfmt/qemu-run-binfmt    (x86 )
2  thư mục /proc/sys/fs/binfmt_misc/
( nếu không thấy gì trong ngục tù mips ...thì gõ  :
mkdir /proc && mount -t proc proc /proc )

3  trong gói  rootfs-mipsel :  các tệp có trong thư mục  " /usr/lib/qemu-binfmt "

Chú ý : tệp /usr/local/bin/qemu-mípsel  không cần thiết cho việc
"chroot  rootfs-mips  sh "  vì qemu-static-mipsel  chỉ cần tới sau khi chroot  !
Tệp đó có trong gói emulate-embedded.img chỉ để dẫn chứng cho "thí nghiệm 2" !

chú ý về tài liệu :
  25 Sept 2009  celebrate 40 years of unix. Ohio Linux Fest  OLF
  có cuốn pdf 260 trang ~90Mb OHL-developing-on-nonx86-systems.pdf   coi chừng ,chưa chắc sẽ nằm mãi đó
http://impactlinux.com/slides/OHL-devel … ystems.pdf
http://impactlinux.com/presentation

Last edited by wangji (15/10/2009 14:04)
141 Reply by wangji 05/10/2009 22:16

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )
                                                    Dẫn đường lên mạng : mips ảo (tiếp)

Với  emulate-embedded.img chúng ta đã có dịp mạo mips dưới dạng chroot  , và lõi quản lý vẫn là lõi của máy chủ hostPC .
Đây chúng ta sẽ tạo lõi_mips và mạo tòan bộ với lõi_mips + rootfs_mips .  Nếu GúGồ  với ký tự " mips  qemu  debootstrap"  sẽ có rất nhiều bài nói về chuyện này ,tuy nhiên không đâu giải thích chi tiết làm sao tạo lõi cho mips để chạy với qemu .
  Họ cứ nói tải vmlinux-xy-qemu tại đây ....nhưng không nói họ đã tạo nó như thế nào .và cụ thể đa số cứ trỏ về trạm debian của
Aurelien Jarno   hay trạm qemu với gói của Thiemo Seufer  !

   Muốn cross compile lõi cho mips ,đơn giản nhất là dùng tiện ích cross-compiler của ImpactLinux Landley's firmware ,vì đây dùng tòan đồ mới ( so với openwrt hay dd-wrt ) phù hợp cho các lõi mới nhất .

  Tuy trạm ImpacLinux có đủ hết tài liệu ,nhưng ..hơi khó nhai nếu còn mầm non linux ,  trang dưới đây mô tả rõ cách ...bắt đầu
và đi tới kết quả không kém các bài trên mạng (vì có cả ssh_dropbear đầy đủ trong gói để thử )
 

              http://sites.google.com/site/mipsellinu … mwarehowto

Cho ai nóng nảy ,tải về mà thử (3.5Mb)
   http://sites.google.com/site/mipsellinu … edirects=0
142 Reply by wangji 07/10/2009 13:10

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )
                                             <strong>       Dẫn đường lên mạng : mips ảo (tiếp)
                                             A Thực tập biên dịch "strace-static-mipsel"</strong>

  Để chứng minh với cái tệp nhỏ xíu mipsel-emulation-experiment.tar.bz2  (3.5Mb) ,làm sao biên dịch native tức là compile on a mips_machine !
Lý do:
gúgồ hoài trên mạng không thấy strace-static cho mips ,mà strace-static thì tiện cho máy mó cái router của Linksys dùng mips !( hay máy mó trên máy ảo mips ! nghịch ngợm thôi )
http://sites.google.com/site/mipsellinu … edirects=0
  Tải về  mipsel-emulation-experiment.tar.bz2

   qemu-system-mipsel -m 256M -M malta -no-reboot -nographic -hda mipselfs.img -kernel vmlinux  -append "panic=1 root=/dev/hda rw init=/usr/sbin/init.sh console=ttyS0 PATH=/bin:/usr/bin:/sbin:/usr/sbin"

  Vào console_mips , cd /tmp  (vì tmp móc trên ramdisk ,cho dễ dàng mọi chuyện )
wget  cái strace
   http://www.scratchbox.org/download/file … rig.tar.gz
   http://voxel.dl.sourceforge.net/sourcef … 18.tar.bz2

  thêm cái biên dich native_compiler cho mipsel :
   http://impactlinux.com/code/firmware/do … el.tar.bz2

  tar xjf native-compiler-mipsel.tar.bz2
  cd   native-compiler-mipsel
  tar  xjf  strace-4.5.18.tar.bz2
  cd  strace-4.5.18
  export PATH:../bin:$PATH           để compiler_path được ưu tiên !
  ./configure             
  make  CFLAGS=-static
Khi xong chép nó vào HostPC chủ mà giữ lại
  scp strace strace-graph strace.1  user@10.0.2.2:

   Thế là làm xong cái strace-static cho mips ;nhớ đổi tên thành strace-static-mipsel cho khỏi nhầm dòng họ cpu nọ với cpu kia !

chú ý : hôm qua Mark Miller -phụ trách gentoo LFS - tách thêm cái firmware ! Clone nó với
  hg clone http://mirell.org/hg/fwl
Mở config rồi tùy chọn theo sở thích trước khi build

Last edited by wangji (07/10/2009 16:31)
143 Reply by wangji 09/10/2009 00:00

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

Bát Chánh Đạo  Phụ lục  :  Mạng ảo trên đĩa ảo (tiếp )
                                                    <strong>Dẫn đường lên mạng : mips ảo (tiếp)</strong>
                                             <strong>B Thực tập biên dịch : dropbear-static-mipsel</strong>

Dĩ nhiên cũng có thể làm giống giống như strace-static , tuy nhiên với ẩn ý là càng làm dưới nhiều khía cạnh khác nhau càng hay.
Dưới đây ta sẽ móc nguyên bản "đĩa ảo" image-mipsel.sqf của gói system-image-mipsel.tar.bz2  .Chuyện này được vì lõi kernel ta sẽ dùng đã được biên dịch  có "built-in  hệ tệp squashfs" . (coi bài mips_ảo #141 đọc phần miniconfig.mips) Chú ý: squashfs ở đây là phiên bản 4.0 rồi đó ;đa số các distro các cậu có toàn phiên bản 3x
không "tự động  móc" nó được ...như thường lệ đâu ! ...mà phải "vá lõi" + biên dịch lại lõi !

wget
http://sites.google.com/site/mipsellinu … edirects=0
http://www.gzip.org/zlib/zlib-1.2.3.tar.gz
http://matt.ucc.asn.au/dropbear/dropbear-0.52.tar.bz2
http://landley.net/code/firmware/downlo … el.tar.bz2

Tháo
1 từ: mipsel-emulation-experiment.tar.bz2
mipselfs.img   vmlinux-2.6.31.1FirmwareNe2k    và symlink tới vmlinux
2 từ:   system-image-mipsel.tar.bz2
  image-mipsel.sqf

Gọi:
   qemu-system-mipsel  -M malta -no-reboot -nographic -hda mipselfs.img -hdb image-mipsel.sqf -kernel vmlinux  -append "panic=1 root=/dev/hda rw init=/usr/sbin/init.sh console=ttyS0"

Gõ mount    để nhận ra là  image-mipsel.sqf móc trên điểm   /home
Bây giờ  có tiện ích biên dịch - compiler toolchain - trong thư mục
  " /home/usr/bin"

Bây giờ ta bắt đầu biên dịch .Nếu biên dịch ngay dropbear với gói mipselfs.img ,hoặc ngay cả với gói image-mipsel.sqf  sẽ bị báo lỗi
Nhưng để bài viết dễ đọc dưới đây sẽ cài lần lượt cho "mượt " không lỗi !

Từ  mips_console :
export PATH=/home/usr/bin:$PATH
cd /tmp
tar xzf zlib-1.2.3.tar.gz && cd zlib-1.2.3

./configure --shared && make
(Nếu không thêm option  --shared  configure  sẽ mặc định tạo thư viện tĩnh  static lib.a  !)
cp libz* /usr/lib
mkdir /usr/include
cp *.h /usr/include
Vì ta sẽ cần lib.a để linking cho dropbear-static
./configure  && make
cp libz.a  /usr/lib
 
cd /tmp && tar xjf dropbear-0.52.tar.bz2 && cd dropbear-0.52

./configure --with-zlib=/usr/local/lib  CPPFLAGS=-I/usr/include
make STATIC=1

  Xong hết , scp   to user@10.0.2.2:   các  static binaries obtained  để giữ lại vào máy chủ HostPC
  zlib-1.2.3/[ libz.so* lib.a ]
dropbear-0.52/[dropbear dropbearconvert dropbearkey  ]

Nếu biếng gõ tay chạy
qemu-system-mipsel -m 256M -M malta -no-reboot -nographic -hda mipselfs.img   -kernel vmlinux  -append "panic=1 root=/dev/hda rw init=/usr/sbin/init.sh console=ttyS0  "
Trong mips_console
wget http://sites.google.com/site/mipsellinu … edirects=0
chmod +x buildDropbearStatic  &&  ./buildDropbearStatic
   
chú ý : nếu phải build strace hay dropbear static với cross compile thì sẽ ...tắc kẹt ! vì chưa thấy ai biết làm trên mạng !
Trong mipsel-emulation-experiment đã có dropbear (shared) sao còn biên dịch static làm chi ? Đó là chuyện trứng sinh ra gà gà đẻ ra trứng !
Nếu muốn giải thích cách tạo gói mipsel-emulation-experiment (trong đó có tối thiểu busybox ,dropbear ,thêm strace cho dễ học hỏi ...)thì dễ nhất là tạo lõi ,busybox  (bài đầu mips_ảo) tạo strace dropbear (bài 2 và 3 ) ;mà muốn tạo nó thì cũng phải có tiện ích tối thiểu là cái mipsel-emulation-experiment.....rồi mới sẽ tạo lại gói đó với nhiều thứ ...static !

Nơi đây sẽ nhiều biến đổi - khoảng 2 tuần- trước khi đưa vào hocvoi-ubuntu :
http://sites.google.com/site/mipsellinu … mwarehowto
https://sourceforge.net/projects/toysbox/

  tỉ dụ trong đó hiện có một số bin-static-armeb mới xong (IPX425 - nslu2 specific)
và ScratchboxToolkitMultiCpu-2.3-1.iso  vừa upgraded để có armv4eb_uClibToolchain của Landley's ImpactLinux (gcc-4.2.1 uClibc-0.9.30.1
kernel-2.6.31 )
và mới hơn :
Dựa trên puppy-4.3.1 + scratchbox-1.0.17 (mới nhất)và Firmware-2.6.31/uClibc-0.9.30   : ScratchboxMultiCpu-3.0-puppy.iso
Damnsmalllinux 3.3 +scratchbox-1.0.2 : ScratchboxMultiCpu-3.0-dsl.iso
coi chi tiết : http://sites.google.com/site/mipsellinu … cpu-livecd

Last edited by wangji (30/10/2009 16:08)
144 Reply by wangji 30/10/2009 15:56

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

<strong>Đôi lời  về livecd Remastering .</strong>
                                                               <strong> A Giới thiệu.</strong>
Đa số livecd ngày nay gồm 2 phần  : phần boot và gói KNOPPIX  ;tôi cố tình gọi gói đó dưới tên KNOPPIX tuy không tị gì dính dáng tới  distro loại knoppix . ( để tưởng niệm thời buổi 2003  livecd linh động ra mặt nhờ anh chàng Klaus Knopper ) ;
   gói KNOPPIX thường chỉ ở 2 dạng nén  cloop  và squashfs
Hầu hết các script _remastering đều tháo nén bằng trực tiếp móc gói nén với lịnh mount loopback device ,vì lõi dùng cho livecd đã có hỗ trợ module nén/tháo cloop/squashfs  .
Thao tác đó dĩ nhiên chạy ,nhưng khó chịu ở điểm với hòan cảnh ngày nay - lõi kernel cứ 6 tháng biến đổi , cloop cũng như squashfs phải đua theo - ngồi trong một distro -ubuntu hay fedora -  khó mà đụng chạm với các livecd cũ để nghịch ngợm một cách nhanh chóng ,không suy nghĩ !
Hơn nữa từ lõi 2.6.29  squashfs đã được hội nhập chính đạo - mainline kernel (hết khâu vá !)- sau 4 năm  mệt nhọc đợi chờ dù đã có nhiều hỗ trợ uy tín ,như của "Andrew Morton - chủ quán kernel_tree -mm" ngay từ thưở ban đầu
( http://lwn.net/Articles/305083/ ) kể cả hỗ trợ tài chinh  của nhóm CELinuxForrum
(      http://tree.celinuxforum.org/CelfPubWik … s-elce.pdf )
Thế là phải chạy sang phiên bản squashfs-4.0 không còn tị nào biết tháo các gói cũ !
(coi 4oct2009 của P Lougher http://www.murga-linux.com/puppy/viewto … mp;t=47297 ) .

Vài tháng sau từ lõi 2.6.30 trở đi , đến lượt lzma ( Igor Pavlov )được đưa vào đỉnh chùa thư viện kernel_lib  !!

chú ý :
1 Lúc này  lõi chỉ hỗ trợ tháo nén lzma cho phần initramfs.data.lzma  ,và thư viện unlzma - ai muốn dùng thì ...gọi ! Các apps có muốn thì phải tự lo cho công việc nén lzma ,lo cho các gói trình C nạp unlzma.h  để gọi hàm  !
squashfs cũng vậy ,muốn hỗ trợ squashfs4-lzma  như các lẩu nhúng thích dùng ... thì còn đợi ...ít thời gian nữa

Muốn biết kernel_src đang có ,có hỗ trợ các thứ vừa bàn thì chỉ cần
   grep  SQUASHFS  kernel_src/fs/Kconfig   hoặc  ls kernel_src/lib   | grep lzma

Lý do lzma của Pavlov là nén "bẹt" không kém  bzip2 nhưng tháo nén nhanh nhiều hơn bzip2 ! Tuy vẫn còn nhiều người chưa phục vì đòi hỏi  ram nhiều dùng cpu nhiều ....!   Fedora 12,openSuse11  gói các rpm với lzma  !

2 Ôn lại hocvoiubuntu #40-45   2/2/2008.

Last edited by wangji (30/10/2009 16:14)
145 Reply by wangji 30/10/2009 16:01

    wangji
    Thành viên
    Offline

    Đăng kí: 20/10/2004
    Bài: 582

Re: Học với ubuntu

<strong>Đôi lời  về livecd Remastering .</strong>
                                                <strong> B  Nén/tháo_nén</strong>
      (không dùng module driver cloop hay squashfs )

xét KNOPPIX nén cloop :    head -n 4 KNOPPIX | grep cloop

tháo nén cloop         :
           extract_compressed_fs   KNOPPIX  >  knoppix_raw

nén "a la KNOPPIX"
  mkisofs  -r path_datadir  | create_compressed_fs  -  65536  > KNOPPIX
Dòng trên tương đương với a+b .

   a  mkisofs  -r  path_datadir > knoppix_iso_raw
   b  create_compressed_fs  -B 65536 knoppix_iso_raw   KNOPPIX
sau đó dùng knoppix_iso_raw như đĩa loopback thường ;
mount -o loop knoppix_iso_raw  mountpoint
  cp -aP mountpoint/*  path_data_dir

Tháo nén cloop cũng có thể dùng như (vì  họ chỉ dùng zlib  !)
     qemu-img  convert  -f cloop KNOPPIX  -O raw  knoppix_raw

   
tháo nén squashfs   :  unsquashfs   KNOPPIX   
  sẽ tuột ra  thư mục mặc định  "squashfs-root"
nén                mksquashfs  path_datadir  KNOPPIX
dĩ nhiên phải phù hợp phiên bản ( nhất là  squashfs-lzma )

  mì ăn liền cho tiện ích  néntháo     extractTool.tar.bz2

chú ý:
remastering livecd nói chung dễ ,nếu chỉ cho thêm các apps  thông thường (cũng như cross-compile hello.c )

remastering  để nhét vào một apps rắc rối như scratchbox ... thì đó lại là chuyện không nhỏ ,rắc rối không phải vì chỉ ở livecd ,mà ở
scratchbox đã đầy  phức tạp ,lại còn tương tác rất nhiều với hostpc của phần livecd .( cũng như cross-compile strace_src cho cpu loại armeb  !)

Last edited by wangji (30/10/2009 18:54)
Topic options

RSS

Trang: ⇐ 1 … 4 5 6

You must đăng nhập or đăng kí to post a reply

VnOSS forum » Thảo luận chung » Học với ubuntu

----------------------------------



111 Reply by wangji 25/04/2009 02:24

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                                                   Bát chánh đạo :  phụ lục

                   

Kiếm bọ lõi  :  kernel debugging

  1 giới thiệu  kgdb  local debugging
  2                   gpxe  (etherboot)  với remote debugging

  3 grub2 và grub2-gdb
  4  coreboot  và payloads


                                                            1  kgdb.

Kiếm bọ các trình thông thường ,đại đa số dùng gdb và gdbserver ,cho phép kiếm bọ từ pchost-i386 vào guest_arch khác giống !

  Kiếm bọ lõi khác ,vì cách họat động lõi khác hẳn với trình thường : lõi cần có gdb-stub để cho phép gdb chen chân

đó là kgdb  , các patch cho lõi có từ năm 2000  ; nhưng thày tu Linus cứ ngăn chặn ..cho mãi 8 năm sau,tới lõi -2.6.26  mới được chính thức nhập vào nguồn_lõi (không cần và víu nữa ). (coi kerneltrap.org  #kgdb).

Muốn biên dịch lõi với kgdb ,trên mạng họ khuyên vào kernel_hacking trong menuconfig  bật các khỏan đụng tới kgdb như

CONFIG_KGDB=y
CONFIG_KGDB_CONSOLE=y
# CONFIG_KGDB_ONLY_MODULES is not set
CONFIG_KGDB_8250_NOMODULE=y
# CONFIG_KGDBOE_NOMODULE is not set
# CONFIG_KGDB_MPSC is not set
# CONFIG_KGDB_CPM_UART is not set
# CONFIG_KGDB_SIBYTE is not set
# CONFIG_KGDB_TXX9 is not set
# CONFIG_KGDB_SH_SCI is not set
# CONFIG_KGDB_AMBA_PL011 is not set
# CONFIG_KGDB_PXA_SERIAL is not set
# CONFIG_KGDBOE is not set
CONFIG_KGDB_8250=y
CONFIG_KGDB_SIMPLE_SERIAL=y
CONFIG_KGDB_BAUDRATE=115200
CONFIG_KGDB_PORT_NUM=1
CONFIG_KGDB_ATTACH_WAIT=y

Tuy nhiên chưa đủ  :
phải chèn vào top_srcdir_Makefile  -g -ggdb dòng có HOSTCFLAGS như

HOSTCFLAGS   = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -g -ggdb

Hơn nữa phải tắt -uncheck -trong kernel hacking
dòng  Write protect kernel read-only data structures
hay trong .config dòng :
# CONFIG_DEBUG_RODATA is not set

Tỉ dụ fedora10 có lõi 2.6.27.5  và có bật kgdb nhưng vì lý do đơn giản là kernel phát cho quần chúng phải có đảm bảo trong công việc hàng ngày ,thành họ "bật" lên

config_debug_rodata=yes  !
Do vậy lúc gdb kết nối với lõi sẽ bị treo ! vì không viết được vào không gian lõi !

Sau khi make hòan thành ,có 2 tệp để dùng :
 
src/arch/x86/boot/bzImage  là lõi ta sẽ debug chạy trên máy pctest (kgdb trong đó chạy tựa như gdb-stub để nối với gdb)

src/vmlinux  là lõi có đầy đủ symbol_lõi để gdb có cái nhìn dễ thương khi kiếm bọ !

Khi chạy bzImage trên pctest ,có 2 cách nối với pcgdb_kiếmbọ serial  và ethernet ; Sẽ có dịp trở lại chuyện này

Hiện tại đơn giản hơn là khởi động bzImage_test với qemu (pctest đây là pc_ảo ) rồi kiếm bọ với gdb

term A>  qemu -s -S -kernel bzImage  -initrd mimi.gz  -hda /dev/null

term B> ddd --debugger  gdb  vmlinux  -x ker.gdb 

rồi cứ gõ c hay continue hay clic vào cont nhiều lần để bên pctest chạy từng khúc  .....snapshot

Để ai không có điều kiện compile mà vẫn muốn thử
gói kgdb-debug.tar.bz2 20Mb có các tệp sau

ls -ls ../kgdb-debug
total 38769
1489 -rw-r--r-- 1 wangji wangji  1522704 2009-04-23 15:40 bzImage
    4 -rw-r--r-- 1 wangji wangji       73 2009-04-24 20:31 ker.gdb
2078 -rw-r--r-- 1 wangji wangji  2124324 2009-04-24 17:35 mimi.gz
35198 -rwxr-xr-x 1 wangji wangji 36006961 2009-04-23 15:40 vmlinux


Tài liệu tham khảo :

----------kernel debugging ----
notes de cours kernel hacking P Bovet et al :     http://bravo.ce.uniroma2.it/kernelhacki … ging_3.txt *****

ottawa 2006 http://www.lemis.com/grog/Papers/Debug- … torial.pdf

-------------------------------Gnu Debugger Gdb
Using GNU's GDB Debugger
Peter Jay Salzman                        http://www.dirac.org/linux/gdb/index.php             tutorial*****

Gdb online             http://sourceware.org/gdb/current/onlin … db_18.html

Red Hat Enterprise Linux 4
Debugging with gdb        http://www.linuxtopia.org/online_books/ … index.html

ebook The Art of Debugging with GDB, DDD, and Eclipse        http://www.amazon.fr/Art-Debugging-GDB- … 1593271743

ibm series Macros for gdb :        http://www.ibm.com/developerworks/aix/l … u-gdb.html

kernel debugging problem ottawa 2006 http://www.lemis.com/grog/Papers/Debug- … torial.pdf  ******(macros gdb too)

----------------------------kgdb -------
muốn có tài liệu chính thức trong top_srcdir/gõ make htmldocs .

http://www.linuxjournal.com/article/4525 back to 2001_kgdb  !

                http://en.wikipedia.org/wiki/KGDB
DebuggingTheLinuxKernelUsingGdb :        http://elinux.org/DebuggingTheLinuxKernelUsingGdb          tutorial_embeddedLinuxGDB*****
ebook embedded linux primer
Christopher Hallinan 2007   
14.2. Using KGDB for Kernel Debugging           
http://book.opensourceproject.org.cn/em … 1sec2.html

Chapter 3. Enable kgdb for debugging
kgdb_dochtml                        http://www.kernel.org/pub/linux/kernel/ … /ch03.html

http://kerneltrap.org/node/4711

embedded linux:---------------------

Debugging on s390                http://kgdb.linsyssoft.com/s390.htm
Kgdb stub for Linux/s390 running under VM (ver 0.2.0)

Using KGDB for kernel debugging STlinux         http://www.stlinux.com/docs/manual/deve … ment18.php

Debugging the Kernel with KGDB            http://blog.csdn.net/xianfengdesign/arc … 64222.aspx
One of the features of Blackfin uClinux is the inclusion of KGDB over ethernet.

Last edited by wangji (02/05/2009 18:23)

112 Reply by wangji 25/04/2009 05:03

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

                               Kiếm bọ lõi  :  kernel debugging
                               

2 gpxe

  Đụng tới boot có rất nhiều dự án  bios ,syslinux ,pxe , linuxbios/coreboot, openbios/openfirmware , etherboot/gpxe grub/grub2
coi ottawa OLS2008 :x86 Network Booting: Integrating gPXE and PXELINUX HPeterAnvin et al.
http://edgyu.excess.org/ols/2008/

Tại sao gpxe ?  Duyên cớ như sau ; Hàng năm Google Summer of Code  có tổ chức "quán phát triển" 3 tháng xuân-hạ ,có khỏang 1000 người được tiếp thu trên khỏang 7000 nộp đơn xin gia nhập .
Năm 2008 một dự án tạo kiếm bọ cho bootcode gpxe hòan thành sau 11 tuần làm việc của Stefan Hajnoczi ,và đã được hội nhập ngay vào nguồn của gpxe .

Cái hay là "gdb-stub over udp"  không những cho phép kiếm bọ trên gpxe , mà vì gpxe cho phép nạp từ xa -remote booting - cái đó sẽ cho ta có thể kiếm bọ cho lõi mà ta nạp từ đâu đâu trên mạng !

Cái khó là như tất cả các chuyện đang ở trạng thái phát triển  : tài liệu rất ... hiếm ! Hầu như không có ; Hay cái có chỉ cho hòan cảnh chung chung ; cái gì đặc biệt - các developer dùng - thì không ai nói
    " nó thuộc loài giống : người biết không nói, người nói không biết " 

Tỉ dụ tải về http://www.kernel.org/pub/software/util … .7.tar.bz2  (02mar2009)
Trong ubuntu gõ make là ... xong dù rằng ... không hòan tòan ổn định ,mà cũng chẳng được báo cần sửa lỗi
Tỉ dụ không có  trong bin/  gpxe.iso  gpxe.lkrn ....vv

Đôi điều ...nên biết :
1 xóa "option -q" trong lịnh mkisofs , dòng #55 của gpxe_src/util/geniso
2 muốn có gdbstub enabled ,phải thay #undef bằng #define  cho các dòng có GDBxxxx của tệp
   gpxe_src/config/general.h  ...trước khi gõ make !
3 muốn có gpxe.lkrn  gõ
         cd gpxe_src/
         make
         make bin/gpxe.lkrn
  để có thể boot với grub :  kernel (hd0,0)/boot/gpxe.lkrn  trong menu.lst
4  muốn có đĩa đặc biệt với cạc mạng :
     cd gpxe_src
     make bin/rtl8139.dsk
     make bin/gpxe.dsk
muốn biết trong gói gpxe.dsk có gì : gõ make bin/gpxe.dsk.info
     make DEBUG=http,exec,image bin/undionly.kpxe  cho phép kiếm bọ với gdb các module http exec  ...

5 muốn gpxe nguồn mới nhất
git clone git://git.etherboot.org/scm/gpxe.git
cd gpxe && make doc  rồi chịu khó đọc tệp gpxe/src/bin/doc/html/build_sys.html  (cái tương tự cho src_kernel là Documentation/Kbuild !!)

6 chú ý  các tệp đuôi gpxe (tỉ dụ gtest.gpxe ) chạy như "script file ,với macro cho gpxe  ,y như các tệp test.gdb chạy với macros trên gdb )

  Các điểm vừa kê ra ...không có trong readme hay chỗ nào trong nguồn lấy từ mạng !

  Thí nghiệm 1  boot từ xa
qemu  -cdrom gpxe.iso -bootp http://etherboot.com/gtest/gtest.gpxe
/* this load the gpxe.krn then netboot gtest.gpxe which ask bzImage/initrd.img */
Sau khi nạp vào linux của tomsrtbt đăng nhập user:root  pass:xxxx

  Thí nghiệm 2  boot từ xa ,bật lên với gdb
termA>qemu  -s -S -cdrom gpxe.iso -bootp http://etherboot.com/gtest/gtest.gpxe
termB> ddd  --debugger  gdb

  Thí nghiệm 3  boot với kernel-2.6.27.5-test ,bật lên với gdb ; thay đường từ xa với mạng thổ địa localhost !

chạy trên mạng thổ địa tftp
$ cat gtest.gpxe
#!gpxe
kernel tftp://10.0.2.2//bzImage root=100
initrd tftp://10.0.2.2//mimi.gz
boot
Trong thư mục ~/tftpboot/  có ( bzImage  vmlinux mimi.gz gpxe.iso gtest.gpxe  ker.gdb )
bzImage/vmlinux là kernel-test đã biên dịch như trình bày tại phụ lục kgdb


cat  ker.gdb
   #Macros gdb to start connection
target remote :1234
break sys_open
c
end

Trên ubuntu   khởi in.tftpd  ,
termA>qemu -s -S -cdrom gpxe.iso -tftp ~/tftpboot -bootp /gtest.gpxe

termB>  ddd  --debugger  gdb vmlinux  -x  ker.gdb 

Tài liệu tham khảo :
OttawaLinuxSymposium2008aug
The Etherboot Project has been accepted for Google's 2008 Summer of Code project
http://www.etherboot.org/wiki/soc/2008/ideas
GDB remote debugging : http://www.etherboot.org/wiki/dev/gdbstub
Stefan Hajnoczi: GDB Remote Debugging Journal
http://www.etherboot.org/wiki/soc/2008/ … rnal/week1

Last edited by wangji (02/05/2009 18:20)

113 Reply by wangji 14/05/2009 14:11

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Kiếm bọ lõi  :  kernel debugging

                          3 grub2    giới thiệu


G.R.U.B "lắp từ" grand unified boot loader   nhại lắp từ G.U.T Grand Unified Theory  ao ước của vật lý lý thuyết thập niên 90 tuy chỉ vói tham vọng nhồi
nhét strong/electromagnetic/weak  interactions làm một -chưa dám đụng tới graviton hồi đó !

grub2 không phải là upgrade của grub1  ,hòan tòan bắt đầu từ ...hư không với nhiều tham vọng mục tiêu hơn :
        chạy với nhiều cpu_arch ,nhiều filesystems,
Năm ngoái grub cũng có 2 chàng trẻ dự Google Summer of Code 2008 Colin Bennett  và  Marco Gerards  lo fancy GUI  và usb_support .
Marco không xa lạ .Lúc còn thiếu niên 2005 đã từng tham dự nhiều vào diễn đàn grub2 ! 

Vì còn đang phát triển ... tài liệu khan hiếm . Nhiều nhất là grub2_wiki ;
            với x86 có :  http://grub.enbug.org/TestingOnX86
            manual 1 trang :http://grub.enbug.org/Manual

   nguồn :  ftp://alpha.gnu.org/gnu/grub/grub-1.96.tar.gz

        svn co -r {revision} svn://svn.savannah.gnu.org/grub/trunk/grub2

  revision có thể là ####  number  hoặc date : yyyy-mm-dd 

  Sau khi biên dịch thành công sẽ được một số tiện ích  và một sô tệp dạng đuôi " *.mod  *.img  và  *.exec " 

Ý chung chung các module *.mod mô tả tại http://grub.enbug.org/FranklinPiat/grub_modules.manpage

chú ý :
1 Nếu không muốn cài grub vào máy đang dùng để tránh rủi ro ,
grub_src>make DESTDIR=grub_local  cho phép install grub vào thư mục "grub_src/grub_local" ;vào đó quan sát ,thử nghiệm... 
2 grub1/grub-legacy có grub_console ,bật lên với [usr]/sbin/grub ; muốn có grub2_console phải cấu hình với " --grub-enable-emu"
grub2_src>./configure  --enable-grub-emu

boot.img  cdboot.img  diskboot.img  kernel.img  lnxboot.img  pxeboot.img
boot.exec  cdboot.exec  diskboot.exec  kernel.exec  lnxboot.exec  pxeboot.exec

tiện ích :
grub-dumpbios  grub-install   grub-mkconfig_lib  grub-mkelfimage  grub-mkimage   grub-pe2elf  grub-setup
grub-editenv   grub-mkconfig  grub-mkdevicemap   grub-mkfont      grub-mkrescue  grub-probe

tỉ dụ :
 
  1 floppy image :

  legacy grub-1 :
cat /boot/grub/stage1 /boot/grub/stage2 > /dev/fd0    tạo đĩa mềm "thật"
cat stage1 stage2 > grubfloppy.dsk          tạo đĩa mềm ảo
  grub2 rescuedisk
grub-mkrescue  --image-type=floppy  grubfloppy.dsk
chú ý
1 đĩa tạo như trên không có hệ tệp -not formatted ! - thuộc dạng đĩa thô -raw disk - như đống gạch chưa sắp xếp thành nhà ! không thể mount để đọc
2 qemu  grubfloppy  vẫn boot vào grub_console như thường !

  2 thử nghiệm grub2
     2a tạo lõi grub có thể boot trong grub (legacy và grub2)

grub-mkimage -p /boot/grub2 -o core.img biosdisk fat
grub> root (hd0,0)
grub> kernel /boot/grub/core.img
grub> boot

     2b grub2pxe :

./grub-mkimage --output=core.img --prefix=(pxe)/boot/grub pxe pxecmd  /* this stores " pxe.mod ,pxecmd.mod "  into core.img */
cat pxeboot.img core.img > grub2pxe        /* the preboot.img is kind of grub_console ??  */
# testing:
  qemu -boot n -tftp ~/tftpboot -bootp /grub2pxe

     2c grub2 as coreboot payload : (sẽ trở lại đây )

$ svn co svn://svn.savannah.gnu.org/grub/trunk/grub2
$ cd grub2
$ ./autogen.sh
$ ./configure --with-platform=coreboot
$ make
$ MODULES="normal ls cat help ext2 iso9660 reiserfs xfs fat pc gpt ata serial memdisk multiboot linux minicmd configfile search tar"
$ ./grub-mkelfimage -d . $MODULES -o ..../coreboot-v3/payload.elf --prefix='(ata0)/boot/grub'

114 Reply by wangji 16/05/2009 20:59

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Kiếm bọ lõi  :  kernel debugging

                          3 grub2    3b  Nội tạng grub  - grub internals
Nguồn bài này xuất phát ,không phải chỉ từ grub-forum hay grub-wiki ,mà nợ nần nhiều vào các makefiles
( tạo từ src-script-ruby ; coi thư mục grubsrc/conf ).Sau khi biên dịch grub2-svn  sẽ có đầy tệp đuôi .mod  .img  vv


image là dạng đặc biệt như bin ,có thể nạp từ loader (như bên linux ld-linux.so nạp các tệp dạng elf (bin) )

          #6 images = 5 loaders + kernel  : boot.img  cdboot.img  diskboot.img  kernel.img  lnxboot.img  pxeboot.img

1 Tạo pxeboot
grub-mkimage -d . -o core.img pxe
cat pxeboot.img core.img > g2pxe
2 Tạo iso image
mkdir cdroot
cat cdboot.img core.img > cdroot/grub2cd.bin
mkisofs -R -no-emul-boot -boot-info-table --boot-load-size 4 -b grub2cd.bin -o aa.iso cdroot
  3 Thử trực tiếp linux-grub-loader lnxboot.img
qemu -kernel lnxboot.img -initrd core.img
  4 Tạo lõi kép combined kernel:
cat lnxboot.img core.img > grub2.img
You can then load grub2.img as kernel in grub_console
linux grub2.img


110 modules in total :

          #27 commands (modules .mod )  Các module này có thể dùng trực tiếp trong grub_console  (như command_DOS monitor  ! )

    minicmd extcmd hello handler ls cmp cat help search  loopback fs_uuid configfile echo       \
        terminfo test blocklist hexdump  read sleep loadenv crc parttool  pcpart memrw boot normal sh

          #11 modules filesystems related  Dạng drivers  nạp với insmod  xxx.mod  y hệt với ...linux  !

fshelp fs_uuid affs.mod  afs.mod  hfs.mod hfsplus.mod jfs.mod ntfscomp.mod ntfs.mod reiserfs.mod sfs.mod ufs.mod xfs.mod

          # 8 Common Video Subsystem specific modules.
Video_MODULES += video  videotest  bitmap  tga jpeg   png  font  gfxterm

# Misc.
pkglib_MODULES += gzio   bufio  elf

i386.mk  specific : ----------------------------------------------
pkglib_MODULES += cpuid   at_keyboard   vga_text

#----------i386-pc --------------------------------------
          #33 pkglib_MODULES (drivers )=
biosdisk    chain    multiboot    reboot    halt   vbe    vbetest    vbeinfo    play    serial  ata    vga    memdisk    pci    lspci   aout    bsd    pxe   
pxecmd    datetime    date  datehook    lsmmap    ata_pthru    hdparm    usb    uhci    ohci    usbtest    usbms    usb_keyboard   efiemu    mmap    acpi 

         #19 Filing systems.
pkglib_MODULES +=
fshelp  fat  ufs  ext2  ntfs  ntfscomp  minix  hfs  jfs  iso9660  xfs  affs  sfs  hfsplus  reiserfs  cpio  tar   udf  afs

         #6  Partition maps. (modules to recognise "platform_partition" )
pkglib_MODULES += amiga  apple  pc  sun  acorn  gpt

         # 7 Special disk structures and generic drivers  (raid  lvm  )
pkglib_MODULES += raid  raid5rec  raid6rec  mdraid  dm_nv   lvm  scsi

115 Reply by wangji 22/05/2009 20:51

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Kiếm bọ lõi  :  kernel debugging

                         
                         3 grub2  : bài tập 1

Đẻ tránh rủi ro cài grub2 vào máy chủ ,cách hay nhất là tạo đĩa ảo -loopback diskimg- cài grub vào đó rồi chơi với qemu.
Đơn giản nhất là tải http://wjhowto.googlepages.com/grub_playground.tar.bz2
trong đó có script ;readme ....vv
  Với quyền root get_svn20080724  sẽ dùng svn để tải nguồn grub_src  ,biên dịch và tạo đĩa ảo  grub_src/dsk
Khởi đĩa ảo với :  qemu dsk
sẽ có menu màu mè  ! để chọn
    1  linux
    2  test
Ôn lại giới thiệu grub ,grub-internals rồi đọc script ...và suy nghĩ . "test" dẫn vào console_grub2

Last edited by wangji (23/05/2009 17:02)

116 Reply by wangji 22/05/2009 23:54

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

  Kiếm bọ lõi  :  kernel debugging

                         
                         3 grub2  : bài tập 1:grub_console

grub>ls
(hd0) (hd0,1)
Lịnh ls trong grubconsole  hiện ra "đĩa & phân vùng "  : ở đây (hd0) là đĩa dsk (hd0,1) là  phân vùng 1 của dsk
grub>ls (hd0,1)/boot/grub   chạy y hệt như 
grub>ls /boot/grub/   đọc các tệp có trong thư mục gọi.
Đặc điểm của grub 2 là nếu lúc khởi máy có nhiều "đĩa và phân vùng"  ls sẽ hiện ra hết ,và cho phép đọc- với lịnh cat chảng hạn -  tuy không "mount móc" chi các đĩa đó !
Lý do là grub có rất nhiều fs_module được nạp khi cần tới ,như hệt với lõi linux !

grub>lspci  đọc phần cứng ,các bridges, controllers (ide,vga,ethernet...)

grub>cat /boot/grub/[command  partmap  fs ].lst  hiện ra
command.lst các lịnh dạng cmdline của grub
partmap.lst   các loại cạc mẹ dòng giống cpu !
fs.lst  các hệ tệp grub biết đọc (có "mođun")

grub>set ...   lộ ra môi trường env của grub : màu mè color , prefix= , root =    vv
Trong grub 20080724 ta tải về chỉ có shell cổ điển mini bash hay sh . Các grub về sau này - từ tháng 04-2009 có thêm "lua"  ,dạng shell script nổi tiếng của các chú Brasilían!

  Khi đĩa dsk được nạp grub với lịnh grub-setup  :
boot.img  dùng làm hỏa tiễn 1=MBR hay MasterBootRecord  cho dsk
core.img  gồm các modules [chain blocklist ls pc biosdisk ext2 fshelp  cat help terminal boot ] làm hỏa tiễn 2
Trong đó các module
pc  để nhận dạng i386-pc   
biosdisk  nhận dạng đĩa  ata,floppy vv
blocklist  để đọc đĩa thô rawdisk
Các modules trong core.img được nạp vào bộ nhớ mem  khi khởi động dsk ; các modules khác có trong /boot/grub cần phải nạp với "insmod module"  nếu muốn dùng ;
Đó là lý do thay đổi modif trong grub.cfg để có thể bật  debian_linux của menu !

Last edited by wangji (22/05/2009 23:56)

117 Reply by wangji 24/05/2009 11:59

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

chú ý

Xin lỗi với những ai đã thử gói grub_playground.tar.bz2  tải về trước ngày 23/05/2009-16h41
Gói đó chỉ chạy với máy chủ có grub-1.96 dummy installed (tháo nén gói deb nhưng chưa thực thi lịnh
grub-install  )
  Gói sau này chạy đúng hơn với mục tiêu của gói tarball : hoàn toàn dùng module tại thổ địa : local_grub_svn_grub_playground !

118 Reply by wangji 27/05/2009 23:48

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Nội tạng grub : đĩa châm cứu

Từ khá lâu ,grub-install vẫn vướng víu nếu muốn cài vào đĩa ảo dạng loopback ; Nếu muốn nghịch grub mới nhất với qemu -để tránh rủi ro cho máy chủ hộ, chỉ còn cách dùng đĩa châm cứu - rescue disk -

Tải về
   svn co  svn://svn.savannah.gnu.org/grub/trunk/grub2   grub xịn nhất .

Biên dịch như mọi khi 
" cd grub2 && ./autogen.sh &&  ./configure  && make  "       (Đừng gõ make install  !)

#mkdir  ovl 
#./grub-mkrescue --pkglibdir=. --overlay=ovl --grub-mkimage=./grub-mkimage \
--image-type=cdrom cdrescue.iso

tạo đĩa châm cứu cd ; Các tệp tự bạn chép vào thư mục ovl sẽ có mặt trong đĩa cd khi khởi động .
                                      qemu -cdrom cdrescue.iso 
là có grub-console    .
  Gõ ls -l  trong grub-console  sẽ hiển thị các đĩa grub_device có mặt khi khởi động

Nếu cắm usb stick để nghịch ,- tỉ dụ ở /dev/sdf -  thì
       qemu -hda /dev/sdf  -cdrom cdrescue.iso  -boot d

rồi ls -l mà lọ mọ tiếp  !  Chi tiết tổ chức các châm cứu _image coi
http://wjhowto.googlepages.com/grub-int … escue-disk

          Trong grub console có nhiêu dạng shell
  1  sh:grub>  bật lên với  lịnh reader.normal
  2  rescue:grub>  bật lên với reader.rescue
  3  lua:grub>  bật với parser.lua
  coi chi tiết
http://wjhowto.googlepages.com/grub-internals%3Aconsole

119 Reply by wangji 28/05/2009 13:19

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Nội tạng grub : Sự khác biệt giữa floppy và cdrom rescue-disk .

Tuy đĩa floppy-rescue cũng được tạo giống hệt cdrom-rescue

                             #./grub-mkrescue --pkglibdir=. --overlay=ovl --grub-mkimage=./grub-mkimage --image-type=floppy   floppy-resdue.dsk

,nhưng thực tế có rất nhiều khác biệt

  1 Đĩa floppy được tạo nhưng không có hệ tệp ,nghĩa là có thể boot từ bios_PC ,nhưng không thể đọc nó bằng mount_móc như thường lệ .
     Đĩa cdrom được tạo với dạng tệp iso9660 ,có thể đọc trên bất kỳ máy nào dù không phải pc .

  2 Đĩa floppy được tạo với "đĩa ảo memdisk " ở dạng tệp tar_fs  ,trong đó chứa tất cả các modules của grub .
     "memdisk"  là một "gói ghém" kiểu nhồi nhét dạng tar - hay dạng cpio -  giống như initramfs  đưa vào linux hồi 2004-5 .

  3 Thư mục overlay (ovl ) bên đĩa cdrom được đem "nguyên si" vào gốc cdrom .Kích thước thư mục ovl không bị hạn chế  !!
     Trên đĩa floppy , vì không có hệ tệp ,thư mục overlay được "nhúng ghép - embedded-"  vào đĩa ảo memdisk ,nhưng cũng không được "nguyên si" như bên cdrom.  ; mà chỉ thư mục boot nằm sau overlay mới được ghép nguyên si . Tỉ dụ

   ovl/  có  các tệp   " foo  tán_phiệu  dóc "
   ovl/boot/  có        "yên_chí  blabla/ "
  đĩa floppy sẽ không có các tệp "foo  tán_phiệu dóc"  ,mà chỉ có "yên_chí " và mọi thứ có trong ovl/boot/blabla/ .

   Hơn nữa ,vì ovl/ nhúng ghép vào memdisk  và kích thước  memdisk bị hạn chế -0x97e00 hay khỏang 600KiB ,ovl cũng bị hạn chế  !

** Nhắc lại là ngày xưa initrd kiểu  miniroot.gz với dạng tệp ext2 hay minix  cũng bị hạn chế ; Sau này dùng initramfs không còn chuyện đó nữa !

120 Reply by wangji 28/05/2009 20:44

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Nội tạng grub : core.img .(hay  How grub2 works )

Nếu google tìm hiểu grub2 so sánh với grub1 còn gọi grub-legacy  ,rất nhiều nơi cứ khư khư nói
boot.img   tương đương stage1     core.img  tương đương với stage2  .
điều đó không đúng tí nào với thực tế ! trừ phi chữ tương đương như "hao hao" giống nhau  !  Đơn thuần nhất là ... nhìn cụ thể .
(  Chỉ  có một stage2 ,dù cá tính ở  " địa điểm menu.lst " được hardcoded .,trái lại core.img có rất nhiều dạng ! )

Khi pc khởi động romBios nạp MBR hay boot.img (nếu đã cài grub vào mbr ) Từ boot.img  máy pc sẽ nạp sector_đầu-diskboot.img của core.img .
Vì core.img bó buộc nằm trên một hệ tệp - kích thước quá lớn để nạp dưới 1MB ram- và từ diskboot.img pc nạp tiếp tòan bộ  core.img ,trong đó có
kernel.img .
Sau tháo nén kernel, grub lúc đó  optionally tháo nén phần memdisk rồi nhờ kernel nạp một số modules có mặt lúc tạo gói core.img
Tiếp theo grub nạp các module normal  -
normal.mod  tìm nạp  grub.cfg rồi thực thi (tối thiểu trong grub.cfg là nạp các  "partmap driver" : "acorn amiga apple gpt pc sun"
minicmd rồi dừng chân tại grub_console !   Đó là ở dạng đĩa cứng hdd .


  Coi thư mục grub_src/boot/i386/pc  Các nguồn loaders là 
             boot.S  cdboot.S  diskboot.S  lnxboot.S  pxeboot.S

floppy-rescue_img = boot.img + core.img
                  core.img= diskboot.img + kernel.img + embedded_memdisk_img + modules( memdisk.mod  tar.mod )

cdrom-rescue_img =cdboot.img + core.img + isofs_dir (/boot/grub/grub_modules)
                  core.img = diskboot.img + kernel.img + module ( biosdisk.mod  iso9660.mod )
** contents_isofs_dir == memdisk_img_tarball  .

pxe-boot_img = pxeboot.img + core.img
                  core.img = diskboot.img+ kernel.img + module (pxe.mod)

linux-core_img = lnxboot.img + core.img
                  core.img = diskboot + kernel +[embedded memdisk_img ] + [modules () ]

Last edited by wangji (28/05/2009 20:55)

121 Reply by wangji 01/06/2009 02:41

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Nội tạng grub : the rescue mode

Khi boot linux gặp trường hợp lõi không tìm thấy hệ tệp gốc -rootfs - thì sẽ rơi vào initramfs . Khởi grub cũng vậy , lõi grub_kernel  tìm grub.cfg để thực thi ; nếu không thấy tìm nạp vào grub_sh normal-mode; nếu không thấy  . thì cũng "tuột "  vào grub rescue-mode .Để tạo hòan cảnh rescue-mode ,ta sẽ bắt đầu từ đĩa châm cứu rescuecd , nhưng ta nhúng ghép -embed- một đĩa memdisk vào core.img của rescuecd ,và trong đĩa memdisk ta cố tình cài modules làm sao grub-lõi không ...đọc được !

   1 tải về grub_svn ; compile
   2 tạo đĩa memdisk trong đó có /boot/(minicmd.mod normal.mod extcmd.mod boot.mod ls.mod command.lst)
   3 tạo core.img_rescuecd với embedded_memdisk
   4 tạo rescuecd

  Chạy script sau :

rescuecd_withmemdisk.sh

#!/bin/sh
[ -e buildcd ] && rm -fr buildcd
mkdir buildcd buildcd/boot buildcd/boot/grub
cp *.mod command.lst moddep.lst fs.lst handler.lst parttool.lst buildcd/boot/grub
#voluntarily create memdisk_img to fall on rescue-mode. Had we copied modules to memdk/boot/grub everything would work both drives memdisk&cd
[ -e memdk ] && rm -fr memdk
mkdir memdk memdk/boot memdk/boot/grub
cp minicmd.mod normal.mod extcmd.mod boot.mod ls.mod command.lst memdk/boot
tar -C memdk -cf memdsk boot
./grub-mkimage -d . -m memdsk -o core.img biosdisk iso9660 memdisk tar
#embed memdsk into core.img then append cdboot to get "kindof" stage2_eltorito !
cat cdboot.img core.img > buildcd/boot/grub/stage2_eltorito
genisoimage -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o RescueModeStudy -r -J buildcd
#end script

qemu -cdrom RescueModeStudy

Khi khởi iso RescueModeStudy ,lõi grub sẽ đọc memdisk ,-nạp như phần initrd bên linux , "overiding  đĩa cd" coi như đĩa thứ hai.

Thử một số lịnh sau đây

grub rescue>ls
(memdisk) (hd96)
Hai đĩa grub nhận được là đĩa memdisk và đĩa cd_iso.

grub rescue> ls -l /* Chẳng hiển thị ra chi */

Gõ set sẽ cho thấy ta đang ngồi trên (memdisk). Hãy chuyển sang đĩa cd_iso bằng :

grub rescue> set prefix=(hd96)/boot/grub
grub rescue> set root=(hd96)

Bây giờ ta nạp mođun ls.mod.

grub rescue>insmod ls
grub rescue>ls -l /* hiển thị thiết bị drive và các hệ tệp của chúng */
Device memdisk : filesystem type tarfs
Device hd96 : filesystem type iso9660 label cdrom uuid 2009-05-31-15-04-15-00

Gõ phím "Tab"
grub rescue>Tab /* hiển thị các lịnh có từ normal.mod ,vì ls.mod lệ thuộc vào normal.mod - Coi moddep.lst */
boot export insmod ls normal set unset

Nạp thêm minicmd.mod
grub rescue>insmod minicmd
grub rescue>Tab /*Hiển thị các lịnh cmds có từ normal.mod và minicmd.mod */
boot cat dump exit export help insmod ls lsmod normal rmmod root set unset

Coi thêm http://wjhowto.googlepages.com/grub-int … rescuemode

Chú ý :
1 Các lệ thuộc giữa các  modules được xếp vào moddep.lst  .
  Tỉ dụ :
# cat command.lst | grep "minicmd"
cat dump exit help lsmod rmmod root
hay
# grep boot moddep.lst
bsd: elf aout boot gzio mmap
linux: normal boot video mmap
mmap: boot
xnu: video bitmap boot efiemu gzio
drivemap: extcmd boot mmap
multiboot: elf boot gzio mmap
boot:
reboot:
normal: boot
linux16: boot mmap
chain: boot

2 grub đòi hỏi các modules nằm tại (drive)/boot/grub/  - ít nhất cho đa số modules -  nếu tạo memdisk mà chép vào chỗ khác ... thì toi.

Last edited by wangji (01/06/2009 13:59)

122 Reply by wangji Hôm nay 20:48

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Kiếm bọ lõi   grub2-gdb:  L Kundrak's patches

gdb còn gọi là "gnu debugger" ,tức trình "moi bọ" dùng để moi móc con bọ trong một trình Y đang "sửa-viết" !
Trình Y không bó buộc chạy trên cùng hệ điều hành của trình moi bọ ,mà ngay cả không bó buộc thuộc cùng "nhánh mẹ" arch_cpu hay platform . Để có thể trao đổi dữ liệu giữa moi bọ và trình Y  ,tất nhiên phải có 'đường hầm ' kết nối  . Cửa hầm cho Y có 2 dạng
  gdbserver  và stub  .
  Dịch vụ gdbserver thường được "gắn" với trình Y dưói 2 dạng
      a)       gdbserver COMM --attach PID      PID là "số danh bạ" processID  của Y , COMM có thể là dây serial hay TCP localhost:socket
      b)       gdbserver  COMM Y
Dĩ nhiên nếu Y khác mẹ với gdb thì phải cross compile gdbserver !

  stub là một trình nhỏ  được "vá " vào trình Y trước khi biên dịch ;

Năm 2006 Lubomir Kundrak - vừa ra trường ,còn non 20 tuổi - gửi tới grub-devel mailing list các gói vá cho grub2 trên BSD cho phép
móc bọ với gdb . Trong gói vá ,có stub ,serial  và quan trọng nhất là khả năng moi bọ module trong grub. Từ đó tới nay -5/2009 -có thêm lẻ tẻ 4-5 lá thư về vụ này ; tất cả đều dựa vào tài liệu của Kundrak có tại 2 điểm (tìm trên grub-devel  với " grub2-gdb"  sẽ có đủ )
  1 http://v3.sk/~lkundrak/grub2-gdb/        2006- updated 2008
  2 http://fedorapeople.org/~lkundrak/grub2/     jul2008

Điểm khó khăn cho vụ vá grub-gdb - vá chỉ chạy cho grub-svn trong một thời gian ngắn - , dự án grub biến đổi rất nhanh vì tham vọng chạy trên nhiều loại máy khác nhau ! nhất là từ cuối xuân 2008 ,một số developer thúc đẩy mạnh - kể cả ...đặt vấn đề về họat động của chủ nhân đầu của grub2  !!
(coi "dây" dài rằng rặc http://lists.gnu.org/archive/html/grub- … 00461.html )

Cái may là nếu chạy grub dưới máy ảo qemu ,kiếm bọ đơn giản ở chỗ qemu  có cài sẵn stub cho gdb ! Thành thử chỉ cần vá cho grub phần liên quan tới "preserved symbol" cho các modules ,mà không đụng tới gdb-stub và phần serial nữa .
Một số không ít vá cho grub2-svn có tại đây
grub2-r1742->2050    grub2-r2236->2250    grub2-r2260->2281    grub2-r2300->2340-elfgdb.patch     (17jun2009)

123 Reply by wangji Hôm nay 20:50

  • wangji
  • Thành viên
  • Offline
  • Đăng kí: 20/10/2004
  • Bài: 537

Re: Học với ubuntu

Kiếm bọ lõi   grub2-gdb: bài tập .

  Chuẩn bị
$svn co  -r 2340 svn://svn.savannah.gnu.org/grub/trunk/grub2
$cd grub2
$patch -p1 < ../grub2-r2340-elfgdb.patch
$./autogen.sh
$CFLAGS="-O0 -g3" ./configure  [--enable-mm-debug --enable-grub-fstest]
$make
$./grub-mkrescue --grub-mkimage=./grub-mkimage --pkglibdir=. --image-type=cdrom   cdrescue.iso

Trong  1st terminal :
$qemu -s -cdrom cdrescue.iso  /*  -s mở cửa hầm ,chờ gdb kết nối  - send "c" - */
Trong  2nd terminal :
$ddd  --debugger  gdb
Trong gdb console :
(gdb) file  kernel.exec   /* nạp ký tự cho debugging */
(gdb) load_modules   /* nếu muốn moi bọ module */
(gdb) target remote localhost:1234  /* kết nối đường hầm với stub của qemu */
(gdb) break grub_dl_load_core   /* (at kern/dl.c : 530 ) */
(gdb) break grub_device_open   /* (at kern/device.c : 33) */
(gdb) c   /* bật kết nối vói qemu */

Từ đây ,gõ bên qemu "ls -l"  để quan sát thiết bị device
Bên gdb  gõ n(ext)  s(tep)  hay c(ontinue)  cho tới khi dừng chân ở kern/device.c:33

Trong ddd (data display debugger)
Chuột -data -  display_local_variable_enabled
(gdb) l(ist)  /* hiển thị nguồn source */

Chuột phải -grub_disk_t - display(*grub_disk_t)
Chuột phải - disk - display *disk  ....

thì sẽ được hình sau đây
http://wjhowto.googlepages.com/grub2-r2340-gdbpatch.png
http://wjhowto.googlepages.com/grub2-r2340.png

Topic options

RSS

Trang: 1 2 3 4 5

You must đăng nhập or đăng kí to post a reply

VnOSS forum » Thảo luận chung » Học với ubuntu


Jump to forum:

Powered by FluxBB

[ Generated in 0,616 seconds, 7 queries executed ]

  PageRank
Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp Tự động Chính tảBỏ dấu kiểu mới [ Bật/Tắt (F9) Ẩn/Hiện (F8) ]

Trang: 1 2 3 4 5

You must đăng nhập or đăng kí to post a reply

VnOSS forum » Thảo luận chung » Học với ubuntu


Jump to forum:
Thông báo Góp ý, báo lỗi ABC ... Thảo luận chung Lập trình Networking An toàn, bảo mật Multimedia, Entertainment, Desktop Cơ sở dữ liệu Howto Dịch thuật Service4fun(d) Việc làm - Doanh nghiệp - Thị trường Bản tin (obsolete) Vừa học, vừa chơi (La)TeX Ứng dụng & Dịch vụ của Google Các chủ đề khác Trash Hacao Linux FC-One

Powered by FluxBB

[ Generated in 0,673 seconds, 7 queries executed ]

  PageRank
Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp Tự động Chính tảBỏ dấu kiểu mới [ Bật/Tắt (F9) Ẩn/Hiện (F8) ]
Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp Tự động Chính tảBỏ dấu kiểu mới [ Bật/Tắt (F9) Ẩn/Hiện (F8) ]
ċ
emulate-embedded.img.bz2
(8373k)
hoan nn,
Dec 11, 2010, 11:39 AM
Comments