




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
大學(xué)生二手物品交易系統(tǒng)需求分析編者王剛2013/10/16審核年月日批準(zhǔn)年月日TIME\@"EEEE年O月"二〇二二年四月一、引言
隨著計算機及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet應(yīng)用在全球范圍內(nèi)日益普及,在眾多的網(wǎng)絡(luò)服務(wù)中,Web給人耳目一新的感覺,而在這其中,網(wǎng)上購物已經(jīng)日漸普及,很多人都通過網(wǎng)絡(luò)來購物。網(wǎng)上購物的好處在于能夠不用交房租、不用雇傭伙計、一天24小時隨時能進行服務(wù)等等。目前上網(wǎng)已經(jīng)成為大學(xué)生活不可或缺的一部分,在校大學(xué)生平均上網(wǎng)率達到92%,其中每周上網(wǎng)時間超過10小時以上的學(xué)生占在校學(xué)生總數(shù)的三分之一。而現(xiàn)在的大學(xué)生網(wǎng)上交易基本上是以BBS為主,BBS雖然用戶眾多,可是由于它不是一個獨立的站點,提供的功能有限,用戶不能詳細(xì)的了解商品的有關(guān)信息,不能快捷地查詢商品,無法滿足學(xué)生實際交易中的需求。校園二手交易網(wǎng)站為在校大中專學(xué)生提供一個供需平臺,學(xué)生可以將自己不用的東西放在網(wǎng)上,也可在網(wǎng)上找到自己需要的東西,物美價廉,達到雙贏。二、二手交易網(wǎng)站的特點
1.信息實用,方便學(xué)生
二手網(wǎng)站上提供許多方便學(xué)生學(xué)習(xí)與生活物品的信息,如被現(xiàn)代家庭淘汰的尤其是半新舊、價格頗低的小尺寸電視機,在大學(xué)生中廣受青睞。學(xué)生宿舍沒有電視,為讓課余生活豐富多彩,幾位同舍好友紛紛出錢合資從購買一臺,不要小看“電視”,一有球賽開戰(zhàn),許多同學(xué)圍坐在它身旁,足以看出它的“魅力無限”,有。大學(xué)生活結(jié)束時,還可變賣給低年級同學(xué)。“二手舊自行車”在大學(xué)生中非常搶手,大學(xué)校園“大”,有的還分好幾個校區(qū),每天上課、做實驗,跑來跑去實在很辛苦,有時偶爾還要上街溜達,外出結(jié)伴游玩對自行車需求自然很多。買新的,價格高,還容易被“盯上”,還是“二手”的好。用了三年五載,再便宜轉(zhuǎn)手,即使扔了也劃算。學(xué)期開始,很多學(xué)生先不去買新書,而到網(wǎng)站上搜尋與課程要求相同的教材,這在大學(xué)生中十分普遍。如等級考試教程,新書40元左右,而二手書僅10元,況且,在舊書中還有高年級的筆記,更加實用。網(wǎng)站商品琳瑯滿目,電腦、MP3、移動磁盤、燈、收錄機、衣架、球拍、健身器等,比比皆是。
2.培養(yǎng)學(xué)生的經(jīng)營意識
過去一到期末,或臨近畢業(yè),書籍、生活用品都當(dāng)成廢品,很便宜的賣給收廢品的,而現(xiàn)在,學(xué)生可以將這些物品信息掛在校園二手網(wǎng)站,以便學(xué)生之間雙向選擇,創(chuàng)造一定的經(jīng)濟價值,有的學(xué)生還收集、整理這些信息與物品,進行經(jīng)營,嘗試做“老板”的感覺。
3.二手交易網(wǎng)站深受學(xué)生青睞
高校的二手交易市場是一個大市場,每年都有畢業(yè)生要畢業(yè),每年都有新生來報到,畢業(yè)生們不可能將幾年來留存下的東西都帶走,有些物品已成為累贅,賣掉反而還能賺些路費。學(xué)生們的消費水平本來也不高,都希望能買到物美價廉的商品,這個時候,網(wǎng)上二手交易市場的作用就發(fā)揮出來了。賣主可以在網(wǎng)上登記自己要處理的物品以及售賣價格,聯(lián)系方式,買主則可以在網(wǎng)上搜索自己所需要的,若沒有,也可以在網(wǎng)上發(fā)布求購信息。當(dāng)然,網(wǎng)上二手交易市場不但能處理畢業(yè)生的多余物品,平時學(xué)生們有任何閑置的東西或有任何需求都可以免費在網(wǎng)上二手交易市場上得到處理,并且不限時間也不限地點。這一切只需要大家在電腦上點幾下鼠標(biāo)就萬事大吉了,其效率是先前面對面交易方式的數(shù)倍。
4.校園二手交易網(wǎng)交易安全
校園二手交易網(wǎng)上進行交易的大多都是本校的學(xué)生,他們在發(fā)布供求信息時都提供了真實的聯(lián)系方式,商品價格及質(zhì)量可以直接當(dāng)面確定,不像那些純商業(yè)網(wǎng)站,買賣雙方都存在很大的風(fēng)險。三、校園二手交易網(wǎng)的功能
校園二手交易網(wǎng)為用戶提供了一個二手交易的平臺。根據(jù)大中學(xué)校商品情況及學(xué)生的實際需求,系統(tǒng)的主要功能模塊為信息分類、信息搜索、發(fā)布信息、用戶注冊登陸、用戶QQ通訊(小紙條)、管理后臺等。在網(wǎng)站的設(shè)計中,分為前臺和后臺兩個部分設(shè)計,前臺主要用于提供用戶注冊和登陸、發(fā)布供求信息、查詢供求信息、發(fā)小紙條、用戶留言等功能,后臺主要功能有:用戶管理、供求信息管理、信息分類管理、留言管理等。系統(tǒng)還可提供用戶對自己發(fā)表的供求信息的刪除,收藏,以及對用戶密碼的找回,用戶信息的修改功能,可以方便用戶對自己基本信息的管理。最后系統(tǒng)自帶了一個幫助中心:購物流程介紹、用戶訂購須知等。四、需求分析1·功能圖用例圖:上圖描述了本系統(tǒng)總體上可以實現(xiàn)的各項功能。用戶信息江蘇建筑學(xué)院二手物品交易系統(tǒng)用戶信息江蘇建筑學(xué)院二手物品交易系統(tǒng)管理請求管理員用戶管理請求管理員用戶操作請求操作請求系統(tǒng)通知系統(tǒng)通知根據(jù)大學(xué)現(xiàn)在二手交易的基本情況(規(guī)模小,種類多,隨機性強,時間分布比較平均),我們定義系統(tǒng)的功能如下:系統(tǒng)為用戶提供發(fā)布各種求購或出售信息的平臺由于用戶的交易規(guī)模比較小而且用戶使用系統(tǒng)的時間有不確定性,所以系統(tǒng)不提供在線交易功能。在特定的情況下,系統(tǒng)可以提供幫助實現(xiàn)買賣雙方進行溝通的功能注冊用戶可以瀏覽系統(tǒng)保存的各種二手信息,登錄后可以發(fā)布二手信息;注冊用戶有修改自己發(fā)布的信息的權(quán)利為了防止垃圾信息①出現(xiàn),在一天內(nèi)(每天的0:00~23:59)每個用戶最多只允許發(fā)布五條信息;管理員有權(quán)刪除非法用戶②(7)正常用戶的賬戶信息發(fā)生變動時,系統(tǒng)應(yīng)將變動狀況通知用戶2·詳細(xì)功能描述0層圖:用戶信息表用戶信息表系統(tǒng)管理用戶管理用戶信息系統(tǒng)管理用戶管理用戶信息用戶管理請求管理員用戶管理請求管理員操作請求操作請求系統(tǒng)通知系統(tǒng)通知系統(tǒng)的使用者為系統(tǒng)管理員和一般用戶,用戶在系統(tǒng)注冊后生成用戶信息表文件。系統(tǒng)的功能分為兩個模塊,面向管理員的模塊功能是系統(tǒng)管理,主要是刪除系統(tǒng)非法用戶的帳號信息;面向一般用戶的模塊功能是戶信息管理和交易管理。其中,用戶信息管理包括更改用戶注冊郵箱,更改用戶密碼,更改用戶基本信息;交易管理包括出售管理,求購管理,買賣信息管理。3·系統(tǒng)管理用戶信息表用戶信息表警告用戶系統(tǒng)管理記錄表用戶警告信息刪除非法用戶刪除請求管理員搜索用戶記錄管理請求出售信息表求購信息表求購信息表警告信息警告信息管理員功能:對用戶發(fā)出警告,從用戶信息表中刪除非法用戶。這項功能只能為管理員所有。4·用戶管理:用戶登錄用戶信息管理用戶信息用戶管理用戶登錄用戶信息管理用戶信息用戶管理操作請求更改請求操作請求更改請求賬戶信息信息更改通知交易管理賬戶信息信息更改通知交易管理用戶交易通知用戶交易通知交易請求交易請求求購信息表求購信息表這個模塊實現(xiàn)了用戶請求交易,發(fā)布、更新交易信息的功能,并使用戶能夠更新自己的注冊信息以及基本信息。5·交易管理:交易管理用戶交易請求交易管理用戶交易請求搜索請求交易通知求購請求出售請求交易通知搜索請求交易通知求購請求出售請求交易通知信息更新請求信息更新請求搜索求購管理出售管理搜索求購管理出售管理消息發(fā)布買賣信息更新消息發(fā)布買賣信息更新在用戶交易管理中,根據(jù)用戶的提供的交易物品生成了“出售信息表”和“求購信息表”,用戶可以隨時對自發(fā)布的信息進行更改或刪除。在交易的過程中,系統(tǒng)會根據(jù)這兩個表生成對應(yīng)物品的求購(出售)信息目錄供用戶瀏覽參考。對于沒有明顯求購或出售目標(biāo)的用戶,也可以瀏覽由求購、出售信息表生成的求購、出售物品目錄6·出售管理出售信息描述用戶確認(rèn)出售信息用戶錄入出售信息合格出售請求用戶檢查出售信息描述用戶確認(rèn)出售信息用戶錄入出售信息合格出售請求用戶檢查出售物品信息單出售物品信息單不合格提示不合格提示出售信息表將信息錄入出售信息表不合格處理出售信息表將信息錄入出售信息表不合格處理出售物品信息用戶信息表出售物品信息用戶信息表發(fā)布出售消息發(fā)布出售消息用戶發(fā)出出售請求后,系統(tǒng)會自動檢查用戶是否已登錄。用戶錄入出售信息(包括出售物品名稱(gods),出售物品價格(sellprice),出售物品種類(category),出售物品描述(selldes),聯(lián)系電話(contactp),聯(lián)系QQ(contactq))。其中物品名稱、價格、種類為必填字段。聯(lián)系方式為電話或QQ,考慮到用戶可能不愿意留下自己的電話或QQ,我們將聯(lián)系方式設(shè)為可選字段。當(dāng)有交易請求時,系統(tǒng)通過郵箱通知用戶。經(jīng)用戶檢查錄入信息正確無誤,生成出售物品信息單。系統(tǒng)將出售信息納入出售信息表,并根據(jù)出售信息表上的內(nèi)容發(fā)布出售信息7·求購管理求購信息描述用戶確認(rèn)求購信息用戶錄入求購信息合格求購請求用戶檢查求購信息描述用戶確認(rèn)求購信息用戶錄入求購信息合格求購請求用戶檢查求購物品信息單求購物品信息單不合格提示不合格提示求購信息表將信息錄入求購信息表不合格處理求購信息表將信息錄入求購信息表不合格處理求購物品信息用戶信息表求購物品信息用戶信息表發(fā)布求購消息發(fā)布求購消息用戶發(fā)出求購請求后,系統(tǒng)會自動檢查用戶是否已登錄。用戶錄入求購信息(包括求購物品名稱(neds),求購物品價格(sbuyprice),求購物品種類(category),求購物品描述(buydes),聯(lián)系電話(contactp),聯(lián)系QQ(contactq))。其中物品名稱、價格、種類為必填字段。聯(lián)系方式為電話或QQ,考慮到用戶可能不愿意留下自己的電話或QQ,我們將聯(lián)系方式設(shè)為可選字段。當(dāng)有交易請求時,系統(tǒng)通過郵箱通知用戶。經(jīng)用戶檢查錄入信息正確無誤,生成求購物品信息單。系統(tǒng)將求購信息納入出售信息表,并根據(jù)求購信息表上的內(nèi)容發(fā)布求購信息8·買賣信息更新管理更新買賣新請求已登錄檢查用戶是否登錄更新或刪除現(xiàn)有消息用戶更新買賣新請求已登錄檢查用戶是否登錄更新或刪除現(xiàn)有消息用戶求購信息表求購信息表未登錄未登錄提示未登錄處理提示未登錄處理出售信息表出售信息表用戶可以隨時更新自己的買賣信息。9·搜索搜索請求求購信息表搜索信息匹配用戶用戶錄入搜索信息開始搜索搜索請求求購信息表搜索信息匹配用戶用戶錄入搜索信息開始搜索搜索內(nèi)容搜索內(nèi)容出售信息表出售信息表搜索結(jié)果單搜索結(jié)果單搜索結(jié)果生成搜索結(jié)果搜索結(jié)果生成搜索結(jié)果五、對性能的規(guī)定1、精度本子系統(tǒng)應(yīng)支持最大并發(fā)用戶500個,每秒事務(wù)處理數(shù)應(yīng)大于1000筆。2、時間特性要求在硬件和網(wǎng)絡(luò)條件滿足的前提下,所有日常性操作事務(wù)的平均響應(yīng)時間應(yīng)小于10秒,最長響應(yīng)時間應(yīng)小于30秒;對于查詢性事務(wù)的平均響應(yīng)時間應(yīng)小于60秒,最長響應(yīng)時間應(yīng)小于180秒。3、靈活性本項目采用.net三層架構(gòu),因此可以在不同的異構(gòu)平臺上正常運行,由于.net三層架構(gòu)的高度可擴展性,因此在需求變化和系統(tǒng)集成商具有很大的靈活性。六.數(shù)據(jù)庫設(shè)計6.1數(shù)據(jù)庫分析數(shù)據(jù)庫設(shè)計是開發(fā)應(yīng)用系統(tǒng)中一個非常重要的環(huán)節(jié)。數(shù)據(jù)庫設(shè)計應(yīng)該滿足數(shù)據(jù)的存儲需求,同時便于訪問和查詢,它既要保證數(shù)據(jù)的準(zhǔn)確和完整,又要避免過多的數(shù)據(jù)冗余。這里采用的是SQLserver2008數(shù)據(jù)庫。6.2數(shù)據(jù)表設(shè)計基于數(shù)據(jù)庫的概念設(shè)計和系統(tǒng)功能模塊的分析,設(shè)計出五個主要數(shù)據(jù)庫表。(1)管理員信息表。商品信息表記錄的是上貨商品的相關(guān)信息,見表1。(2)用戶信息表。用戶信息表記錄的是與用戶相關(guān)的信息,見表2。(3)交易單信息表。交易單信息表記錄交易的具體信息,見表3。(4)賣方信息表。賣方信息表記錄賣方信息,見表4。(5)買方信息表。買方信息表記錄買方信息,見表5。表1管理員信息表列名數(shù)據(jù)類型字段長度可否為空說明ID[int]IDENTITY——NotnullID序列號AdminNamevarchar10Notnull管理員名稱AdminUserIDint——Notnull管理員用戶ID表2用戶信息表列名數(shù)據(jù)類型字段長度可否為空說明ID[int]IDENTITY——NotnullID序列號UserNamevarchar20Notnull用戶名UserNumbervarchar20Notnull學(xué)號或者工號NickNamevarchar20Notnull昵稱Passwordvarchar20Notnull登錄密碼Sexvarchar2Notnull性別Birthdaydatetime——Notnull生日SchoolAndSpecialtyvarchar40Notnull學(xué)院專業(yè)信息E-mailInCampusvarchar——Notnull校內(nèi)郵箱Creditint——Notnull信用度LockTimeLeftdatetime——Notnull剩余鎖定時間TradingCapcityint——Notnull歷史交易數(shù)量表3交易單信息表列名數(shù)據(jù)類型字段長度可否為空說明ID[int]IDENTITY——NotnullID序列號SellerIDint——Notnull賣方IDBuyerIDint——Notnull買方IDGoodsIDint——Notnull商品信息IDSellerRemarkvarchar100Notnull賣方評價BuyerRemarkvarchar100Notnull買方評價DealTimedatetime——Notnull成交時間表4賣方信息表字段名字段類型字段長度描述出售ID(msgid)Char7主鍵用戶ID(userid)Char5出售物品名稱(gods)Char64Notnull物品類別(category)Char32Notnull期望價格(sellprice)Float18出售物品描述(selldes)Char200聯(lián)系電話(contactp)Char18聯(lián)系QQ(contactq)Char10表5買方信息表(buyer)字段名字段類型字段長度描述求購ID(msgid)Char7主鍵用戶ID(userid)Char5求購物品名稱(neds)Char64Notnull物品類別(category)Char32Notnull愿意出價(buyprice)Float18求購物品要求(buydem)Char200聯(lián)系電話(contactp)Char18聯(lián)系QQ(contactq)Char10附錄資料:不需要的可以自行刪除busybox詳解制作根文件系統(tǒng)詳解制作根文件系統(tǒng)一、FHS(FilesystemHierarchyStandard)標(biāo)準(zhǔn)介紹當(dāng)我們在linux下輸入ls
/的時候,見到的目錄結(jié)構(gòu)以及這些目錄下的內(nèi)容都大同小異,這是因為所有的linux發(fā)行版在對根文件系統(tǒng)布局上都遵循FHS標(biāo)準(zhǔn)的建議規(guī)定。該標(biāo)準(zhǔn)規(guī)定了根目錄下各個子目錄的名稱及其存放的內(nèi)容:目錄名存放的內(nèi)容/bin必備的用戶命令,例如ls、cp等/sbin必備的系統(tǒng)管理員命令,例如ifconfig、reboot等/dev設(shè)備文件,例如mtdblock0、tty1等/etc系統(tǒng)配置文件,包括啟動文件,例如inittab等/lib必要的鏈接庫,例如C鏈接庫、內(nèi)核模塊/home普通用戶主目錄/rootroot用戶主目錄/usr/bin非必備的用戶程序,例如find、du等/usr/sbin非必備的管理員程序,例如chroot、inetd等/usr/lib庫文件/var守護程序和工具程序所存放的可變,例如日志文件/proc用來提供內(nèi)核與進程信息的虛擬文件系統(tǒng),由內(nèi)核自動生成目錄下的內(nèi)容/sys用來提供內(nèi)核與設(shè)備信息的虛擬文件系統(tǒng),由內(nèi)核自動生成目錄下的內(nèi)容/mnt文件系統(tǒng)掛接點,用于臨時安裝文件系統(tǒng)/tmp臨時性的文件,重啟后將自動清除
制作根文件系統(tǒng)就是要建立以上的目錄,并在其中建立完整目錄內(nèi)容。其過程大體包括:編譯/安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄利用交叉編譯工具鏈,構(gòu)建/lib目錄手工構(gòu)建/etc目錄手工構(gòu)建最簡化的/dev目錄創(chuàng)建其它空目錄配置系統(tǒng)自動生成/proc目錄利用udev構(gòu)建完整的/dev目錄制作根文件系統(tǒng)的jffs2映像文件下面就來詳細(xì)介紹這個過程。二、編譯/安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄這些目錄下存儲的主要是常用命令的二進制文件。如果要自己編寫這幾百個常用命令的源程序,mygod,這簡直是一個噩夢!好在我們有嵌入式Linux系統(tǒng)的瑞士軍刀——busybox,事情就簡單很多。1、從/下載busybox-1.7.0.tar.bz22、tarxjvfbusybox-1.7.0.tar.bz2解包3、修改Makefile文件175ARCH
?=arm
176CROSS_COMPILE
?=arm-linux-4、makemenuconfig配置busyboxbusybox配置主要分兩部分。第一部分是BusyboxSettings,主要編譯和安裝busybox的一些選項。這里主要需要配置:1)、BuildOptions--BuildBusyBoxasastaticbinary(nosharedlibs),表示編譯busybox時,是否靜態(tài)鏈接C庫。我們選擇動態(tài)鏈接C庫。2)、InstallationOptions--Appletslinks(assoft-links)--(X)assoft-links,表示安裝busybox時,將各個命令安裝為指向busybox的軟鏈接還是硬鏈接。我們選擇軟鏈接。3)、InstallationOptions--(/work/nfs_root/fs_mini3)BusyBoxinstallationprefix,表示busybox的安裝位置。我們選擇/work/nfs_root/fs_mini34)BusyboxLibraryTuning。保留Commandlineediting以支持命令行編輯;保留Historysize以支持記憶歷史命令;選中Tabcompletion和Usernamecompletion以支持命令自動補全第二部分是Applets,他將busybox的支持的幾百個命令分門別類。我們只要在各個門類下選擇想要的命令即可。這里我們基本保持默認(rèn)設(shè)置。1)選中NetworkingUtilities--httpd下的Enable-u<user>option,以啟用http服務(wù)器的功能allowstheservertorunasaspecificuser5、編譯busyboxmake6、安裝busyboxmakeinstall安裝完成后,可以看到在/work/nfs_root/fs_mini3目錄下生成了binsbinusr/binusr/sbin目錄,其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟鏈接,而busybox本身的大小不到800K:dennis@dennis-desktop:/work/nfs_root/fs_mini3$ls
bin
linuxrc
sbin
usr
dennis@dennis-desktop:/work/nfs_root/fs_mini3$
ls-lbin
total740
lrwxrwxrwx1dennisdennis
72010-04-0323:57addgroup->busybox
lrwxrwxrwx1dennisdennis
72010-04-0323:57adduser->busybox
lrwxrwxrwx1dennisdennis
72010-04-0323:57ash->busybox
-rwxr-xr-x1dennisdennis7496322010-04-0323:57busybox
lrwxrwxrwx1dennisdennis
72010-04-0323:57cat–>busybox而普通PC機上的ls命令就有差不多80K的大小:dennis@dennis-desktop:/work/nfs_root/fs_mini3$ls-l/bin/ls
-rwxr-xr-x1rootroot780042007-09-2920:51/bin/lsbusybox以它嬌小的身軀容納了數(shù)以百計的命令代碼,實在是讓人佩服不已,其不愧嵌入式系統(tǒng)瑞士軍刀之美譽。據(jù)說,busybox的作者身患絕癥,這更讓人欽佩GNU開源軟件的作者們。三、利用交叉編譯工具鏈,構(gòu)建/lib目錄光有應(yīng)用程序(命令)是不夠的,因為應(yīng)用程序本身需要使用C庫的庫函數(shù),因此還必需制作forARM的C庫,并將其放置于/lib目錄。mygod,要自己寫C庫的源代碼嗎?不用!還記得交叉編譯工具鏈的3個組成部分嗎?交叉編譯器、forARM的C庫和二進制工具。哈哈,forARM的C庫是現(xiàn)成的,我們只需要拷貝過來就可以了。遺憾的是:整個C庫目錄下的文件總大小有26M。而我們根文件系統(tǒng)所在分區(qū)不過區(qū)區(qū)16M而已,根本放不下。怎么辦呢?dennis@dennis-desktop:/work/nfs_root/fs_mini3$du-s--si/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
26M
/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib需要C庫目錄下所有的文件嗎?no,absolutelyno!讓我們來分析一下glibc庫目錄下內(nèi)容的組成。該目錄下的子目錄和文件共分8類:目標(biāo)文件,如crtn.o,用于gcc鏈接可執(zhí)行文件libtool庫文件(.la),在鏈接庫文件時這些文件會被用到,比如他們列出了當(dāng)前庫文件所依賴的其它庫文件,程序運行時無需這些文件gconv目錄,里面是各種鏈接腳本,在編譯應(yīng)用程序時,他們用于指定程序的運行地址,各段的位置等靜態(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)鏈接的應(yīng)用程序本身并不含有它所調(diào)用的C庫函數(shù)的代碼,因此執(zhí)行時需要動態(tài)鏈接庫加載器來為它加載相應(yīng)的C庫文件,所以第6類文件是需要拷貝的。除此之外,第5類文件當(dāng)然要拷貝。但第5類文件的大小也相當(dāng)大。dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$du-c--si*.so*7.2M
total需要全部拷貝嗎?非也,非也!其實,需要哪些庫完全取決于要運行的應(yīng)用程序使用了哪些庫函數(shù)。如果我們只制作最簡單的系統(tǒng),那么我們只需要運行busybox這一個應(yīng)用程序即可。通過執(zhí)行dennis@dennis-desktop:/work/nfs_root/fs_mini3$arm-linux-readelf-abin/busybox|grep'Shared'
0x00000001(NEEDED)
Sharedlibrary:[libcrypt.so.1]
0x00000001(NEEDED)
Sharedlibrary:[libm.so.6]
0x00000001(NEEDED)
Sharedlibrary:[libc.so.6]可知:busybox只用到了3個庫:通用C庫(libc)、數(shù)學(xué)庫(libm)、加密庫(libcrypt),因此我們只需要拷貝這3個庫的庫文件即可。但是每個庫都有4個文件,4個文件都要拷貝嗎?當(dāng)然不是。dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ls-llibcrypt[.-]*
-rwxr-xr-x1dennisdennis307002008-01-2205:32libcrypt-2.3.6.so
-rw-r--r--1dennisdennis231182008-01-2205:32libcrypt.a
lrwxrwxrwx1dennisdennis
132008-12-2215:38libcrypt.so->libcrypt.so.1
lrwxrwxrwx1dennisdennis
172008-12-2215:38libcrypt.so.1->libcrypt-2.3.6.so
dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ls-llibm[.-]*
-rwxr-xr-x1dennisdennis
7790962008-01-2205:31libm-2.3.6.so
-rw-r--r--1dennisdennis11342822008-01-2205:32libm.a
lrwxrwxrwx1dennisdennis
92008-12-2215:38libm.so->libm.so.6
lrwxrwxrwx1dennisdennis
132008-12-2215:38libm.so.6->libm-2.3.6.so
dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ls-llibc[.-]*
-rwxr-xr-x1dennisdenni01-2205:48libc-2.3.6.so
-rw-r--r--1dennisdennis27682802008-01-2205:31libc.a
-rw-r--r--1dennisdennis
1952008-01-2205:34libc.so
lrwxrwxrwx1dennisdennis
132008-12-2215:38libc.so.6->libc-2.3.6.so4個文件中的.a文件是靜態(tài)庫文件,是不需要拷貝的。另外3個文件是:實際的共享鏈接庫:libLIBRARY_NAME-GLIBC_VERSION.so。當(dāng)然需要拷貝。主修訂版本的符號鏈接,指向?qū)嶋H的共享鏈接庫:libLIBRARY_NAME.so.MAJOR_REVISION_VERSION,程序一旦鏈接了特定的鏈接庫,將會參用該符號鏈接。程序啟動時,加載器在加載程序前,會檢索該文件。所以需要拷貝。與版本無關(guān)的符號鏈接,指向主修訂版本的符號連接(libc.so是唯一的例外,他是一個鏈接命令行:libLIBRARY_NAME.so,是為編譯程序時提供一個通用條目)。這些文件在程序被編譯時會被用到,但在程序運行時不會被用到,所以不必拷貝它。關(guān)于共享庫的2個符號鏈接的作用的特別說明:當(dāng)我們使用gcc
hello.c
-o
hello
-lm編譯程序時,gcc會根據(jù)-lm的指示,加頭(lib)添尾(.so)得到libm.so,從而沿著與版本無關(guān)的符號鏈接(libm.so->libm.so.6)找到libm.so.6并記錄在案(hello的ELF頭中),表示hello需要使用libm.so.6這個庫文件所代表的數(shù)學(xué)庫中的庫函數(shù)。而當(dāng)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)鏈接。可見,與版本無關(guān)的符號鏈接是供編譯器使用的,主修訂版本的符號鏈接是供動態(tài)鏈接庫加載器使用的,而實際的共享鏈接庫則是供應(yīng)用程序使用的。通過以上分析,我們只需要拷貝3個庫(每個庫各1個主修訂版本的符號鏈接和1個實際的共享鏈接庫)以及動態(tài)鏈接庫加載器(1個符號鏈接和1個實體文件)。步驟如下:dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$mkdir/work/nfs_root/fs_mini3/libdennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$cp
libcrypt-*/work/nfs_root/fs_mini3/lib
dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$cp-llibcrypt.so.*/work/nfs_root/fs_mini3/lib
dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$cp
libm-*/work/nfs_root/fs_mini3/lib
dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$cp-llibm.so.*/work/nfs_root/fs_mini3/lib
dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$cp
libc-*/work/nfs_root/fs_mini3/lib
dennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$cp-llibc.so.*/work/nfs_root/fs_mini3/libdennis@dennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$cp-lld-*/work/nfs_root/fs_mini3/lib四、手工構(gòu)建/etc目錄/etc目錄存放的是系統(tǒng)程序的主配置文件,因此需要哪些配置文件取決于要運行哪些系統(tǒng)程序。即使最小的系統(tǒng)也一定會運行1號用戶進程init,所以我們至少要手工編寫init的主配置文件inittab。busybox的inittab文件的語法、語義與傳統(tǒng)的SYSV的inittab有所不同。inittab文件中每個條目用來定義一個需要init啟動的子進程,并確定它的啟動方式,格式為<id>:<runlevel>:<action>:<process>。例如:ttySAC0::askfirst:-/bin/sh<id>表示子進程要使用的控制臺,若省略則使用與init進程一樣的控制臺<runlevel>表示運行級別,busyboxinit程序這個字段沒有意義<action>表示init進程如何控制這個子進程sysinit:系統(tǒng)啟動后最先執(zhí)行,只執(zhí)行一次,init進程等待它結(jié)束后才繼續(xù)執(zhí)行其它動作wait:系統(tǒng)執(zhí)行完sysinit條目后執(zhí)行,只執(zhí)行一次,init進程等待它結(jié)束后才繼續(xù)執(zhí)行其它動作once:系統(tǒng)執(zhí)行完wait條目后執(zhí)行,只執(zhí)行一次,init進程不等待它結(jié)束respawn:啟動完once進程后,init進程監(jiān)測發(fā)現(xiàn)子進程退出時,重新啟動它askfirst:啟動完respawn進程后,與respawn類似,不過init進程先輸出”PleasepressEntertoactivatethisconsole“,等用戶輸入回車后才啟動子進程shutdown:當(dāng)系統(tǒng)關(guān)機時restart:Busybox中配置了CONFIG_FEATURE_USE_INITAB,并且init進程接收到SIGUP信號時執(zhí)行,先重新讀取、解析/etc/inittab文件,再執(zhí)行restart程序ctrlaltdel:按下ctrl+alt+del鍵時執(zhí)行,不過在串口控制臺中無法輸入它<process>表示進程對應(yīng)的二進制文件。如果前面有-號,表示該程序是“可以與用戶進行交互的”我們制作最簡單的/etc/inittab文件,其內(nèi)容如下:::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount-a–r制作最簡單的腳本程序文件/etc/init.d/rcS,其內(nèi)容如下:#!/bin/sh
ifconfigeth07修改shell腳本文件/etc/init.d/rcS的權(quán)限,以使其可被執(zhí)行:#chmoda+x/etc/init.d/rcS五、手工構(gòu)建最簡化的/dev目錄在linux機器上,執(zhí)行l(wèi)s
/dev可看到幾百個設(shè)備文件,我需要手工創(chuàng)建它們嗎?maybe,我只需要手工創(chuàng)建幾個設(shè)備文件!我怎么知道我應(yīng)該創(chuàng)建哪幾個設(shè)備文件呢?管它呢,先看看開發(fā)板上可愛的linux的反應(yīng)再說。啟動Linux操作系統(tǒng),顯示:VFS:Mountedroot(nfsfilesystem).
Freeinginitmemory:112K
Warning:unabletoopenaninitialconsole.這說明,內(nèi)核已經(jīng)成功掛載根文件系統(tǒng),但卻未能成功啟動第1個用戶進程init。通過錯誤消息“unabletoopenaninitialconsole”搜索內(nèi)核源代碼,找到init/main.c文件。748staticintnoinlineinit_post(void)
749{
750
free_initmem();
751
unlock_kernel();
752
mark_rodata_ro();
753
system_state=SYSTEM_RUNNING;
754
numa_default_policy();
755
756
if(sys_open((constchar__user*)"/dev/console",O_RDWR,0)<0)
757
printk(KERN_WARNING"Warning:unabletoopenaninitialconsole.\n");
758
759
(void)sys_dup(0);
760
(void)sys_dup(0);
761
762
if(ramdisk_execute_command){
763
run_init_process(ramdisk_execute_command);
764
printk(KERN_WARNING"Failedtoexecute%s\n",
765
ramdisk_execute_command);
766
}
767
768
/*
769
*Wetryeachoftheseuntilonesucceeds.
770
*
771
*TheBourneshellcanbeusedinsteadofinitifweare
772
*tryingtorecoverareallybrokenmachine.
773
*/
774
if(execute_command){
775
run_init_process(execute_command);
776
printk(KERN_WARNING"Failedtoexecute%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("Noinitfound.
Trypassinginit=optiontokernel.");
785}顯然,內(nèi)核錯誤是由175行不能打開/dev/console所致。通過查看已經(jīng)安裝好的linux機器的/dev/console設(shè)備文件,可知其是字符設(shè)備文件,主設(shè)備號為5,次設(shè)備號為1:dennis@dennis-desktop:/work/nfs_root/fs_mini3/etc$ls-l/dev/console
crw-------1rootroot5,12010-04-0808:40/dev/console因此,我們使用下面的命令創(chuàng)建它:dennis@dennis-desktop:/work/nfs_root/fs_mini3/dev$sudomknodconsolec51還需要創(chuàng)建其它設(shè)備文件嗎?只有天知道!再看看linux的反應(yīng)。VFS:Mountedroot(nfsfilesystem).
Freeinginitmemory:112K
init:can'topen'/dev/null':Nosuchfileordirectory這次我們有經(jīng)驗了,如法炮制,創(chuàng)建/dev/null設(shè)備文件:dennis@dennis-desktop:/work/nfs_root/fs_mini3/dev$sudomknodnullc13再次重啟開發(fā)板上的linux,顯示VFS:Mountedroot(nfsfilesystem).
Freeinginitmemory:112K
initstarted:BusyBoxv1.7.0(2010-04-0323:53:55CST)
startingpid229,tty'':'/etc/init.d/rcS'PleasepressEntertoactivatethisconsole.
startingpid231,tty'':'/bin/sh'
#哈哈,我們成功了,終于可以K歌去了。六、創(chuàng)建其它空目錄K完歌回來,繼續(xù)戰(zhàn)斗。dennis@dennis-desktop:/work/nfs_root/fs_mini3$mkdirhomerootprocsystmpmntvar再次重啟動開發(fā)板上的linux。咦,似乎有些問題。VFS:Mountedroot(nfsfilesystem).
Freeinginitmemory:112K
initstarted:BusyBoxv1.7.0(2010-04-0323:53:55CST)
startingpid229,tty'':'/etc/init.d/rcS'PleasepressEntertoactivatethisconsole.
startingpid231,tty'':'/bin/sh'
#ps
PID
Uid
VSZStatCommand
#ps竟然看不到任何進程的存在!讓我想想。對了,ps的機制是通過查看/proc中的內(nèi)容來獲得進程信息的。那么,目前/proc里有哪些內(nèi)容呢?#ls/proc
#竟然空空如野!這可如何是好?七、配置系統(tǒng)自動生成/proc目錄其實/proc是用來提供內(nèi)核與進程信息的虛擬文件系統(tǒng),由內(nèi)核自動生成目錄下的內(nèi)容。不過需要我們設(shè)置一下,將/etc/init.d/rcS修改為:#!/bin/sh
ifconfigeth07
mount-tprocnone/proc對于mount-tprocnone/proc的解釋:通常情況下mount命令應(yīng)該寫為mount–text2/dev/hdb1/proc。但由于現(xiàn)在掛載的/proc是虛擬文件系統(tǒng),它不與任何物理硬盤分區(qū)相對應(yīng),因此在表示物理硬盤分區(qū)的位置用占位符none來表示。重啟開發(fā)板上的linux,顯示成功了:PleasepressEntertoactivatethisconsole.
startingpid232,tty'':'/bin/sh'
#ps
PID
Uid
VSZStatCommand
10
3088S
init
20
SW<[kthreadd]
30
SWN[ksoftirqd/0]
40
SW<[events/0]
50
SW<[khelper]
410
SW<[kblockd/0]
420
SW<[ksuspend_usbd]
450
SW<[khubd]
470
SW<[kseriod]
590
SW
[pdflush]
600
SW
[pdflush]
610
SW<[kswapd0]
620
SW<[aio/0]
1770
SW<[mtdblockd]
2260
SW<[rpciod/0]
2320
3092S
-sh
2330
3092R
ps
#八、利用udev構(gòu)建完整的/dev目錄高興地插入U盤,內(nèi)核顯示識別到了U盤:#usb1-1:newfullspeedUSBdeviceusings3c2410-ohciandaddress2
usb1-1:notrunningattopspeed;connecttoahighspeedhub
usb1-1:configuration#1chosenfrom1choice
scsi0:SCSIemulationforUSBMassStoragedevices
scsi0:0:0:0:Direct-Access
Teclast
CoolFlash
0.00PQ:0ANSI:2
sd0:0:0:0:[sda]12560384512-bytehardwaresectors(6431MB)
sd0:0:0:0:[sda]WriteProtectisoff
sd0:0:0:0:[sda]Assumingdrivecache:writethrough
sd0:0:0:0:[sda]12560384512-bytehardwaresectors(6431MB)
sd0:0:0:0:[sda]WriteProtectisoff
sd0:0:0:0:[sda]
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國強力文件夾數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國小家電塑料模具數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國實木歐式餐臺數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國咖啡色高鋁瓷數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國反光藍背心數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國半自動彩瓦成型機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國光學(xué)尺數(shù)顯系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國倒車?yán)走_用貼片中周數(shù)據(jù)監(jiān)測研究報告
- 通過2024年無人機駕駛員執(zhí)照考試的試題及答案
- 模具設(shè)計師資格認(rèn)證試題及答案全集合
- 2024年藥學(xué)服務(wù)技能大賽(省賽)備考試題庫(含答案)
- 《化工園區(qū)有毒有害氣體環(huán)境預(yù)警體系技術(shù)規(guī)范》
- 2.2.3 茶會場地布置
- 第10課和諧校園共同維護(課件)-【中職專用】高一思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- MOOC 音樂與科學(xué)-南京郵電大學(xué) 中國大學(xué)慕課答案
- 初中地理實驗設(shè)計案例
- 《調(diào)相機運行規(guī)程》
- 施工現(xiàn)場一級動火作業(yè)審批表
- 污水管網(wǎng)巡查及養(yǎng)護投標(biāo)方案(技術(shù)標(biāo))
- 腫瘤患者延續(xù)護理
- 《長方體和正方體的展開圖》-課件
評論
0/150
提交評論