網上書店需求分析報告_第1頁
網上書店需求分析報告_第2頁
網上書店需求分析報告_第3頁
網上書店需求分析報告_第4頁
網上書店需求分析報告_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、網上書店系統(tǒng)需求說明書1 引言隨著網絡的普及,網絡支付手段的逐步完善,越來越多的人習慣于網上購物,選擇鼠標點擊下訂單,送貨上門的快捷便利的購物方式。網絡為改變傳統(tǒng)的商業(yè)運作模式提供了一種技術上的可行性的方案:利用Internet的技術和協(xié)議,建立各種企業(yè)內部網Intranet,企業(yè)外部網Extranet,通過廉價的通訊手段,將買家與賣家、廠商和合作伙伴緊密結合在了一起,消除時間與空間帶來的障礙,從而大大的節(jié)約了交易成本,擴大了交易范圍。而在實際的生活中,這種方案已經被廣泛的運用到了實際的商業(yè)活動中了,人們將這種交易模式稱為:電子商務。 而傳統(tǒng)書店的購書觀念也正在被網上書店這一方便快捷的購書方式

2、所沖擊。網上書店在國際互聯(lián)網上可以實現(xiàn)的商務功能已經越來越多樣化,從最開始的信息發(fā)布功能,到現(xiàn)在的在線圖書展示功能、在線洽談業(yè)務功能、在線交易功能、在線客戶服務功能、在線管理功能等等,幾乎傳統(tǒng)書店所提供的功能都可以在互聯(lián)網上進行電子化的高效運作,而借助網絡的跨地域特點,更是將傳統(tǒng)書店的地域限制加以突破,從而大大增加了客戶的數(shù)量。2 任務概述及系統(tǒng)功能概述2.2 可行性分析可行性研究是為了弄清楚系統(tǒng)開發(fā)的項目是不是可以實現(xiàn)和值得進行研究的過程,實際上是一次大大簡化系統(tǒng)分析和系統(tǒng)設計的過程,所以,進行可執(zhí)行性的分析是非常必要的,也是很重要的,經過最初的設計目標和進行的市場調查得出以下四點的可行性分

3、析:經濟可行性:網上書店主要以書籍 雜志及音像制品等商品為主,網站可提供書籍音像制品的片段共讀者瀏覽,使消費者了解其內容后再訂購,避免過多的退貨問題。與傳統(tǒng)書店相比,網上購書的市場規(guī)模和經營模式沒有限制,突破了地理位置,經營面積,營業(yè)時間的局限。是一直種全新的銷售渠道。從營業(yè)面積地理位置方面節(jié)省大量的資金。服務器24小時提供網絡服務則消費者隨時都能登陸網站購物,大大增加書店的銷售額度。無論從商家還是從消費者的角度看網絡書店都具有良好的發(fā)展前景。技術可行性:ASP.NETSQL SERVER的技術已經較為成熟。運行可行性:該系統(tǒng)需要搭建VS.NET和IIS環(huán)境,在此環(huán)境下系統(tǒng),并且在正確連接數(shù)據(jù)

4、庫后可以正常運行。法律可行性:該平臺是作為畢業(yè)設計與商業(yè)無關,又因為是自主開發(fā)設計,因此不會構成侵權,在法律上是可行的。通過以上的可行性分析,我將采用ASP.NET技術,運用SQL SERVER數(shù)據(jù)庫對網站進行建設。2.3 網上書店的系統(tǒng)特點(1)、簡潔美觀的操作界面美觀又簡單的操作界面對于一個網站能否吸引顧客的光顧,起著至關重要的作用。操作過于復雜或網站的設計過于沉悶都會使網上書店得不到客戶的青睞。本系統(tǒng)通過工作人員的精心打造,配以精致的動畫,使網上書店既時尚典雅,又動感十足,吸引廣大顧客的光臨。(2)、科學的書店管理模式系統(tǒng)采用店方推薦與客戶檢索相結合的方式,能輕松的找到客戶所需要書籍信息

