亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1085 | 回復: 0
打印 上一主題 下一主題

嵌入式Linux系統(tǒng)小型化技術(shù) [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-03-25 21:44 |只看該作者 |倒序瀏覽




嵌入式Linux系統(tǒng)小型化技術(shù)
[日期:2006-1-7]
來源:21IC中國電子網(wǎng)  作者:張俊玲 趙暉

作者Email:
zhh@httc.cn
介紹了Linux在嵌入式領(lǐng)域中的應用和宿主機、目標機開發(fā)模式,詳細地給出了精簡內(nèi)核的實現(xiàn)過程。分析了glibc系統(tǒng)庫和ELF文件格式的結(jié)構(gòu)和其中的共享庫裁剪技術(shù)的原理,提出并實現(xiàn)了一種庫裁剪方案。
關(guān)鍵詞 嵌入式;Linux;小型化
一、        概述
嵌入式Linux一般是指對標準Linux發(fā)行版本進行小型化裁剪處理之后,適合于特定嵌入式應用場合的專用Linux操作系統(tǒng)。嵌入式系統(tǒng)通常是資源受限的系統(tǒng),無論是處理器計算能力還是RAM或其他存儲器容量都比較“小”。因此,如何創(chuàng)建一個小型化的Linux作為操作系統(tǒng)開發(fā)成為首先需要考慮的問題。嵌入式Linux系統(tǒng)中普遍采用三層結(jié)構(gòu):核心層主要是Linux內(nèi)核和模塊;調(diào)用接口層是以glibc庫為主的系統(tǒng)庫;應用層是根據(jù)用戶需求設(shè)計的應用程序。為了實現(xiàn)資源的高利用率,后兩層都以ELF文件形式存在,在運行過程中對外部功能代碼動態(tài)加載。
一般來說,建立交叉平臺開發(fā)環(huán)境是進行嵌入式軟件開發(fā)的第一步。宿主機與目標機硬件平臺的異構(gòu)(處理器體系結(jié)構(gòu)不同)是采用交叉開發(fā)的根本原因。另外,由于資源有限,直接在嵌入式系統(tǒng)的硬件平臺上開發(fā)軟件不方便、甚至不可能。因此,通常采用Host/Target開發(fā)模式,如表l。

宿主機(Host)
目標機(Target)
硬件
PC 或者工作站,其中x86CPU占優(yōu)勢
嵌入式系統(tǒng)硬件,處理器多樣化(x86,ARM,PowerPC,MIPS,68K等)
軟件
Windows、Linux等桌面操作系統(tǒng),豐富的集成開發(fā)環(huán)境(如WindRiver 的Tornado)
軟件資源有限,開發(fā)階段通常從宿主機下載
表1   交叉平臺發(fā)環(huán)境的特點
交叉平臺開發(fā)環(huán)境包括交叉編譯器、交叉調(diào)試器和系統(tǒng)仿真器,比如嵌入式Linux開發(fā)經(jīng)常用的GNU工具鏈。開發(fā)者需要根據(jù)目標平臺來選擇合適的GNU交叉編譯器,然后在宿主機上面重新編譯內(nèi)核和其他軟件,這樣得到的目標代碼才能拿到目標機上面運行。這個過程相當繁瑣且容易出錯。宿主機和目標機一般通過以太網(wǎng)或者串口連接。目前,世界上出現(xiàn)了數(shù)以百計的嵌入式Linux開發(fā)計劃和發(fā)行版本,比如:ETLinux,LPR,μC-Linux,ThinLinux等開發(fā)源代碼的項目,如表2所示。
名稱
特點
ETLinux
設(shè)計用于在小型工業(yè)計算機,尤其足PC/104模塊上運行
Linux
Router
Project
LPR 的目標是用于路由器、接入服務(wù)器、瘦服務(wù)器等網(wǎng)絡(luò)沒備和嵌入式系統(tǒng),可以安裝在一張軟盤上。類似的項目還有Linux On A Floppy(LOAF)
μC-Linux
在沒有MMU 的系統(tǒng)L運行的Linux。同前支持Motorola DragonBall (M68EZ328), M68328,M68EN322, ColdFire, QUICC, ARM7TDMI,MC68EN302,Axis ETRAX,Inte]i960,PRISMA,Atari 68k等微處理器
ThinLinux
一個為嵌入式和特定應用制作的Linux發(fā)行版,運行在Intel和PC兼容硬件上
表2  幾種開放源代碼的嵌入式Linux發(fā)行版
另外,還有:Coventive XLinux,LineoEmbedix,LynuxWorks BlueCat,MontaVista Linux等商業(yè)公司的發(fā)行版。同時,針對實時環(huán)境,有RT-Linux、RTAI等實時擴展。近年來,越來越多的目標系統(tǒng)選擇了性價比不斷提高的x86處理器和成熟的PC架構(gòu)作為硬件平臺。LinuxDevices.com網(wǎng)站進行的調(diào)查顯示,嵌入式系統(tǒng)開發(fā)者在過去2年和未來2年選擇x86處理器作為目標平臺的比例分別為3l%和35%,高居首位。
對于宿主機和目標機都是PC兼容平臺的開發(fā)者來說,除了沿用上述模式之外,有更簡單的創(chuàng)建小型化Linux系統(tǒng)的方法:以一個常規(guī)的Linux發(fā)行版為基礎(chǔ),編譯內(nèi)核、復制所需的文件,并利用初始化RAM盤(initrd:INITial Ram Disk)機制創(chuàng)建根文件系統(tǒng),就可以快速實現(xiàn)一個小型化Linux系統(tǒng)。
二、        小型化技術(shù)
Linux已經(jīng)越來越廣泛地應用于各種嵌入式設(shè)備中。但是一般的Linux發(fā)行版都非常龐大,很難用于只有有限存儲空間的嵌入式設(shè)備。所以我們必須對Linux系統(tǒng)進行裁剪。Linux系統(tǒng)大致有以下4種主要的裁剪技術(shù),使用這些技術(shù)可以有效地減小系統(tǒng)的尺寸且不會影響系統(tǒng)的性能。① 刪除冗余文件。一般的Linux發(fā)行版中都包含很多幫助文檔、輔助程序、配置文件和數(shù)據(jù)模板,在嵌入式系統(tǒng)中這些文件都是不必要的,完全可以刪除。甚至連配置文件中的大量注釋也都可以被去掉。② 共享庫裁剪。嵌入式系統(tǒng)的應用程序是有限的,共享庫中就可能有很多永遠不會被用到的冗余代碼,這些代碼就可以被刪除。③ 采用具有同樣功能的替代軟件包。Linux上有許多具有相似功能的軟件包,可以選擇其中占存儲空間較小的軟件包并其移植到嵌入式設(shè)備上,用來代替原來占空間較大那些的軟件包。④ 修改源碼。包括重新配置、編譯軟件包,去掉不需要的功能;增加軟件的模塊性,從而有利于提高裁剪效率;重新配置內(nèi)核,去掉不需要的驅(qū)動和模塊。
1、精簡內(nèi)核
與傳統(tǒng)嵌入式操作系統(tǒng)的微內(nèi)核(Micro-kerne1)體系結(jié)構(gòu)不同,Linux內(nèi)核采用的是整體式結(jié)構(gòu)(Monolithic),整個內(nèi)核是一個單獨的、非常大的程序。其優(yōu)點是能夠使系統(tǒng)的各個部分直接溝通,有效地縮短任務(wù)之間的切換時間,提高系統(tǒng)響應速度。缺點也是明顯的,即內(nèi)核尺寸比較大,因為Linux內(nèi)核不僅包括如任務(wù)調(diào)度、內(nèi)存管理、中斷處理等基本的操作系統(tǒng)功能,同時還包括文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議、沒備驅(qū)動程序等功能。
Linux內(nèi)核是高度模塊化、可配置的,通過配置使內(nèi)核具有不同的功能,從而減小內(nèi)核的大小。例如,Linux支持的文件系統(tǒng)種類很多,包括ext2、ext3、FAT、Reiserfs、JFS等?梢愿鶕(jù)實際情況選擇所需的文件系統(tǒng),比如僅僅把ext2文件系統(tǒng)編譯進內(nèi)核。編譯內(nèi)核的主要步驟如下(“#”代表命令提示符):
                  # cd/usr/src/1inux-2.4
# make menuconfig
# make dep;make clean;make bzlmage
編譯成功的內(nèi)核文件為arch/i386/boot/bzlmage。具體方法參考內(nèi)核源代碼包中的README文件。為了進一步增加靈活性、減小內(nèi)核尺寸,Linux還提供了可加載內(nèi)核模塊機制,內(nèi)核中的很多功能可以編譯為模塊,在內(nèi)核運行時動態(tài)加載,而不是直接編譯進內(nèi)核。然而在嵌入式Linux系統(tǒng)中更傾向于根據(jù)需要編譯一個獨立的內(nèi)核,較少使用模塊機制。這樣得到的內(nèi)核通常在幾百kB甚至1MB左右,相對傳統(tǒng)的嵌入式操作系統(tǒng)內(nèi)核來說是比較大的(比如包含文件系統(tǒng)和網(wǎng)絡(luò)支持的VxWorks內(nèi)核大約250kB)。在進行內(nèi)核配置時,開發(fā)者要比較了解各功能模塊之間的依賴關(guān)系,否則有可能造成編譯失敗。而在VxWorks內(nèi)核的配置過程中,如果破壞了依賴關(guān)系,有比較明確的指示,從而避免這種錯誤。
2、共享庫裁剪
在小型化技術(shù)中,共享庫裁剪容易用軟件實現(xiàn),做成自動裁剪工具,效果最明顯。下面重點介紹共享庫小型化技術(shù),共享庫小型化的基本思想是通過提取和解析系統(tǒng)庫內(nèi)目標文件、符號的依賴關(guān)系,通過對這些依賴構(gòu)造關(guān)系模型進行關(guān)系演算,根據(jù)應用程序中的符號信息,在庫目標文件一級實現(xiàn)系統(tǒng)庫的小型化.實現(xiàn)上分為四步:a、確定待調(diào)函數(shù)集。在ELF文件內(nèi)部,存在一個Elf32-Sym 數(shù)組結(jié)構(gòu)的符號表,用于內(nèi)部符號定義和外部符號引用,通過對這個符號表的分析可以將ELF應用程序中待調(diào)符號(系統(tǒng)函數(shù))抽取出來,從而建立一個應用程序-待調(diào)函數(shù)符號的多對多關(guān)系。b、確定系統(tǒng)庫函數(shù)與目標文件的對應關(guān)系。系統(tǒng)庫邏輯上分成:庫、目標文件、符號三個層次,庫和目標文件都是ELF格式,通過對庫的映像文件*_pic.a和每個目標文件中的符號表分析得到庫。目標文件的定義關(guān)系、目標文件-符號定義關(guān)系和目標文件-符號調(diào)用關(guān)系。c、確定系統(tǒng)庫目標文件之間的相互依賴關(guān)系。通過對步驟b中相關(guān)關(guān)系的關(guān)系演算得到目標文件-目標文件的完全依賴關(guān)系。d、生成小型化系統(tǒng)庫。通過對應用程序-待調(diào)符號表和目標文件-目標文件依賴表的關(guān)系演算得到待調(diào)函數(shù)所依賴的目標文件集合,將它們進行重新鏈接即可得到最小化的庫文件。
2.1、共享庫裁剪技術(shù)的原理
共享庫中保存著預先編譯好的目標代碼,一般是被應用程序反復使用的公用代碼。在Linux系統(tǒng)中,應用程序與庫之間可以靜態(tài)鏈接或動態(tài)鏈接。靜態(tài)鏈接時,鏈接器從庫中選取應用程序需要的代碼,然后復制到生成的可執(zhí)行文件中。顯然,當靜態(tài)庫被多個程序使用時,磁盤上、內(nèi)存中都是多份冗余拷貝。動態(tài)鏈接時,鏈接器并不真的把庫代碼復制到可執(zhí)行文件中;僅當可執(zhí)行文件運行時,加載器才檢查該庫是否已經(jīng)被其它可執(zhí)行文件加載進內(nèi)存,如果內(nèi)存中不存在才從磁盤上加載該庫。這樣多個應用程序就可以共享庫中的代碼的同一份拷貝,節(jié)約了存儲空間。這也是嵌入式Linux系統(tǒng)使用共享庫的主要原因。
當使用靜態(tài)鏈接庫時,鏈接器會自動地只把庫中被使用的模塊鏈接到可執(zhí)行文件中。但是這種方法沒有用在共享庫中,主要是因為在應用程序執(zhí)行之前鏈接器并不知道應用程序最終用到了庫中的哪些部分。因此要對共享庫進行裁剪必須先分析動態(tài)鏈接的原理。
共享庫和可執(zhí)行文件中都有若干個符號表,其中定義了一些外部符號,分為導出(export)符號和導入(import)符號這兩種。導出符號是指在該文件中定義但可以被其它文件使用的符號,一般是可以由其它文件調(diào)用的函數(shù);導入符號是指被該文件使用了但并沒有定義的符號,一般是被該文件調(diào)用的函數(shù),而且導入符號一般指明了定義該符號的共享庫。加載器在加載可執(zhí)行文件或共享庫之前會先遍歷它的每個導入符號,檢查該符號的相關(guān)代碼是否已在內(nèi)存中,否則先查找并加載定義該符號的共享庫。由于嵌入式Linux系統(tǒng)中的應用程序和共享庫一般都是確定的,共享庫中就可能存在永遠不會被別的文件調(diào)用到的導出符號,將這些符號的相應代碼從共享庫中刪除不會影響到系統(tǒng)的正常運行。
現(xiàn)有裁剪技術(shù)都是以上述原理實現(xiàn)的。下面則具體分析它的實現(xiàn)方法。
2.2、ELF文件符號提取
ELF格式是UNIX實驗室作為應用程序二進制接口而開發(fā)和發(fā)布的,ELF是目前廣泛應用于Linux系統(tǒng)中的一種文件格式。
2.2.1、 ELF文件進程映像加載
ELF文件開頭部分是一個ELF Header結(jié)構(gòu),它包含兩個指針,分別指向兩個數(shù)組結(jié)構(gòu):Program header table和Section   header
table,Program header table中的數(shù)組元素對文件內(nèi)部的可執(zhí)行代碼段進行定位;Section header table中的數(shù)組元素保存相關(guān)重定位和動態(tài)鏈接信息.裝載器通過控制這兩類數(shù)組實現(xiàn)進程映像的加載。
2.2.2、 ELF文件的符號表和重定位過程
ELF文件的Section header table中有一個類型為SHT_DYNSYM的Section,該Section記錄了創(chuàng)建進程映像所需要的所有符號。
a、符號值確定和符號定位,ELF文件中字符串ection(.shstrtab)用于保存所有字符串,ELF頭通過e­_shstrndx域保存節(jié)頭名字字符串表(.shstrtab)的節(jié)索引。ELF文件中符號名字域值是.shstrtab節(jié)的一個字符索引:Syrnbol結(jié)構(gòu)中St_name對應相應的字符串表一個索引,在相應的字符串表中對應其符號值,St_value對應兩類不同地址:對于文件內(nèi)部定義符號,對應該符號內(nèi)容的文件內(nèi)部相對地址;對于外部調(diào)用符號,對應待調(diào)符號的地址(已解析)或重定位表中的一個入口(未解析)。St_info保存符號的類型和相應的屬性。
b、被調(diào)符號重定位。符號表中,STT-SEC-TION對應重定位入口信息表。重定位入口以數(shù)組的形式存在于ELF文件中,其中的R_offset保存著應用于重定位行為的地址,而R_addend對應一個偏移用于計算要存儲于重定位域中的值。R_info中給出受重定位影響的符號索引和重定位應用的類型。例如:當類型為R_386_JMP_SLOT時,符號值就對應一個.plt(過程連接表)入口的位置.
c、外部符號裝載。對于外部符號代碼的裝載,裝載器通過lazy MODE裝載方式將外部符號代碼加載到進程映像中:首次調(diào)用外部符號通過PLT[0]中的裝載代碼和PLT[1]中出棧參數(shù)將待調(diào)符號代碼加載到.got表中;以后對此待調(diào)符號的調(diào)用通過對應.got表入口進行控制傳輸。
2.2.3、 ELF文件符號提取實現(xiàn)
對每個參與動態(tài)鏈接的共享目標文件來說,其程序頭表(Program header table)有一個類型為PT_DYNAMIC的入口元素。該入口所指向的段.dynamic section是一個Elf32_Dyn的結(jié)構(gòu)數(shù)組.Elf32_Dyn結(jié)構(gòu)中有一個屬性標志d_tag和一個聯(lián)合結(jié)構(gòu)d_un,d_tag控制d_un中的解釋。數(shù)組中下標為DT_SYMTAB的入口指向符號表。通過對符號表、重定位表、過程連接表、全局過程表的相關(guān)控制結(jié)構(gòu)進行分析,完成文件定義符號和待調(diào)符號的分離提取,算法如下:
symtab=.dynamic[DT_SYMTAB]->d_un. d->ptr
∥根據(jù)DT_SYMTAB找到符號表的地址
for(int i=0;symtab!=NULL;i++)
∥對符號表中所有入口進行掃描
{swith((symtab ->st_info)>>4) ∥根據(jù)符號類型進行操作
}…
case STB_WEAK:
case STB_GLOBOL:/*對全局性的和弱符號可用于外部文件調(diào)用*/
if(對應入口指向過程連接表入口)/*如果其指向的地址為.plt入口則在創(chuàng)建進程映像的時候需要重定位*/
loadrequest(symtab->st_name);/*重定位并將該符號的名字在字符表找到relocate(symtab->st_value)相應的值,并將其名字放人相應的關(guān)系表*/
else
loadprovide(symtab->st_name);/*如果是內(nèi)部定義,那么此符號名是供其它的應用程序調(diào)用*/
… }}
ELF文件中定義符號和待調(diào)符號由其st_value所指的目標進行區(qū)分:對應于.plt表的待調(diào)符號需要重定位;對應于內(nèi)部符號,如果是弱類型(WEAK)或全局類型(GL0BOL)則用于其它文件調(diào)用。通過對ELF格式中的待調(diào)符號的提取,建立起應用程序和符號的依賴關(guān)系。
2.3、嵌入式系統(tǒng)小型化結(jié)果與分析
對各個表進行連接得到應用程序依賴的目標文件集合。將集合中的目標文件無重復記錄并重新連接從而得到最小化庫。前后庫中各數(shù)據(jù)對比見表3。小型化后,系統(tǒng)庫內(nèi)各組成部分顯著減少,庫被縮減近50%。對于日益龐大的嵌入式系統(tǒng)中的應用程序,根據(jù)庫文件內(nèi)部的依賴關(guān)系,在其基礎(chǔ)上對應用程序進行優(yōu)化裁減,對一般性應用可以使系統(tǒng)庫減小40%~50%。

