《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 最小Linux系統制作例程
最小Linux系統制作例程
嵌入式在線
摘要: 最小Linux系統制作例程,一,什么是BabyLinuxBabyLinux不是一個完整的發行版,他是利用原有的一套完整的linux系統的內核原代碼和編譯工具,利用busybox內建的強大功能,在一張軟盤上做的一個很小的linux系統.他具備一個linux系統的基本特征,
Abstract:
Key words :

一,什么是BabyLinux

  BabyLinux不是一個完整的發行版,他是利用原有的一套完整的linux系統的內核原代碼和編譯工具,利用busybox內建的強大功能,在一張軟盤上做的一個很小的linux系統.他具備一個linux系統的基本特征,支持linux系統最常用的一百多個命令,支持多種文件系統,支持網絡等等,你可以把他當做一張linux起動盤和修復盤來用,你也可以把他當做一個靜態路由的路由器軟件,當然,你也可以把他當做一個linux玩具,向你的朋友炫耀 linux可以做的多么小.我把他叫做BabyLinux因為他很小巧,小的很可愛,像一個剛剛出生的小baby.

  二,為什么要作這樣一個linux

  先說說我一開始的想法,當我一開始接觸linux的時候,看到書上說,linux通常安裝只需要60M左右的空間,但是我發現裝在我硬盤上的Redhat 6.0確要占據好幾百M的空間.為什么我的linux這么大呢? 后來我發現,裝在我機器上的那么多東西只有不到30%是我平時常用的,還有30%是我極少用到的,另外的40%基本上是不用的.于是,我和大多數初學者一樣,開始抱怨,為什么linux不能做的精簡一點呢?于是,我萌發了自己裁減系統的想法.可惜那個時候我還沒有聽說過有LFS和Debain.等到我積累了足夠的linux知識后,我開始制作這樣一個小系統.

  制作這樣一個小系統最大的意義在于,你可以通過制作系統了解linux的啟動過程,學會ramdisk的使用,讓你在短時間內學到更多的linux知識. 當然,你會得到很大的樂趣.這個項目只是做一個具有基本特征的linux系統,如果你想自己做一個具有完整功能的linux,請閱讀Linux From Scratch (LFS)文檔.

  三,什么人適合讀這篇文檔

  如果你是一個linux愛好者,并且很想了解linux的啟動過程和系統的基本結構,而且是一個喜歡動手研究小玩意的人,那么這個文檔可以滿足你的需求. 如果你僅僅是用linux來做一些普通的日常工作,而不在乎你的linux到底怎么工作,那么這份文檔也許不太適合你.另外,如果你是linux愛好者, 但是目前還是一個剛剛入門的newbi,我建議你先把linux命令學好.不過我想我會盡可能的把這份文檔寫詳細一些,如果你有足夠的毅力,或許一個 newbi也能成功做一個babylinux.或者,你遇到一件很不巧的事情,比如你的老婆來例假了,你的這個周末就泡湯了,那么閱讀這篇文檔并做一個 linux小玩具可以打發你的時間.

  四,應該具備的知識

  在做一個babylinux之前,你應當已經會應用linux最常用的命令.并且至少有一次成功編譯并安裝系統內核的經歷,會通過編譯源代碼來安裝軟件. 如果你具備了這些條件,那么做這樣一個小系統會很順利,如果你還沒有掌握這些知識,你可能會遇到一些困難.但是只要有毅力,也可以成功.你不需要具備編程的知識,因為我的目標是:讓具有中等以上linux水平的愛好者可以通過閱讀文檔輕松完成這個項目.關于一張軟盤上的linux還有一個很著名的 linux叫LOAP (Linux On A

  Floppy) 但是他是由比較專業的人員需要編寫很多程序完成的.而且沒有關于他制作過程的文檔.

  五,linux系統引導過程簡介

  首先,主板的BIOS會讀取硬盤的主引導記錄(MBR),MBR中存放的是一段很小的程序,他的功能是從硬盤讀取操作系統核心文件并運行,因為這個小程序太小了,因此通常這個小程序不具備直接引導系統內核的能力,他先去引導另一個稍微大一點的小程序,再由這個大一點的小程序去引導系統內核.在linux系統中這樣的小程序有LILO和GRUB.在這個項目中,我決定用LILO來做系統引導程序.在軟盤上啟動linux系統的過程和在硬盤上啟動的過程相似.

  Linux系統內核被引導程序裝入內核并運行后,linux內核會檢測系統中的各種硬件.并做好各種硬件的初始化工作,使他們在系統正式運行后能正常工作.之后內核做的最后一個工作是運行

  /sbin 下的init程序,init是英文單詞initialization(初始化)的簡稱,init程序的工作是讀取/etc/inittab文件中描述的指令,對系統的各種軟硬件環境做最初化設定.最后運行mingetty等待用戶輸入用戶名登錄系統.所有的工作就這么簡單,雖然linux啟動的時候有很多內容,看上去十分高深,但是都不過是對這個過程的擴充.明白了這個道理,你可以寫一些腳本程序讓他在系統啟動的特定時間運行完成任務.事實上系統內核并不關心/sbin下的init是不是真的init,只要是放在/sbin下名叫init的可執行程序他都可以執行.可以做以下實驗:

  編寫一個非常簡單的C程序:

  main()

  {

  printf(“hello,world!n”);

  }

  保存后以init.c保存他,并用gcc編譯.

  #gcc –-static -o init init.c

  這里的--static 參數告訴gcc把這個程序靜態聯接,這樣這個程序不倚賴任何庫就能運行.把編譯好的init程序拷貝到/sbin下,備份好原來的那個.重新啟動系統最后系統的輸出結果是: hello,world!

  然后停在那里.做這個實驗以前先確定你知道如何把系統恢復到原來的狀態,有一個簡單的方法,在內核啟動前給他加上init=參數,比如你原先的init被你改成了init.bak 只要在啟動的時候給內核加上init=/sbin/init.bak就可以用原來的init程序啟動系統.

  做完以上實驗,就明白了內核和init程序之間的關系.此外,init程序不一定是一個二進制可執行程序,他可以是一個bash腳本,一個指向另一個程序的聯接,他的位置也并不一定要在/sbin下,只要在啟動內核時,給內核加上init參數就能被運行,比如,開始時給內核加上init= /bin/bash參數,內核在最后一步就直接運行bash給出提示符,不用登錄系統就可以輸入命令了.其功能類似單用戶模式啟動系統. /sbin/init 程序只是內核默認運行的第一個程序.六,編譯一個linux系統內核

 

  1,編譯前的規劃和準備

  在編譯內核前,請先確定你的需求,把你的需求羅列成一張詳細的表格.你需要讓內核支持什么硬件,支持多少種分區類型和文件系統,支持哪些網卡,支持哪些網絡協議.等等.請盡可能詳細的羅列這些內容,但是你也不要太貪心,因為你所有能利用的空間只有1440K,如果你編譯出一個大于1440K或很接近這個數字的內核,你的這個項目就不能完成了,你已經沒有空間再放ramdisk映象文件,除非你原意再多出一張軟盤,做一個兩張軟盤的小linux系統.對于聲卡驅動之類,我勸你還是放棄吧,因為一個聲卡驅動也許只讓你的內核增大了十多K,但是你有了一個聲卡驅動就務必要有一個播放器吧,否則聲卡驅動就沒有意義,可一個播放器的大小可不是一張軟盤可以裝得下的.在我先前制作的babylinux內核有900多K,其中,文件系統部分站了大部分,因為我的目標是把他做成一個系統修復盤.因此我在內核中編譯7種文件系統的支持,每減少一個文件系統就可以減小幾十甚至200多K的內核大小.越是復雜,越是安全的文件系統,其支持模塊也越大,比如在linux下FAT模塊只有32K,VFAT只有17K,但是ext3的模塊就有86K,JFS達到216K, reiserfs模塊是224K,可以想像,編譯一個支持7個文件系統的900多K的內核,文件系統部分就占了600K以上的空間,所以如果某一個文件系統是你根本不用的,那么還是不要編譯進內核把,這樣至少可以省下100多K的空間.對于其他的驅動,比如網卡,通常大小只有8,9K,最大的也不過10多 K,因此可以把常用的網卡芯片的驅動都編譯進去.另外如果你想讓你的babylinux支持U盤,那么scsi的驅動模塊也是不可小看的,他通常要接近 150K,因為U盤是被當做scsi設備來驅動的.另外你還需要讓你的內核支持即插即用,這些都是不小的空間開銷,我的建議是你放棄一兩個你不用的文件系統.總之,你最后編譯出來的內核大小最好不要超過900K,否則你在busybox里只能編譯進去很少的命令.

  在我編譯的busybox中,我編譯進去120多個命令,基本上把busybox支持的命令都包括進去了.加上小系統所必需的文件系統目錄,/dev下的設備文件,以及/etc下幾個必需的配置文件,做成ramdisk壓縮后的大小是440多K, 加上900K左右的內核剛好可以放入一張1440K軟盤,請注意,你應該留下至少50K的空間,因為我們要在軟盤上創建一個ext2文件系統,而文件系統本生需要占據大概25K的磁盤空間.另外lilo的引導文件boot.b的大小是5.7K,還有裝上lilo后自動產生的map文件也要10多K的空間, map文件的具體大小由內核安裝的實際大小決定,通常不會超過30K.

  綜上所述,請遵循下面的公式:

  內核大小+文件系統壓縮印象文件+50K <= 1440K

  另外一點需要說明的是:以上所羅列的文件系統模塊大小是察看我現在使用的Redhat 9 的

  /lib/modules下的模塊文件得到的,實際編譯進內核大小會小一點,因為我們用make bzImage

  在內核源代碼目錄樹下生成的內核是經過壓縮過的.

  如果你對以上說的內容不太明白也沒有關系,我會在下面的內容中做詳細的說明.

  2,必需編譯進內核的內容

  首先,我們制作的這個小系統是基于一張軟盤的,因此,你的內核必需支持軟盤.另外對IDE硬盤和cdrom的支持也是不可少的,否則做出來的 babylinux就沒有實用價值,因為他不能訪問硬盤和光盤上的內容這樣的linux雖然可以做的更小,但是制造一個完全沒有用的東西是浪費時間.其他的包括framebuffer等,如果你需要支持在字符界面下以高分辨率顯示,以看到更多的屏幕內容,那么就必需把framebuffer支持編譯進內核,此外在高分辨率下使用的8x8字體也必需編譯進去.否則即使你給內核傳遞了vga= 參數,內核會因為沒有可用的小字體而自動轉跳到低分辨率模式下,這是以前困擾我好幾天想不明白的事情,后來通過反復試驗才明白原來是缺少字體的文體.這里我先大致提一下需要注意的事情.在下一小節具體編譯時,我會繼續就某些細節問題說明.

  3,關于內核的版本

  我是在Redhat 9 linux系統下打造的babylinux小系統.使用的是Redhat 9 自帶的2.4.20版的內核.

  為什么我不用最新的2.6的內核?

  一開始我也企圖用最新的內核,但是通過試驗我發現,在用最新的2.6.9內核的情況下,我編譯一個all-no的(即所有內容都選N,不支持任何硬件,只有一個最基本的內核)最小化內核就要460K左右,如果我在這個基礎上再加入幾種文件系統和必要的驅動,那么內核的大小就不能裝下一張1440K

  的軟盤,而我用2.4.20的內核編譯一個最小化的內核只需要217K,的大小.如果優化了gcc參數他還能再小些.這樣我就立即省下了200多K的空間,在平時,200多K的內容微不足道,但是在babylinux里,這個數目是整個空間的 1/7,相當于一個reiserfs文件系統模塊的大小.當然,我也嘗試了2.2以及更老的內核,但是他們缺少我需要的東西,因此最后權衡下來用2.4的內核是比較合理的.如果你用的是2.6內核的FC系統,那么最好還是去下載一個2.4版的內核,www.kernel.org 有各個時期的內核可以下載.

  4, 內核的配置

  如果你對linux內核的配置和編譯已經很熟悉了,請跳過這一段,直接看busybox的編譯.

  以root身份登錄系統

  進入/usr/src/linux目錄

  [root@gucuiwen root]# cd /usr/src/linux

  如果你下載了一個2.4版本的內核,為了避免麻煩,請將他拷貝到/usr/src下,然后接壓縮,再做一個指向他的名為linux的鏈接.雖然這并不是必需的,但是根據我以往的經驗,如果我把linux源代碼放在其他目錄下解開并編譯,偶然會有一些莫名其妙的小問題發生.

  #cp linux-2.4.20.bz2 /usr/src/

  #cd /usr/src

  #tar xfvj linux-2.4.20.bz2

  如果是tar.gz格式,可以這樣解開

  #tar xfvz linux-2.4.20.tar.gz

  為了方便,做一個到目錄linux-2.4.20的連接:

  #ln -s linux-2.4.20 linux

  進入linux源代碼目錄:

  #cd linux

  清理源代碼樹:

  #make mrproper

  運行配置程序:

  #make xconfig

  code maturity level options

  先選擇N,當我們配置好常規的東西,要加入framebuffer支持時再將這一項選擇Y,因為在2.4.20中,framebuffer支持尚屬于實驗性代碼.如果不在code maturity level options選擇為Y,將不能配置framebuffer.

  Loadable module support

  選擇N,為了簡化系統的制作,我在這個項目中不選擇可加載內核模塊的支持.

  processor type and features

  processor family 中選擇你需要的CPU類型,如果你想讓老至386,新到P4的CPU都能運行babaylinux那么請選擇386CPU,否則請按自己的實際情況選擇.

  其他選項都選擇N.這些在babylinux中都是不需要的.

  General setup

  networking support 選擇Y

  PCI support 選擇Y 除非你不用PCI設備,不過一般人都是需要的,因為現在網卡大部分是PCI的.

  System V ipc 選擇Y

  systrl support選擇Y

  kernel support for ELF 選擇Y

  其余內容都可以選擇N,如果有特殊需求,比如的網卡是ISA的,那么請將相應的內容選上.但是不能貪心,時刻牢記,我們能利用的空間只有 1440K ,內核的大小絕不能超過 900K,任何不必要的東西都應該從內核中去除.

  memory technology devices (MTD)

  Parallel port support

  Plug and Play configuration

  以上三個大項中的所有內容選擇N

  block devices

  Normal floppy disk support

  Loopback device support

  RAM disk support

  initial RAM disk (initrd) support

  Per partition statics in /proc/partitions

  以上幾項選擇Y,其余全部選擇N.

  這里的選項比較重要,我想重點說明一下.對于軟盤的支持,那是不必說的,那是必備的.

  loopback device 即回環設備,我們平時用命令

  #mount -o loop somecd.ISO /mnt/cdrom

  掛裝光盤映象文件,或者其他文件系統映象文件時就用到了內核中的loopback 模塊,如果沒有編譯進這個模塊,你將不能用上面的命令掛裝光盤映象和文件系統映象.

  個人認為這個功能是非常重要的,所以編譯了進去.

  RAM disk support 即內存磁盤(比較貼切的說法是虛擬磁盤,即撥出一部分內存當做磁盤用).這是制作babylinux項目中的核心內容,由于一張軟盤的空間有限, babylinux的根文件系統是用gzip壓縮法高度壓縮的,在運行時,將解壓縮后的文件拷貝到一個RAM disk運行,所以在運行時,你在根文件系統上的所有操作實際上是在內存上進行的.但是在形式上和在真正的磁盤上運行一樣.只不過放在RAM disk上的所有內容會在系統關機后全部消失.

  不僅在運行babylinux時用到ramdisk,我們在制作壓縮的根文件系統時也要用到ramdisk,學習ramdisk的使用是做一個babylinux的重要目的之一. 在linux中,還支持另外一種虛擬磁盤,叫做shm,

  (shared memory),這種虛擬磁盤機制比ramdisk更加先進,ramdisk的大小是固定的,由編譯內核時候的default ram disk size 決定.默認為4096K(4M),也可以在內核裝載前加上ramdisk_size=參數來決定他的大小,但是系統一旦啟動,ramdisk的大小是不能改變的,而shm的大小卻動態的改變.默認情況下為物理內存的一半,當系統需要更多內存的時,他就自動縮小.系統內存富余時,他自動增大,這樣可以充分靈活的利用內存空間,shm通常用來作為系統的磁盤高速緩存,存放系統運行中的臨時文件等.redaht 的linux在默認情況下都有shm的支持,可以用mount和df察看他的掛裝點和大小,如下命令:

  [root@gucuiwen linux]# mount

  /dev/hda1 on / type ext3 (rw)

  none on /proc type proc (rw)

  usbdevfs on /proc/bus/usb type usbdevfs (rw)

  none on /dev/pts type devpts (rw,gid=5,mode=620)

  /dev/hda6 on /home type ext3 (rw)

  /dev/hda5 on /oracle type ext3 (rw)

  none on /dev/shm type tmpfs (rw)

  /dev/hda7 on /var type ext3 (rw)

  [root@gucuiwen linux]# df -h

  文件系統 容量 已用 可用 已用% 掛載點

  /dev/hda1 2.9G 2.7G 26M 100% /

  /dev/hda6 3.8G 1.8G 1.8G 50% /home

  /dev/hda5 5.7G 677M 4.8G 13% /oracle

  none 125M 0 125M 0% /dev/shm

  /dev/hda7 711M 91M 584M 14% /var

  雖然shm有這么多的優點,我還是選擇了ramdisk,因為ramdisk可以很方便地在系統啟動的時候加載,而shm卻沒那么容易,下面就來講一下關于內核啟動時加載ramdisk映象的相關內容.

  initial RAM disk (initrd) support

  即初始化ramdisk支持,這個選項讓內核有能力在內核加載階段就能裝入RAMDISK,并運行其中的內容,否則只能在系統運行階段用ramdisk ,我們平時在編譯了一個新內核后,如果你的根文件系統用的是ext3,而你沒有把ext3編譯進內核,而只作為一個模塊編譯了,那么就需要用 mkinitrd命令做一個initrd (initializtion ramdisk),這個ramdisk里放了ext3的模塊,這樣內核在加載根文件系統前就能正確識別ext3文件系統.否則,內核加載的最后一步就會出現kernel panic cant not find init .... 的錯誤.

  在babylinux項目中,這個選項是必需的,這里的作用是把解壓的根文件系統映象裝入ramdisk.

  Per partition statics in /proc/partitions

  這個選項不是必需的,但是我發現如果我不把這個功能編譯進內核,那么當我在掛裝文件系統的時候會有些小問題,比如我不能以簡寫的掛裝命令來掛裝文件系統. 我不確定到底是不是這個選項的關系,但是把這個選項編譯進內核只增大一點點內核空間,所以為了避免麻煩,我把他編譯了進去.

  Multi-device support (RAID and LVM)

  Cryptography support (CryptoAPI)

  這兩個大項全部選擇N,因為在個人用PC上,及少牽涉到這兩項,如果你真的有RAID設備或者LVM,那么就自己摸索著配置一下吧.

  Networking options

  這一大項中,只需要把下列項目編譯進內核:

  Packet socket :mmapped IO

  TCP/IP networking

  對于IP:advanced router這項,如果你想重點把babylinux用做靜態路由軟件,那么把這項編譯進去,而對于network packet filtering (replaces ipchains)這一項,沒有必要編譯進去了,因為busybox沒有提供iptables工具來設置包過濾防火墻.同樣,unix domain sockets這項也不必選擇,只有運行X的情況下才需要選這項.

  Telephony Support 選擇N

  ATA/IDE/MFM/RLL support

  選擇Y,然后下面的'IDE,ATA and ATAPI Block Devices'按鈕就被激活

  下面幾項請選擇Y,其余都可以是N.

  Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

  Include IDE/ATA-2 DISK support

  Auto-Geometry Resizing support

  Include IDE/ATA CDROM support

  如果你的內核要運行在一臺很老的pentium或486上,請把CMD640 chipset bugfix/support編譯進去,因為那時候主板的CMD640 IDE控制芯片大多有莫名其妙的BUG,把這項編譯進去會修復這個bug.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久一区视频| 国产精品嫩草久久久久| 久久久久国产一区二区| 国产精品乱码一区二三区小蝌蚪| 国产一区二区高清视频| 亚洲国产老妈| 亚洲欧美网站| 好吊一区二区三区| 激情综合视频| 国产日韩一区在线| 亚洲欧洲一区二区三区| 91久久国产综合久久91精品网站| 亚洲图片自拍偷拍| 一区二区三区四区国产精品| 一区二区三区精品久久久| 欧美亚洲免费高清在线观看| 国产欧美综合在线| 国产精品爱久久久久久久| 国产在线播精品第三| 韩国三级在线一区| 在线免费观看欧美| 欧美一区成人| 在线一区免费观看| 亚洲区欧美区| 欧美在现视频| 99精品国产在热久久下载| 在线亚洲电影| 国产综合av| 欧美国产成人精品| 欧美日韩一区在线观看视频| 国产欧美一区在线| 欧美一区高清| 久久久久久一区| 欧美午夜精品理论片a级大开眼界| 一区二区三区欧美| 欧美成人69| 欧美精品在线免费| 亚洲精品乱码久久久久久日本蜜臀| 亚洲欧洲日夜超级视频| 久久精品官网| 午夜伦理片一区| 亚洲欧美中文日韩在线| 欧美日韩一级大片网址| 欧美绝品在线观看成人午夜影视| 国产亚洲福利一区| 国产精品二区在线观看| 国产婷婷成人久久av免费高清| 国产亚洲欧美aaaa| 欧美精品www在线观看| 亚洲少妇最新在线视频| 裸体丰满少妇做受久久99精品| 亚洲国产婷婷香蕉久久久久久| 久久视频在线看| 亚洲高清视频一区二区| 国产欧美一级| 亚洲在线观看| 在线观看91精品国产入口| 久久综合色一综合色88| 久久噜噜噜精品国产亚洲综合| 免费观看30秒视频久久| 亚洲一区在线免费| 销魂美女一区二区三区视频在线| 日韩西西人体444www| 亚洲精品亚洲人成人网| 国产精品日韩精品欧美精品| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲欧美清纯在线制服| 国产视频精品免费播放| 性久久久久久久久| 欧美激情久久久| 日韩系列在线| 久久久噜噜噜久久久| 欧美专区在线观看一区| 欧美成人在线免费观看| 亚洲欧美日韩国产一区二区| 午夜精品视频网站| 国产欧美日韩一区| 欧美日韩成人一区二区| 欧美激情久久久| 亚洲伦理中文字幕| 国产欧美精品久久| 国产日韩欧美精品一区| 亚洲欧美日韩成人高清在线一区| 亚洲国产美国国产综合一区二区| 国产精品区免费视频| 一区二区冒白浆视频| 国产精品视频网址| 欧美日韩亚洲综合在线| 国产精品视频999| 亚洲福利专区| 亚洲男人的天堂在线| 一区二区国产精品| 欧美xx69| 中文欧美在线视频| 久久久综合视频| 欧美日韩性生活视频| 亚洲欧美日韩在线综合| 欧美日韩一区二区三区在线看| 欧美日韩福利| 国产精品色午夜在线观看| 国产毛片精品国产一区二区三区| 亚洲永久免费精品| 亚洲国产高清一区二区三区| 久久综合五月天婷婷伊人| 国产精品亚洲片夜色在线| 国产精品日韩欧美大师| 国产一区二区三区久久精品| 亚洲欧美日韩人成在线播放| 欧美人与禽猛交乱配视频| 国产亚洲永久域名| 国产精品日韩精品欧美精品| 一区二区视频免费在线观看| 亚洲国产综合在线| 久久精品欧美| 亚洲尤物在线| 亚洲三级视频| 在线成人小视频| 欧美精品亚洲二区| 91久久精品国产| 亚洲大片av| 欧美激情亚洲自拍| 欧美极品aⅴ影院| 国产日韩欧美电影在线观看| 欧美激情在线播放| 欧美激情一区二区久久久| 欧美日韩国产成人高清视频| 久久频这里精品99香蕉| 久久久爽爽爽美女图片| 黑人极品videos精品欧美裸| 欧美日韩妖精视频| 伊人久久亚洲影院| 黄色另类av| 亚洲国产精品www| 激情视频一区| 久久国产精品久久久久久久久久| 欧美日韩国产成人在线| 国产精品亚洲а∨天堂免在线| 亚洲高清视频中文字幕| 一区二区三区四区国产精品| 最新日韩精品| 樱花yy私人影院亚洲| 亚洲图片欧美日产| 国产精品捆绑调教| 欧美国产高潮xxxx1819| 一区二区三区四区国产| 国产精品男女猛烈高潮激情| 日韩一级免费| 亚洲男人影院| 亚洲曰本av电影| 一区二区三区**美女毛片| 久久精品国产久精国产思思| 欧美成人免费全部观看天天性色| 国产精品久在线观看| 午夜精品久久久久久久久久久| 亚洲国产第一| 欧美不卡视频一区| 国产欧美精品在线| 另类专区欧美制服同性| 亚洲破处大片| 美女精品视频一区| 欧美一级淫片播放口| 欧美香蕉视频| 一区二区久久久久| 久久中文字幕导航| 狠狠色伊人亚洲综合网站色| 欧美日韩国产综合久久| 在线一区二区三区做爰视频网站| 黄色日韩精品| 久久精品中文字幕免费mv| 亚洲一区二区三区免费在线观看| 欧美三级网页| 欧美日韩一区视频| 久久精品国产亚洲5555| 老司机午夜精品视频在线观看| 国产精品免费区二区三区观看| 欧美精品九九| 国产精品久久久久9999| 欧美日韩视频在线一区二区观看视频| 欧美一区1区三区3区公司| 欧美一区二区三区四区夜夜大片| 99热这里只有成人精品国产| 免费观看30秒视频久久| 国产视频不卡| 国产精品日韩欧美综合| 夜夜夜久久久| 久久久91精品国产一区二区三区| 国产精品mv在线观看| 欧美不卡福利| 你懂的亚洲视频| 久久综合伊人77777麻豆| 国产视频综合在线| 国产精品二区三区四区| 欧美日韩第一区日日骚| 久久不见久久见免费视频1| 久久夜色精品一区| 国产精品成人一区| 免费一级欧美在线大片| 国产一区二区三区在线播放免费观看| 久久网站免费| 亚洲午夜一级| 欧美日韩国产首页| 欧美久久一区| 亚洲国产成人av好男人在线观看| 黄色精品一区二区| 久久国产精品99精品国产| 国产精品美女主播| 最新成人av网站| 欧美福利视频一区| 欧美日韩1区| 老牛国产精品一区的观看方式| 国产精品腿扒开做爽爽爽挤奶网站| 欧美成人中文字幕在线| 亚洲一二三区精品| 欧美午夜激情在线| 国产一区二区三区日韩| 国产在线一区二区三区四区| 午夜亚洲伦理| 蜜桃久久av| 黄色亚洲免费| 亚洲与欧洲av电影| 欧美高清一区二区| 亚洲欧美另类久久久精品2019| 欧美精品一区三区在线观看| 亚洲人体大胆视频| 国产精品成人一区| 国产精品福利在线观看| 欧美偷拍另类| 欧美视频精品在线观看| 欧美日韩不卡合集视频| 国产婷婷精品| 久久精品视频网| 99热在线精品观看| 麻豆国产精品一区二区三区| 午夜宅男欧美| 午夜激情亚洲| 久久成人一区二区| 免费日本视频一区| 欧美日韩一区二区在线观看| 欧美日本三级| 精品51国产黑色丝袜高跟鞋| 久久免费观看视频| 免费久久精品视频| 欧美专区日韩专区| 国产精品久久久对白| 国产日韩精品视频一区二区三区| 国内偷自视频区视频综合| 亚洲欧美国产va在线影院| 亚洲欧洲日夜超级视频| 国产精品v欧美精品v日韩精品| 欧美视频在线看| 欧美无乱码久久久免费午夜一区| 国产精品九色蝌蚪自拍| 国产精品试看| 在线天堂一区av电影| 欧美久久久久久久久久| 亚洲一区二区视频在线观看| 女女同性女同一区二区三区91| 亚洲激情婷婷| 久久精品视频网| 欧美激情一区二区三区四区| 久久国产精品72免费观看| 欧美日韩国内自拍| 久久久久国产一区二区| 国内精品一区二区三区| 欧美日韩亚洲一区二区三区| 亚洲一区二区三| 久久精品国产精品亚洲精品| 亚洲成人原创| 国产亚洲永久域名| 在线一区二区日韩| 欧美午夜性色大片在线观看| 亚洲欧美在线看| 日韩视频在线你懂得| 亚洲色无码播放| 亚洲全部视频| 欧美久久久久中文字幕| 久久久久久色| 久久久最新网址| 亚洲精品在线电影| 国产嫩草影院久久久久| 国产精品a级| 香蕉乱码成人久久天堂爱免费| 亚洲欧美中文字幕| 欧美一区视频在线| 亚洲电影在线观看| 亚洲欧美日韩专区| 亚洲欧洲日本mm| 欧美va日韩va| 国外视频精品毛片| 在线观看日韩国产| 国产亚洲视频在线观看| 午夜精品久久久久久99热软件| 一本色道久久加勒比88综合| 国产日韩欧美电影在线观看| 老色鬼久久亚洲一区二区| 好吊色欧美一区二区三区四区| 亚洲精品久久在线| 国产精品家庭影院| 激情婷婷久久| 欧美伊久线香蕉线新在线| 国产精品高潮呻吟| 亚洲国产第一页| 久久综合中文| 欧美一区网站| 欧美国产极速在线| 亚洲电影在线播放| 宅男噜噜噜66国产日韩在线观看| 激情欧美日韩| 欧美日韩一区二区免费在线观看| 国内精品**久久毛片app| 国产精品永久在线| 国产一区二区三区久久久久久久久| 亚洲国产精彩中文乱码av在线播放| 国产一区高清视频| 欧美日韩高清免费| 久久婷婷蜜乳一本欲蜜臀| 欧美精品在线免费观看| 久久久噜噜噜久久狠狠50岁| 亚洲自拍偷拍色片视频| 欧美日韩国产黄| 久久www免费人成看片高清| 加勒比av一区二区| 欧美一区综合| 久久久久久国产精品一区| 制服丝袜激情欧洲亚洲| 国产偷久久久精品专区| 国产精品毛片va一区二区三区| 久久福利视频导航|