5、;通過客戶意見反饋系統(tǒng)和缺書登記系統(tǒng),書店可以隨時把握客戶的各種新的需求和及時與客戶進行網上互動交流;通過完善的信息發(fā)布系統(tǒng),客戶可以及時得到書店最新動態(tài)和新聞,掌握行業(yè)動向;后臺結構化管理模式,涵蓋了欄目設置、圖書資料編輯、用戶管理、訂單管理、基礎信息管理等等,為書店的電子化管理提供了一套良好的管理模式。(3)、圖書寄送提醒系統(tǒng)不能即購即得是網上書店不如傳統(tǒng)實體書店的一個弊病。當顧客選定圖書后必然要等候一段時間才能拿到喜愛的圖書,而等候的時間是最讓顧客厭煩的,如果等候的時間太長則有可能導致客戶的流失。而圖書寄送提醒系統(tǒng)就是為了解決這個問題而設計的,當客戶下訂單后,客戶所定圖書的狀態(tài)顯示為“已

6、下定單”,當書店已經將圖書交給快遞公司后,客戶所定圖書的狀態(tài)顯示為“已寄送”。這樣客戶就可以通過查詢圖書狀態(tài)了解圖書的寄送情況,當由于快遞公司未能按時寄送圖書導致客戶等候時間過長的時候,客戶不會盲目的遷怒于網上書店,從而保證書店的信譽,盡可能的減少客戶流失。(4)、圖書收藏系統(tǒng)圖書收藏系統(tǒng)給客戶提供一個可以收藏喜愛圖書的收藏夾,客戶可以在收藏夾里放入自己喜愛的圖書,放入收藏夾里的圖書一般是客戶在瀏覽網上書店時看中而又不想馬上下訂單的圖書,當客戶方便下訂單的時候,可以直接從收藏夾里找出之前看中的圖書,直接下訂單,這樣就節(jié)省了客戶再次查找的麻煩,也增加了客戶瀏覽網上書店的頻率,這樣客戶可以不必等到

7、要買書的時候才登錄書店,可以隨時登錄,隨時收藏喜愛的圖書,為以后的下訂單作好準備。(5)購物車系統(tǒng) 網上購物不可避免的需要涉及郵遞,而郵遞也需要客戶付出一定的費用。購物車系統(tǒng)的開發(fā),使買家可以像在超市購物一樣,隨意添加刪除商品,選購完畢后,統(tǒng)一下單。避免多次付費、重復付費,為客戶提供便利。2.4、系統(tǒng)功能說明2.4.1、書店前臺 前臺作為與用戶直接交互的界面,在考慮功能的同時,也考慮了操作的簡潔和方便性,目的是讓大多數(shù)不在懂電腦操作的客戶,也能輕松的享受電子商務給他們帶來的便利。(1)、前臺主要功能包括注冊/登錄、我的賬戶、新聞發(fā)布、書店介紹、聯(lián)系方式、圖書查詢、新書快遞、圖書分類瀏覽、圖書展

8、示、暢銷書排行榜、打折專區(qū)、精品推薦、意見反饋、購物車、在線交流、自動友情鏈接功能等等。(2)、書店系統(tǒng)前臺設計的特色(a)、我的賬戶 每個注冊的用戶,都擁有一個屬于自己的賬戶管理界面,客戶可以輕松的管理個人基本資料,送貨信息資料,修改密碼,管理訂單,查看收藏架中的圖書,查詢訂單匯總。本系統(tǒng)充分考慮到了本模塊對于客戶的重要性,所以界面盡量做的簡捷,采用開放式結構,一目了然,方便客戶輕松掌控自己的一切信息,從而提高對書店的信任度,進一步增加書店的銷售額。實例圖個人資料可在此修改或補充你的注冊信息修改密碼修改你的注冊密碼我的訂單查詢訂單明晰、修改或確認訂單我的收藏夾收藏喜愛的圖書,方便以后購買收貨

9、人信息增加或修改收貨人信息統(tǒng)計信息你在本站的一些交易數(shù)據(jù)的信息圖書狀態(tài)查看圖書的郵寄情況(b)、信息的實時發(fā)布網上書店新聞讓客戶對充分了解書店的動向,決策,行業(yè)新聞則可用來發(fā)布本行業(yè)或相關行業(yè)的動態(tài),讓客戶及時了解行業(yè)變化,掌握最新的行業(yè)法律法規(guī)。24小時滾動播出的公告,反映的是網上書店的實時消息。(c)、購書的詳細過程會員注冊-選擇圖書-去下訂單-書店發(fā)貨-快遞公司送貨-客戶收到圖書核查無誤后付款(d)、多種檢索方式傳統(tǒng)書店最困惑的就是購書時的盲目性,找一本書,需花費大量的時間和精力,網上書店這方向的困惑已經得到了徹底的解決,數(shù)據(jù)庫的高效檢索,讓客戶找書不再煩惱。本系統(tǒng)運用了先進的檢索方式,