小型化前
小型化后
目標文件(個)
1183
544
符號(個)
9118
4861
顯性依賴(條)
3819
1887
間接依賴(條)
120273
55425
庫大小
1242480byte
685032byte
表3   系統(tǒng)庫小型化前后對照
三、        結(jié)束語
近年來嵌入式Linux技術(shù)迅速發(fā)展,各種商業(yè)和開放源碼的Linux發(fā)行版為不同的硬件平臺、不同的應用環(huán)境提供了多種選擇。Linux的文件系統(tǒng)事實上非常的龐大。構(gòu)造一個嵌入式的Linux文件系統(tǒng)是一個很復雜的過程。如何讓文件系統(tǒng)在保證安全的前提下精簡得更緊湊、運行得更有效率,是需要深入探索的一個課題。特別是,共享庫裁剪技術(shù)能將庫中大部分冗余代碼裁剪掉,但要求庫的源碼編寫比較規(guī)范,不同體系結(jié)構(gòu)需要有不同的處理等。但畢竟庫裁剪領(lǐng)域才發(fā)展不久,還不是很成熟。經(jīng)過對該技術(shù)長時間的測試,相信我們能夠彌補它的不足,使它能夠在嵌入式Linux領(lǐng)域廣泛使用。通過以上方法,我們構(gòu)造了一個精簡的嵌入式版本的Linux文件系統(tǒng),它使得內(nèi)核在系統(tǒng)盡量精簡的情況下能夠運行起來.并滿足產(chǎn)品和系統(tǒng)各方面的要求。

