4/28/2013
4/23/2013
4/19/2013
4/17/2013
[Beagleboard] 6.啟動linux
4/16/2013
4/15/2013
Ubuntu 安裝 VMware Tools
在windows中有內建支援VMware tools 的功能,可使在虛擬機器與原本主機中互相傳遞檔案複製文字~ 而 Ubuntu也有 內建 VMware 支援,但未提供此功能,所以還是要灌 VMware Tools。
VMware Workstation 裡面的 Ubuntu 開機進入桌面
VMware Workstation 主選單 -> VM -> Install VMware Tools...
等待幾秒,Ubuntu 裡出現 VMware Tools,裡面有一個壓縮檔跟文字檔~
開啟終端機輸入:
tar xzf /media/VMware\ Tools/VMwareTools-8.4.6-385536.tar.gz
4/14/2013
[USB linux] 1.打造2MB 的 linux USB 隨身碟
這篇主要講解如何將從usb隨身碟開機,並進入到Linux中! 打造一個可以帶著跑的作業系統。
在這邊並不是使用UNetbootin或者是一些已經寫好的工具來幫我們製作linux USB,而是從核心編譯、root filesystem、Linux utilities全都手工打造。
本開發環境為 ubuntu 10.04.04,其它版本應該只有套件庫不一樣,不用擔心~稍微做點變更即可~
USB linux開機原理流程圖大致如下,一些原理與資訊大概可以參考這篇文章 (備份連結)
先建立我們的工作目錄,避免跟其它目錄混在一塊~
mkdir ~/build-usb-linux
cd ~/build-usb-linux
a. toolchain
因為我們要安裝在x86主機上,所以其實很簡單,
build-essential是編譯軟體所需要的一些套件,libncurses是進行make menuconfig會用到的函式庫
sudo apt-get install libncurses5-dev build-essentialRPM系的Linux可以用
yum groupinstall "Development Tools"
影像處理 -均值濾波器 (mean Filter)
影像處理 -中值濾波器 (Median Filter)
4/13/2013
[Beagleboard] 5.建立啟動用的TF卡
Beagleboard 可以通過多種方式啟動Linux系統,如通過Nandflash、TF卡或者通過NFS網絡啟動。本人選擇採用TF卡啟動的方式。因此,需要準備一張空白TF卡,在其之上建立雙分區:一個FAT32分區和一個EXT3(或EXT4)分區。FAT32分區用於存放bootloader、Image文件和一些boot參數相關的文件。EXT3分區用於存放Linux的Root filesystem。
具體步驟如下:
1、TF卡分區
將TF通過讀卡器連接到Linux開發環境上,找到掛載的設備,如本人系統上掛載為/dev/sdb。按照http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat 教程完成分區。
完成分區後,重新掛載TF卡。在/media下可以看到FAT32和EXT3兩個分區目錄。
[Beagleboard] 4.建立Linux rootfs
rootfs的是系統非常重要的一部分。
Linux kernel 啟動後,必須掛載rootfs,然後從rootfs中加載其它所需的內核模塊,啟動各種系統服務。rootfs有問題的話,啟動過程會出現各種詭異的錯誤。
這邊使用ARM Fedora 12的rootfs上成功完成了整個啟動過程。
下面是基於該rootfs的建立過程:
1、下載ARM Fedora 12 rootfs
下載地址:http://ftp.arm.linux.org.uk/pub/armlinux/fedora/rootfs/rootfs-f12.tar.bz2
下載其中的rootfs-f12.tar.bz2壓縮包
bzip2 -d rootfs-f12.tar.bz2 tar xvf rootfs-f12.tar解壓至rootfs-f12目錄下
[Beagleboard] 3.創建Linux kernel uImage
Linux發行版已融入對OMAP處理器和bb的支持,因此,可以直接下載最新的Linux發行版內核源碼,自己編譯生成內核鏡像。
具體步驟:
(1)從www.kernel.org下載Linux kernel
這邊我是下載2.6.39版內核源碼至omap_linux目錄下
wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2下載完後解壓縮至omap_linux資料夾中
(2)編譯生成uImage文件
1、修改Makefile文件中以下兩行
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
[Beagleboard] 2.創建bootloader 和 boot.scr
TI OMAP系列處理器上的bootloader通常是指x-loader(MLO)和u-boot(u-boot.bin),兩者用於Linux內核啟動前的配置、部分硬件系統配置以及解壓縮並加載內核Image文件並引導內核啟動。
u-boot在執行過程中會讀取boot.scr文件中的內核啟動參數,傳給即將引導啟動的Linux內核。
具體步驟:
(1)bootloader下載和編譯
1、執行git clone git://git.denx.de/u-boot.git target_directory
從DENX官方下載最新的u-boot至target_directory目錄。
2、編譯u-boot,生成MLO文件和u-boot.bin文件
打開Makefile文件,修改CROSS_COMPILE ?= arm-linux-
依順序執行
make mrproper //清除以往的配置信息完成後,在目錄下生成MLO文件和u-boot.bin文件
make omap3_beagle_config //針對bb進行編譯配置
make //編譯生成MLO和u-boot.bin文件
4/11/2013
[Beagleboard] 1. 建立ARM嵌入式開發環境(Cross compiler)
利用ARM Cross compiler交叉編譯環境,可以讓我們在x86系統上,編譯ARM處理器上可執行的程式碼。這邊主要用於編譯Beagleboard上的bootloader、kernel image,以及其它ARM可執行程序。
具體步驟如下:
(1)在VMware上創建一個虛擬機,安裝發行版的ubuntu系統,用於建立ARM嵌入式開發環境。
(2)安裝arm-linux-gcc,建立ARM交叉編譯環境(需要root權限)
1、下載arm-linux-gcc-4.3.x.tgz壓縮包(請自己挑一個版本)
ARM-Linux GCC 4.4.3 載點1
ARM-Linux GCC 4.3.2 MEGA 載點1 載點2 載點3
(這邊我使用4.3.2)
2、將壓縮檔自動解壓至/user/local/arm/目錄下。讓ARM交叉編譯器的所有可執行程序都在 /usr/local/arm/4.3.2/bin/ 目錄下
tar -xzvf arm-linux-gcc-4.3.2.tgz -C /-C 某目錄 為解壓縮至某目錄下,詳細請看鳥哥
3、配置root用戶環境變量,修改/etc/bash.bashrc文件
#vim ~/.bashrc在最後加上,加完之後存檔關閉
PATH=$PATH:/new_path:/another_new_path更新
export PATH
#source ~/.bashrc
4/10/2013
ubuntu 安裝rpm檔案
如果在 Ubuntu 想要安裝的軟件只提供 RPM 檔案,而沒有提供 debian 的 .deb 檔案,可以使用 Alien Package Converter 來解決。
Alien 是一個將 rpm, dpkg, ....檔案格式間轉換的工具,而在 Ubuntu 上安裝 Alien 也只需用 apt-get 即可安裝,相當方便,以下是具體實現方法:
輸入以上指令後,需要輸入密碼,然後按 “Y” 確認即可。安裝完成後,就可以用以下指令將 rpm 檔案轉換:
Alien 是一個將 rpm, dpkg, ....檔案格式間轉換的工具,而在 Ubuntu 上安裝 Alien 也只需用 apt-get 即可安裝,相當方便,以下是具體實現方法:
$sudo apt-get install alien
輸入以上指令後,需要輸入密碼,然後按 “Y” 確認即可。安裝完成後,就可以用以下指令將 rpm 檔案轉換:
$sudo alien -k xxx.rpm接下來就可以安裝
$sudo dpkg -i xxx.deb又或者可以直接使用
$alien -i xxx.rpm(會轉完後自行安裝,並移除.deb檔)
4/02/2013
Netlink 介紹
Netlink使用標準的socket介面來作為kernel與使用者介面的溝通,其address family填PF_NETLINK,而socket type為SOCK_RAW、SOCK_DGRAM,protocol則根據不同的netlink group不同而有所不同(詳細資訊可以man 7 netlink)。
socket = socket(AF_NETLINK, SOCK_RAW, netlink_family);
Netlink Socket Address Structure
Netlink也需要socket address,其socket address為:
struct sockaddr_nl { sa_family_t nl_family; /* AF_NETLINK */ unsigned short nl_pad; /* Zero. */ pid_t nl_pid; /* Process ID. */ __u32 nl_groups; /* Multicast groups mask. */ };
如果傳送的對象是kernel或者以multicast傳送,則nl_pid設為0。
如果是kernel傳送給user-space上面的application時(multicast),就會填入正確的pid,然而nl_pid實際的意義並不是指PID,而只是用於識別一個netlink socket而已,對於application在建立一個netlink socket時,可以將nl_pid設為0,然後bind(),kernel會自動將PID填入。而nl_groups是用multicast,採用bit mask方式,所以每個netlink family有32個multicast group。
4/01/2013
Arp Spoofing 欺騙攻擊-實作
一、步驟:
攻擊者: IP:192.168.136.131 MAC: {0x00, 0x0c, 0x29, 0xab, 0x9a, 0xd7}
被攻擊者:IP: 192.168.136.132 MAC: {0x00, 0x0c, 0x29, 0xd1, 0xab, 0x11}
gateway: IP:192.168.136.2 MAC:{0x00,0x50,0x56,0xf0,0xdd,0x74}
攻擊者發送arp封包給被攻擊者,告知被攻擊者 錯誤的gateway MAC address
二、實驗操作影片
建議切換至HD畫質欣賞
建議切換至HD畫質欣賞
訂閱:
文章 (Atom)