10、包括模糊查詢,按出版社、按分類,按圖書價格范圍,按作者,按標題等多種查詢方法,同時查詢方法簡單易懂。(e)、靈活多樣的圖書展示區(qū)網站前臺圖書顯視欄目分為以下幾種方式: (1)新書上架 (2)精品推薦 (3) 關注排行(4) 銷售排行(5) 圖書打折專區(qū)(6) 圖書詳細分類(f)、意見反饋系統(tǒng)這是一個書店與客戶互動的關鍵系統(tǒng),包括四個功能模塊:(1)在線交流 (2)意見與建議 (3)合作意向 (4)投訴 在線交流:使得客戶與店家即時溝通交流,無需等待。意見與建議:包含一個意見箱,客戶能隨時寫下對書店的建議和意見,可匿名。投訴:當你的服務沒有得到滿足或對書店員工的做法不滿的時候,通過這個系統(tǒng)你可以

11、把你的不滿提交給書店的高層,進行投訴。合作意向:如果客戶對公司或公司產品感興趣,還可以提交合作的請求。此系統(tǒng)設定隱私權限,有針對性的把信息提交給相關人員,便于及時處理客戶碰到的各種問題。這是一個多功能的系統(tǒng),這個系統(tǒng)將是書店了解客戶,提高服務質量的一個橋梁,這也是本系統(tǒng)比較有特色的模塊。系統(tǒng)前臺結構圖系統(tǒng)前臺系統(tǒng)前臺會員登陸圖書展示訂購服務意見反饋會員注冊會員個人主頁新書上架精品推薦銷售排行優(yōu)惠專區(qū)詳細分類立即購買加入購物車在線交流意見與建議合作意向投訴2.4.2書店后臺本系統(tǒng)后臺管理在考慮書店管理操作簡便的同時,提供了強大的書店管理模式。大模塊上分為用戶資料管理,圖書資料管理,訂單管理,用戶

12、反饋管理,物流管理以及廣告管理與網站維護。系統(tǒng)后臺結構圖系統(tǒng)后臺系統(tǒng)后臺用戶管理圖書管理訂單管理反饋管理物流管理廣告管理及網站維護2.4.3.售后服務(1)、客戶評價當用戶購書成功后,可以在90天內對此圖書的質量、內容等進行評價,若評價經管理員審理后,不含有觸犯相關法律法規(guī)的內容,則此評價內容會顯示在圖書信息的下方。廣開言路,為管理員和其他客戶提供參考意見(2)確認付款后7天內若有質量問題,可與店方協(xié)商后換貨。3 需求規(guī)定3.1 對功能的規(guī)定3.1.1 系統(tǒng)功能模塊圖網上書店管理系統(tǒng)的功能可以劃分為如下幾個部分(1)前臺管理:主要是用戶或會員進行察看圖書、選書、購書等基本操作。(2)后臺管理:

13、主要是管理員對會員的管理、整理購書單完成發(fā)送貨、書庫存的動態(tài)管理、對網站的維護和更改等操作。3.1.2 數(shù)據(jù)流程圖 圖1 頂層數(shù)據(jù)流程圖 圖2 購書系統(tǒng)細化分析數(shù)據(jù)流程圖 圖3 “訂書處理”的細化 圖4 “支付處理”的細化 圖 5 “配送”的細化3.1.3 數(shù)據(jù)字典本系統(tǒng)的部分數(shù)據(jù)字典如下: (1).數(shù)據(jù)存儲: 名字:用戶表 別名:會員表 描述:記錄會員的個人基本情況 定義:用戶表=會員id+姓名+聯(lián)系方式+家庭住址+登錄密碼 位置:網上書店數(shù)據(jù)庫名字:管理員表別名:管理員表描述:記錄會員的個人基本情況定義:管理員表=管理員id+職位+聯(lián)系方式+姓名+登錄密碼位置:網上書店數(shù)據(jù)庫名字:圖書表別

14、名:圖書表描述:記錄所賣書的基本信息定義:圖書表=圖書id+名稱+出處+作者+出版日期位置:網上書店數(shù)據(jù)庫 (2)數(shù)據(jù)結構: 名字:會員id別名:會員號,編號定義:會員id=會員申請日期+會員個人編號 會員申請日期=8數(shù)字字符8會員個人編號=5數(shù)字字符5位置:用戶表名字:管理員id別名:管理員號,管理員編號定義:管理員id=部門編號+職工個人編號 部門編號=2數(shù)字字符2職工個人編號=5數(shù)字字符5位置:管理員表名字:圖書 id別名:圖書號,圖書編號定義:圖書id=種類編號+編號 種類編號=2數(shù)字字符2編號=5數(shù)字字符5位置:圖書表(3)數(shù)據(jù)元素名字:姓名別名:昵稱定義:1字符8位置:用戶表管理員

15、表網上書店數(shù)據(jù)庫名字:聯(lián)系方式別名:聯(lián)系方式描述:手機聯(lián)系方式或固定電話聯(lián)系方式 定義:12數(shù)字字符12|8數(shù)字字符8位置:用戶表管理員表網上書店數(shù)據(jù)庫名字:職位別名:職位定義:1漢字4位置:管理員表網上書店數(shù)據(jù)庫名字:密碼別名:登陸密碼定義:6字符6位置:管理員表 用戶表網上書店數(shù)據(jù)庫名字:出處別名:出版社定義:1漢字15位置:圖書表網上書店數(shù)據(jù)庫名字:作者別名:編輯者定義:1漢字4位置:圖書表網上書店數(shù)據(jù)庫3.1.4 E-R圖 注釋:會員id、管理員id、圖書id由數(shù)據(jù)庫系統(tǒng)自動添加 3.1.5 狀態(tài)轉換圖3.2 對性能的規(guī)定3.2.1 精度本系統(tǒng)要求輸入的會員年齡為整數(shù),買書的數(shù)量為整數(shù)

16、,出生日期必須是合法的日期形式(如1990-08-01),身份證號碼必須為數(shù)字。3.2.2 時間特性要求(1)系統(tǒng)的更新處理時間應該在可接受的范圍內;(2)系統(tǒng)的數(shù)據(jù)查詢時間應該在可接受的范圍內;(3)系統(tǒng)的數(shù)據(jù)統(tǒng)計時間應該在可接受的范圍內。3.2.3 靈活性(1)操作方式上應該能夠滿足鼠標和鍵盤任意切換的需要;(2)能夠支持Windows95、Windows98、Windows2000、Windows Me和Windows XP的運行環(huán)境;(3)留有與其他系統(tǒng)的接口。3.3 輸入輸出要求對會員注冊中“姓名”的輸入要求不超過4個漢字或8個英文字符;會員的性別只能選擇不能有鍵盤輸入,出生日期必須

17、輸入合法(如1990-08-01),輸入身份證號必須合法,即必須為18為數(shù)字。對會員買完書后的購書單以表單形式輸出,上面有會員的姓名,聯(lián)系電話,買書的數(shù)量及單價和總價錢,購買日期,以及網上書店的地址和聯(lián)系方式??偟馁~目輸出,會統(tǒng)計每個會員的購物單,會有賣出的書名,書的編號,以及書的數(shù)量和數(shù)的總價錢。3.4 數(shù)據(jù)管理能力要求由于購書系統(tǒng)會對會員的資料進行保存,并且,書的庫存會隨著數(shù)的購買或購進新的書而改變,因此對數(shù)據(jù)的存儲有一定的要求;要求提供數(shù)據(jù)的備份功能。3.5 故障處理要求在輸入不對的符號定義格式的數(shù)據(jù)時,軟件應出現(xiàn)提示信息,而不是死機或刪除已經輸入的信息,然后再彈出界面重新開始。在書的庫

18、存小于會員購買的數(shù)量是必須提示庫存不足,而不是還可以賣給會員。3.6 其他專門要求要求能夠按會員姓名進行檢索。4 運行環(huán)境規(guī)定4.1 設備運行本軟件要的計算機。4.2 支持軟件本系統(tǒng)操作系統(tǒng)包括:Windows XP、Win7等。本系統(tǒng)支持的數(shù)據(jù)庫: SQL Server 2005本系統(tǒng)的開發(fā)工具:Visual Studio.NET 2008SQL SERVER2005。 4.3 接口本軟件通過若干個中間表(在此省略其結構)實現(xiàn)與其他軟件的通信。附錄資料:不需要的可以自行刪除 busybox詳解制作根文件系統(tǒng)詳解制作根文件系統(tǒng) 一、FHS(Filesystem Hierarchy Standa

19、rd)標準介紹當我們在linux下輸入ls / 的時候,見到的目錄結構以及這些目錄下的內容都大同小異,這是因為所有的linux發(fā)行版在對根文件系統(tǒng)布局上都遵循FHS標準的建議規(guī)定。該標準規(guī)定了根目錄下各個子目錄的名稱及其存放的內容:目錄名存放的內容/bin必備的用戶命令,例如ls、cp等/sbin必備的系統(tǒng)管理員命令,例如ifconfig、reboot等/dev設備文件,例如mtdblock0、tty1等/etc系統(tǒng)配置文件,包括啟動文件,例如inittab等/lib必要的鏈接庫,例如C鏈接庫、內核模塊/home普通用戶主目錄/rootroot用戶主目錄/usr/bin非必備的用戶程序,例如f

20、ind、du等/usr/sbin非必備的管理員程序,例如chroot、inetd等/usr/lib庫文件/var守護程序和工具程序所存放的可變,例如日志文件/proc用來提供內核與進程信息的虛擬文件系統(tǒng),由內核自動生成目錄下的內容/sys用來提供內核與設備信息的虛擬文件系統(tǒng),由內核自動生成目錄下的內容/mnt文件系統(tǒng)掛接點,用于臨時安裝文件系統(tǒng)/tmp臨時性的文件,重啟后將自動清除制作根文件系統(tǒng)就是要建立以上的目錄,并在其中建立完整目錄內容。其過程大體包括:編譯安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄 利用交叉編譯工具鏈,構建/lib目錄 手工構建

21、/etc目錄 手工構建最簡化的/dev目錄 創(chuàng)建其它空目錄 配置系統(tǒng)自動生成/proc目錄 利用udev構建完整的/dev目錄 制作根文件系統(tǒng)的jffs2映像文件 下面就來詳細介紹這個過程。二、編譯安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄這些目錄下存儲的主要是常用命令的二進制文件。如果要自己編寫這幾百個常用命令的源程序,my god, 這簡直是一個噩夢!好在我們有嵌入式Linux系統(tǒng)的瑞士軍刀busybox,事情就簡單很多。1、從 HYPERLINK / / 下載busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7

22、.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busyboxbusybox配置主要分兩部分。第一部分是Busybox Settings,主要編譯和安裝busybox的一些選項。這里主要需要配置:1)、Build Options - Build BusyBox as a static binary (no shared libs),表示編譯busybox時,是否靜態(tài)鏈接C庫。我們選擇動態(tài)鏈接C庫。2)、Installation Options - Applet

23、s links (as soft-links) - (X) as soft-links,表示安裝busybox時,將各個命令安裝為指向busybox的軟鏈接還是硬鏈接。我們選擇軟鏈接。3)、Installation Options - (/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安裝位置。我們選擇/work/nfs_root/fs_mini34)Busybox Library Tuning。保留Command line editing以支持命令行編輯;保留History size以支持記憶歷史命令;選中Tab

24、completion和Username completion以支持命令自動補全 第二部分是Applets,他將busybox的支持的幾百個命令分門別類。我們只要在各個門類下選擇想要的命令即可。這里我們基本保持默認設置。1)選中Networking Utilities - httpd下的Enable -u option,以啟用http服務器的功能allows the server to run as a specific user5、編譯busyboxmake6、安裝busyboxmake install安裝完成后,可以看到在/work/nfs_root/fs_mini3目錄下生成了binsbi

25、nusr/binusr/sbin目錄,其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟鏈接,而busybox本身的大小不到800K:dennisdennis-desktop:/work/nfs_root/fs_mini3$ lsbin linuxrc sbin usrdennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l bintotal 740lrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 addgroup - busyboxlrwxrwxrwx 1 dennis dennis 7

26、 2010-04-03 23:57 adduser - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 ash - busybox-rwxr-xr-x 1 dennis dennis 749632 2010-04-03 23:57 busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 cat busybox 而普通PC機上的ls命令就有差不多80K的大小: dennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l /bin/ls-rwxr-

27、xr-x 1 root root 78004 2007-09-29 20:51 /bin/ls busybox以它嬌小的身軀容納了數(shù)以百計的命令代碼,實在是讓人佩服不已,其不愧嵌入式系統(tǒng)瑞士軍刀之美譽。據(jù)說,busybox的作者身患絕癥,這更讓人欽佩GNU開源軟件的作者們。 三、利用交叉編譯工具鏈,構建/lib目錄 光有應用程序(命令)是不夠的,因為應用程序本身需要使用C庫的庫函數(shù),因此還必需制作for ARM的C庫,并將其放置于/lib目錄。my god,要自己寫C庫的源代碼嗎?不用!還記得交叉編譯工具鏈的3個組成部分嗎?交叉編譯器、for ARM的C庫和二進制工具。哈哈,for ARM的C

28、庫是現(xiàn)成的,我們只需要拷貝過來就可以了。遺憾的是:整個C庫目錄下的文件總大小有26M。而我們根文件系統(tǒng)所在分區(qū)不過區(qū)區(qū)16M而已,根本放不下。怎么辦呢? dennisdennis-desktop:/work/nfs_root/fs_mini3$ du -s -si /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib26M /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib 需要C庫目錄下所有的文件嗎?no,absolutely no! 讓我們來分析一下glibc庫目錄下內容的組成。該目錄下的子目錄和文件共分

29、8類: 目標文件,如crtn.o,用于gcc鏈接可執(zhí)行文件 libtool庫文件(.la),在鏈接庫文件時這些文件會被用到,比如他們列出了當前庫文件所依賴的其它庫文件,程序運行時無需這些文件 gconv目錄,里面是各種鏈接腳本,在編譯應用程序時,他們用于指定程序的運行地址,各段的位置等 靜態(tài)庫文件(.a),例如libm.a,libc.a 動態(tài)庫文件 (.so、.so.0-9*) 動態(tài)鏈接庫加載器ld-2.3.6.so、ld-linux.so.2 其它目錄及文件很顯然,第1、2、3、4、7類文件和目錄是不需要拷貝的。由于動態(tài)鏈接的應用程序本身并不含有它所調用的C庫函數(shù)的代碼,因此執(zhí)行時需要動態(tài)鏈

30、接庫加載器來為它加載相應的C庫文件,所以第6類文件是需要拷貝的。除此之外,第5類文件當然要拷貝。但第5類文件的大小也相當大。dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ du -c -si *.so* 7.2M total 需要全部拷貝嗎?非也,非也!其實,需要哪些庫完全取決于要運行的應用程序使用了哪些庫函數(shù)。如果我們只制作最簡單的系統(tǒng),那么我們只需要運行busybox這一個應用程序即可。通過執(zhí)行 dennisdennis-desktop:/work/nfs_root/fs_mini3$ arm-li

31、nux-readelf -a bin/busybox | grep Shared0 x00000001 (NEEDED) Shared library: libcrypt.so.10 x00000001 (NEEDED) Shared library: libm.so.60 x00000001 (NEEDED) Shared library: libc.so.6 可知:busybox只用到了3個庫:通用C庫(libc)、數(shù)學庫(libm)、加密庫(libcrypt),因此我們只需要拷貝這3個庫的庫文件即可。但是每個庫都有4個文件,4個文件都要拷貝嗎?當然不是。 dennisdennis-des

32、ktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libcrypt.-*-rwxr-xr-x 1 dennis dennis 30700 2008-01-22 05:32 libcrypt-2.3.6.so-rw-r-r- 1 dennis dennis 23118 2008-01-22 05:32 libcrypt.alrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libcrypt.so - libcrypt.so.1lrwxrwxrwx 1 dennis dennis 17

33、2008-12-22 15:38 libcrypt.so.1 - libcrypt-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libm.-*-rwxr-xr-x 1 dennis dennis 779096 2008-01-22 05:31 libm-2.3.6.so-rw-r-r- 1 dennis dennis 1134282 2008-01-22 05:32 libm.alrwxrwxrwx 1 dennis dennis 9 2008-12-22 15:38 l

34、ibm.so - libm.so.6lrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libm.so.6 - libm-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libc.-*-rwxr-xr-x 1 dennis dennis 1435660 2008-01-22 05:48 libc-2.3.6.so-rw-r-r- 1 dennis dennis 2768280 2008-01-22 05:31 libc.a-rw-r-