卓越網(wǎng)上書城 linux 及計算機 相關(guān)圖書

鳥哥的Linux私房菜基礎(chǔ)學習篇(第二版)
市場價: ¥65
卓越價: ¥48.3
VIP價: ¥47.4


Linux程序設(shè)計(第3版)
市場價: ¥89
卓越價: ¥64.9
VIP價: ¥64.9

 

LINUX 指令速查手冊
市場價: ¥45
卓越價: ¥33.7
VIP價: ¥33.7


Linux Kernel Module及TCP/IP程序設(shè)計(附盤)
市場價: ¥35
卓越價: ¥26.8
VIP價: ¥26.8


Linux命令、編輯器與Shell編程
市場價: ¥98
卓越價: ¥72.8
VIP價: ¥70.7

 

Red Hat Enterprise Linux 4.0系統(tǒng)配置與管理
市場價: ¥46
卓越價: ¥34.4
VIP價: ¥34.4

 


Java網(wǎng)絡(luò)編程精解
市場價: ¥55
卓越價: ¥41.2
VIP價: ¥41.2

 

Effective C++中文版(第3版改善程序與設(shè)計的55個具體做法)
市場價: ¥58
卓越價: ¥43.4
VIP價: ¥43.4

 


算法導論(原書第2版)
市場價: ¥85
卓越價: ¥63.2
VIP價: ¥63.6

 

