歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 用busybox做一個迷你Linux

用busybox做一個迷你Linux

日期:2017/3/2 16:49:36   编辑:Linux服務器

1、WHERE字句的LIKE條件中通配符。


Oracle和mysql都支持%和_兩個通配符,前者匹配任意個任意字符,後者匹配最多一個任意字符。但在處理本意字符%和_時,就很不相同了。mysql可以用轉義字符\來處理;oracle也可以用轉義字符來處理,但必須在LIKE表達式後用escape '\'來說明;其中\可以是任意一個字符(注意必須是一個字符)。

2、對象名的大小寫敏感性
處理諸如表,存儲過程,函數,索引,數據庫等對象時,Oracle對大小寫不敏感;mysql則由操作系統來決定。如LINUX下是敏感的,WINDOWS是不敏感的。

3、查詢表信息
mysql: show tables;
Oracle: select table_name from tabs;

4、自動增長類型的支持
mysql: 每一個表可以有一列用auto_increment,但必須用於主關鍵字。其起始值可以用AUTO_INCREMENT=500000作為表屬性來約束,不能設步長,不能循環使用。
Oracle: 用 sequence對象來支持該類型。可以在觸發器和SQL語句中用nextval,currval來取值;注意CURRVAL需要在同一SESSION裡方能取值正確。
查詢語句如SELECT seqid_main.nextval from dual。
創建語句如CREATE SEQUENCE SEQID_MAIN INCREMENT BY 1 START WITH 1 NOCYCLE CACHE 20 NOORDER;

5、限制記錄數的支持
mysql: 用limit [start-index,]count子句來實現,非常簡單,並且支持DELETE語法,應該對用戶非常方便。
Oracle: 沒有直接的子句可以提供支持。但近似可以用row_number函數來實現。
如 row_number() over (order by col1 desc,col2) as row,然後對row來進行過濾處理。如果沒有排序子句則可以用更簡單的rownum來實現。

6、連接操作符的支持
其實mysql和Oracle都支持左、右、內聯操作。不過Oracle的語法如 a.id=b.id(+)來表示左聯操作比較直觀和容易構造。
1.基礎知識
一個操作系統可以簡單的抽象為,引導程序+內核+文件系統。
vmlinuz是Linux 內核的鏡像文件,可以被引導程序加載,從而啟動Linux系統。
initrd的全稱是boot loader initialized RAM disk,它是系統啟動時所使用的根文件系統映像文件,這個文件系統中包含幾個驅動模塊,用來裝載實際的根文件系統,比如一個IDE或SCSI硬盤的驅動模塊,內核裝入這個模塊之後用它來驅動硬盤,掛接硬盤到ramdisk的某個子目錄,然後再用其中的pivot_root命令,將硬盤文件系統變成根文件系統,並開始執行init進程,此時init ram disk被umount,壽終正寢。
由此可見,我們可以用vmlinuz+initrd.img做一個文件系同長駐內存的迷你Linux。

現在進入正題了:

2.編譯內核
mcd /usr/src/....----進入內核源代碼目錄,沒有的話去官方網站,隨便下

make menuconfig-----配置編譯選項請注意一定加入RAM disk support 和initial RAM disk
(initrd) support 的支持(在block device中)。另外最好將ext3文件系統
編入內核,不要編成模塊。配置完畢後保存為.config(默認)
make bzImage----編譯
在許多內核編譯參考中還有
make modules
make modules_install兩步
但我們這裡沒有加入對modules的支持,所以不需要。
生成的bzImage文件在usr/src/linux/arch/.../boot中,省略的根據你的機器架構決定,make過程中會有提示,比如我的是x86_64. 注意這個文件非常重要,其實就是我們最終的vmlinuz.

3.busybox
busybox是一個集成了一百多個最常用linux命令和工具的軟件,它甚至還集成了一個http服務器和一個telnet服務器,而所有這一切功能卻只有區區1M左右的大小.我們平時用的那些linux命令就好比是分力式的電子元件,而busybox就好比是一個集成電路,把常用的工具和命令集成壓縮在一個可執行文件裡,功能基本不變,而大小卻小很多倍,在嵌入式linux應用中,busybox有非常廣的應用,另外,大多數linux發行版的安裝程序中都有busybox的身影,安裝linux的時候案ctrl+alt+F2就能得到一個控制台,而這個控制台中的所有命令都是指向busybox的鏈接.在我們的迷你Linux中,需要的也正是busybox的命令和工具。

使用過程中許多高版本都出現編譯錯誤,所以用了一個最原始的版本busybox-1.00
#cp busybox-1.00.tar.gz /tmp/bunny
#cd /tmp/bunny
#tar xvfz busybox-1.00.tar.gz
#cd busybox-1.00
#make menuconfig ----編譯配置
下面是需要編譯進busybox的功能選項,其他的可以根據需要自選.
General Configuration應該選的選項
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options
Build BusyBox as a static binary (no shared libs)
這個選項是一定要選擇的,這樣才能把busybox編譯成靜態鏈接的可執行文件,運行時才獨立於其他函數庫.否則必需要其他庫文件才能運行,在單一個linux內核不能使他正常工作.
Installation Options
Don't use /usr
這個選項也一定要選,否則make install 後busybox將安裝在原系統的/usr下,這將覆蓋掉系統原有的命令.選擇這個選項後,make install後會在busybox目錄下生成一個叫_install的目錄,裡面有busybox和指向它的鏈接.
其他選項都是一些linux基本命令選項,自己需要哪些命令就編譯進去,一般用默認的就可以了.
配置好後退出並保存.config.
make
make install
編譯好後在busybox目錄下生成子目錄_install,裡面的內容:
bin
linuxrc -> bin/busybox
sbin
其中可執行文件busybox在bin目錄下,其他的都是指向他的符號鏈接

Copyright © Linux教程網 All Rights Reserved