35、r- 1 dennis dennis 195 2008-01-22 05:34 libc.solrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libc.so.6 - libc-2.3.6.so 4個文件中的.a文件是靜態(tài)庫文件,是不需要拷貝的。另外3個文件是: 實際的共享鏈接庫:libLIBRARY_NAME-GLIBC_VERSION.so。當然需要拷貝。 主修訂版本的符號鏈接,指向實際的共享鏈接庫:libLIBRARY_NAME.so.MAJOR_REVISION_VERSION,程序一旦鏈接了特定的鏈接庫,將會參用該符號鏈接。程序啟動時,加載

36、器在加載程序前,會檢索該文件。所以需要拷貝。 與版本無關的符號鏈接,指向主修訂版本的符號連接(libc.so是唯一的例外,他是一個鏈接命令行:libLIBRARY_NAME.so,是為編譯程序時提供一個通用條目)。這些文件在程序被編譯時會被用到,但在程序運行時不會被用到,所以不必拷貝它。關于共享庫的2個符號鏈接的作用的特別說明:當我們使用gcc hello.c -o hello -lm編譯程序時,gcc會根據(jù)-lm的指示,加頭(lib)添尾(.so)得到libm.so,從而沿著與版本無關的符號鏈接(libm.so - libm.so.6)找到libm.so.6并記錄在案(hello的ELF頭中

37、),表示hello需要使用libm.so.6這個庫文件所代表的數(shù)學庫中的庫函數(shù)。而當hello被執(zhí)行的時候,動態(tài)鏈接庫加載器會從hello的ELF頭中找到libm.so.6這個記錄,然后沿著主修訂版本的符號鏈接(libm.so.6 - libm-2.3.6.so)找到實際的共享鏈接庫libm-2.3.6.so,從而將其與hello作動態(tài)鏈接??梢?,與版本無關的符號鏈接是供編譯器使用的,主修訂版本的符號鏈接是供動態(tài)鏈接庫加載器使用的,而實際的共享鏈接庫則是供應用程序使用的。通過以上分析,我們只需要拷貝3個庫(每個庫各1個主修訂版本的符號鏈接和1個實際的共享鏈接庫)以及動態(tài)鏈接庫加載器(1個符號鏈

38、接和1個實體文件)。步驟如下:dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ mkdir /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libcrypt-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$

39、cp -l libcrypt.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libm-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libm.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/

40、gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libc-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libc.so.* /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l ld-* /work/nfs_root/fs_mini3/lib 四、手

41、工構建/etc目錄 /etc目錄存放的是系統(tǒng)程序的主配置文件,因此需要哪些配置文件取決于要運行哪些系統(tǒng)程序。即使最小的系統(tǒng)也一定會運行1號用戶進程init,所以我們至少要手工編寫init的主配置文件inittab。busybox的inittab文件的語法、語義與傳統(tǒng)的SYSV的inittab有所不同。 inittab文件中每個條目用來定義一個需要init啟動的子進程,并確定它的啟動方式,格式為:。例如:ttySAC0:askfirst:-/bin/sh 表示子進程要使用的控制臺,若省略則使用與init進程一樣的控制臺 表示運行級別,busybox init程序這個字段沒有意義 表示init進程

42、如何控制這個子進程 sysinit:系統(tǒng)啟動后最先執(zhí)行,只執(zhí)行一次,init進程等待它結束后才繼續(xù)執(zhí)行其它動作 wait:系統(tǒng)執(zhí)行完sysinit條目后執(zhí)行,只執(zhí)行一次,init進程等待它結束后才繼續(xù)執(zhí)行其它動作 once:系統(tǒng)執(zhí)行完wait條目后執(zhí)行,只執(zhí)行一次,init進程不等待它結束 respawn:啟動完once進程后,init進程監(jiān)測發(fā)現(xiàn)子進程退出時,重新啟動它 askfirst:啟動完respawn進程后,與respawn類似,不過init進程先輸出” Please press Enter to activate this console“,等用戶輸入回車后才啟動子進程 shutd

43、own:當系統(tǒng)關機時 restart:Busybox中配置了CONFIG_FEATURE_USE_INITAB,并且init進程接收到SIGUP信號時執(zhí)行,先重新讀取、解析/etc/inittab文件,再執(zhí)行restart程序 ctrlaltdel:按下ctrl+alt+del鍵時執(zhí)行,不過在串口控制臺中無法輸入它 表示進程對應的二進制文件。如果前面有-號,表示該程序是“可以與用戶進行交互的”我們制作最簡單的/etc/inittab文件,其內容如下::sysinit:/etc/init.d/rcS:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdo

44、wn:/bin/umount -a r 制作最簡單的腳本程序文件/etc/init.d/rcS,其內容如下: #!/bin/shifconfig eth0 7修改shell腳本文件/etc/init.d/rcS的權限,以使其可被執(zhí)行:# chmod a+x /etc/init.d/rcS五、手工構建最簡化的/dev目錄 在linux機器上,執(zhí)行l(wèi)s /dev可看到幾百個設備文件,我需要手工創(chuàng)建它們嗎?maybe,我只需要手工創(chuàng)建幾個設備文件!我怎么知道我應該創(chuàng)建哪幾個設備文件呢?管它呢,先看看開發(fā)板上可愛的linux的反應再說。 啟動Linux操作系統(tǒng),顯示: VFS: Mounted roo

45、t (nfs filesystem).Freeing init memory: 112KWarning: unable to open an initial console. 這說明,內核已經成功掛載根文件系統(tǒng),但卻未能成功啟動第1個用戶進程init。通過錯誤消息“unable to open an initial console”搜索內核源代碼,找到init/main.c文件。748 static int noinline init_post(void)749 750 free_initmem();751 unlock_kernel();752 mark_rodata_ro();753 sy

46、stem_state = SYSTEM_RUNNING;754 numa_default_policy();755 756 if (sys_open(const char _user *) /dev/console, O_RDWR, 0) 0)757 printk(KERN_WARNING Warning: unable to open an initial console.n);758 759 (void) sys_dup(0);760 (void) sys_dup(0);761 762 if (ramdisk_execute_command) 763 run_init_process(ra

47、mdisk_execute_command);764 printk(KERN_WARNING Failed to execute %sn,765 ramdisk_execute_command);766 767 768 /*769 * We try each of these until one succeeds.770 *771 * The Bourne shell can be used instead of init if we are772 * trying to recover a really broken machine.773 */774 if (execute_command

48、) 775 run_init_process(execute_command);776 printk(KERN_WARNING Failed to execute %s. Attempting 777 defaults.n, execute_command);778 779 run_init_process(/sbin/init);780 run_init_process(/etc/init);781 run_init_process(/bin/init);782 run_init_process(/bin/sh);783 784 panic(No init found. Try passin

49、g init= option to kernel.);785 顯然,內核錯誤是由175行不能打開/dev/console所致。通過查看已經安裝好的linux機器的/dev/console設備文件,可知其是字符設備文件,主設備號為5,次設備號為1: dennisdennis-desktop:/work/nfs_root/fs_mini3/etc$ ls -l /dev/consolecrw- 1 root root 5, 1 2010-04-08 08:40 /dev/console 因此,我們使用下面的命令創(chuàng)建它: HYPERLINK mailto:dennisdennis-desktop:/

50、work/nfs_root/fs_mini3/dev$ dennisdennis-desktop:/work/nfs_root/fs_mini3/dev$ sudo mknod console c 5 1 還需要創(chuàng)建其它設備文件嗎?只有天知道!再看看linux的反應。 VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit: cant open /dev/null: No such file or directory 這次我們有經驗了,如法炮制,創(chuàng)建/dev/null設備文件:dennisdennis-desktop:/

51、work/nfs_root/fs_mini3/dev$ sudo mknod null c 1 3 再次重啟開發(fā)板上的linux,顯示 VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit started: BusyBox v1.7.0 (2010-04-03 23:53:55 CST)starting pid 229, tty : /etc/init.d/rcS Please press Enter to activate this console.starting pid 231, tty : /bin/sh# 哈

52、哈,我們成功了,終于可以K歌去了。六、創(chuàng)建其它空目錄K完歌回來,繼續(xù)戰(zhàn)斗。dennisdennis-desktop:/work/nfs_root/fs_mini3$ mkdir home root proc sys tmp mnt var再次重啟動開發(fā)板上的linux。咦,似乎有些問題。VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit started: BusyBox v1.7.0 (2010-04-03 23:53:55 CST)starting pid 229, tty : /etc/init.d/rcS Please press Enter to activate this console.starting pid 231, tty : /bin/sh# ps PID Uid VSZ Stat Command# ps竟然看不到任何進程的存在!讓我想想。對了,ps的機制是通過查看/proc中的內容來獲得進程信息的。那么,目前/pr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論