C#2005 &.NET 3.0高級編程(第5版)上下卷(第一本面向.NET 3.0的C#經(jīng)典名著!)
市場價: ¥158
卓越價: ¥118.3
VIP價: ¥114.8

 

PHP和MySQL Web開發(fā)(附光盤原書第3版)/開發(fā)人員專業(yè)技術(shù)叢書
市場價: ¥78
卓越價: ¥56.5
VIP價: ¥57

 


PHOTOSHOP CS/CS2 WOW!BOOK
市場價: ¥138
卓越價: ¥104.1
VIP價: ¥104.8


====================================================


[/url]
[url=http://www.amazon.cn/?source=yjx2003]

====================================================
訂閱免費電子雜志〈名人傳記〉
  
你是否希望方便快捷的搜集資料信息,電子版圖書?
希望您訂閱這份免費的電子期刊《名人傳記》,它可以把精心篩選的電子版圖書送到你的手里。
如果積累了大量的信息資產(chǎn),擁有了強大的信息搜集能力,會促進您的事業(yè)的發(fā)展,生活質(zhì)量的提高。
本刊創(chuàng)刊6年以來,已經(jīng)擁有5萬用戶,受到讀者的好評,很多讀者也把自己的電子書貢獻出來,和大家分享。
這份期刊是免費的,而且可以方便的退訂,你的郵箱信息是安全,只用作接收本刊,不會用作他用。
訂閱方法
1 郵件訂閱方式向下面的郵件地址發(fā)一封信,郵件正文(不是標題)填寫subscribe zhuanji
郵件地址
[email=%20bentium@list.cn99.com]mailto: bentium@list.cn99.com[/email]

2.主頁訂閱  
http://list.cn99.com/cgi-bin/getlsts?listname=zhuanji
每期發(fā)送電子圖書,廣讀博覽融匯貫通。閱讀電子書時,請注意保護視力。╭○═○╮╭◎═◎╮╭●═●╮同步發(fā)行《名人傳記簡裝版》簡裝版只包含附件聯(lián)接地址,大小控制在80k以內(nèi)。同時發(fā)送《熱點》《卓越?贰

===============================================================
馬二進三名人傳記搏客 yjx2003.cublog.cn

向潛規(guī)則低頭


圖書


計算機基礎(chǔ)應用


思路


雜文


linux


c++ builder


VB.NET


tinyOS and eclipse

發(fā)表你對本文的評論,這篇文章是否對你有用,給我一些建議,希望訂閱我的期刊!!!!

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/22170/showart_508151.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP