中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Linux系統(tǒng)啟動的詳細過程和步驟

      時間:2024-10-11 10:57:01 Linux認證 我要投稿
      • 相關(guān)推薦

      Linux系統(tǒng)啟動的詳細過程和步驟

        Linux操作系統(tǒng)借助于Internet網(wǎng)絡(luò),并通過全世界各地計算機愛好者的共同努力,已成為今天世界上使用最多的一種UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。下面小編準(zhǔn)備了關(guān)于Linux系統(tǒng)啟動的詳細過程和步驟 ,提供給大家參考!

        第一階段:

        系統(tǒng)上電開機后,主板BIOS(Basic Input / Output System)運行POST(Power on self test)代碼,檢測系統(tǒng)外圍關(guān)鍵設(shè)備(如:CPU、內(nèi)存、顯卡、I/O、鍵盤鼠標(biāo)等)。硬件配置信息及一些用戶配置參數(shù)存儲在主板的CMOS( Complementary Metal Oxide Semiconductor)上(一般64字節(jié)),實際上就是主板上一塊可讀寫的RAM芯片,由主板上的電池供電,系統(tǒng)掉電后,信息不會丟失。

        執(zhí)行POST代碼對系統(tǒng)外圍關(guān)鍵設(shè)備檢測通過后,系統(tǒng)啟動自舉程序, 根據(jù)我們在BIOS中設(shè)置的啟動順序搜索啟動驅(qū)動器(比如的硬盤、光驅(qū)、網(wǎng)絡(luò)服務(wù)器等)。選擇合適的啟動器,比如通常情況下的硬盤設(shè)備,BIOS會讀取硬盤設(shè)備的第一個扇區(qū)(MBR,512字節(jié)),并執(zhí)行其中的代碼。實際上這里BIOS并不關(guān)心啟動設(shè)備第一個扇區(qū)中是什么內(nèi)容,它只是負責(zé)讀取該扇區(qū)內(nèi)容、并執(zhí)行,BIOS的任務(wù)就完成了。此后將系統(tǒng)啟動的控制權(quán)移交到MBR部分的代碼。

        注: 在我們的現(xiàn)行系統(tǒng)中,大多關(guān)鍵設(shè)備都是連在主板上的。因此主板BIOS提供了一個操作系統(tǒng)(軟件)和系統(tǒng)外圍關(guān)鍵設(shè)備(硬件)最底級別的接口,在這個階段,檢測系統(tǒng)外圍關(guān)鍵設(shè)備是否“準(zhǔn)備好”,以供操作系統(tǒng)使用。

        第二階段:

        BIOS通過下面兩種方法之一來傳遞引導(dǎo)記錄:

        第一, 將控制權(quán)傳遞給initial program loader(IPL),該程序安裝在磁盤主引導(dǎo)記錄(MBR)中

        第二, 將控制權(quán)傳遞給initial program loader(IPL),該程序安裝在磁盤分區(qū)的啟動引導(dǎo)扇區(qū)中

        無論上面的哪種情況中,IPL都是MBR的一部分并應(yīng)該存儲于一個不大于446字節(jié)的磁盤空間中,因為MBR是一個不大于512字節(jié)的空間。

        因此IPL僅僅是GRUB的第一個部分(stage1),他的作用就是定位和裝載GRUB的第二個部分(stage2);stage2對啟動系統(tǒng)起關(guān)鍵作用,該部分提供了GRUB啟動菜單和交互式的GRUB的shell。啟動菜單在啟動時候通過/boot/grub/grub.conf文件所定義的內(nèi)容生成。在啟動菜單中選擇了kernel之后,GRUB會負責(zé)解壓和裝載kernel image并且將initrd裝載到內(nèi)存中。最后GRUB初始化kernel啟動代碼。

        完成之后后續(xù)的引導(dǎo)權(quán)被移交給kernel。

        假設(shè)Boot Loader為grub (grub-0.97),其引導(dǎo)系統(tǒng)的過程如下:

        grub分為stage1 (stage1_5) 和stage2兩個階段。stage1可以看成是initial program loaderI(IPL),而stage2則實現(xiàn)了grub的主要功能,包括對特定文件系統(tǒng)的支持(如ext2,ext3,reiserfs等),grub自己的shell,以及內(nèi)部程序(如:kernrl,initrd,root)等。

        stage 1:MBR(512 字節(jié),0頭0道1扇區(qū)),前446字節(jié)存放的是 stage1,后面存放硬盤分區(qū)表信息,BIOS將stag1載入內(nèi)存中0x7c00處并跳轉(zhuǎn)執(zhí)行。stage1(/stage1/start.S)的任務(wù)非常單純,僅僅是將硬盤0頭0道2扇區(qū)讀入內(nèi)存。0頭0道2扇區(qū)內(nèi)容是源代碼中的/stage2/start.S,編譯后512字節(jié),它是stage2或者stage1_5的入口。

        注:此時stage1是沒有能力識別文件系統(tǒng)的,其定位硬盤0頭0道2扇區(qū)過程如下:

        BIOS將stage1載入內(nèi)存0x7c00處并執(zhí)行,然后調(diào)用BIOS INIT13中斷,將硬盤0頭0道2扇區(qū)內(nèi)容載入內(nèi)存0x7000處,然后調(diào)用copy_buffer將其轉(zhuǎn)移到內(nèi)存0x8000處。定位0頭0道2扇區(qū)有兩種尋址方式:LBA、CHS。

        start.S的主要功能是將stage2或stage1_5從硬盤載入內(nèi)存,如果是stage2,則載入0x820處;如果是 stage1_5,則載入0x2200處。

        注:這里的stage2或者stage1_5不是/boot分區(qū)/boot/grub目錄下的文件,這個時候grub還沒有能力識別任何文件系統(tǒng)。分以下兩種情況:

        (1)假如start.S讀取的是stage1_5,它存放在硬盤0頭0道3扇區(qū)向后的位置,stage1_5作為stage1和stage2中間的橋梁,stage1_5有識別文件系統(tǒng)的能力,此后grub才有能力去訪問/boot分區(qū)/boot/grub目錄下的 stage2文件,將stage2載入內(nèi)存并執(zhí)行。

        (2)假如start.S讀取的是stage2,同樣,這個stage2也不是/boot分區(qū)/boot/grub目錄下的stage2,這個時候start.S讀取的是存放在/boot分區(qū)Boot Sector的stage2。這種情況下就有一個限制:因為start.S通過BIOS中斷方式直接對硬盤尋址(而非通過訪問具體的文件系統(tǒng)),其尋址范圍有限,限制在8GB以內(nèi)。因此這種情況需要將/boot分區(qū)分在硬盤8GB尋址空間之前。

        假如是情形(2),我們將/boot/grub目錄下的內(nèi)容清空,依然能成功啟動grub;假如是情形(1),將/boot/grub目錄下stage2刪除后,則系統(tǒng)啟動過程中g(shù)rub會啟動失敗。

        這個地方經(jīng)常要進行的操作:

        是關(guān)于grub常用的幾個指令對應(yīng)的函數(shù):

        grub>root (hd0,0) --root指令為grub指定了一個根分區(qū)

        grub>kernel /xen.gz-2.6.18-37.el5 --kernel指令將操作系統(tǒng)內(nèi)核載入內(nèi)存

        grub>module /vmlinuz-2.6.18-37.el5xen ro root=/dev/sda2 --module指令加載指定的模塊

        grub>module /initrd-2.6.18-37.el5xen.img --指定initrd文件

        grub>boot --boot 指令調(diào)用相應(yīng)的啟動函數(shù)啟動OS內(nèi)核

        第三階段:

        如階段2所述,grub>boot指令后,系統(tǒng)啟動的控制權(quán)移交給kernel。Kernel會立即初始化系統(tǒng)中各設(shè)備并做相關(guān)配置工作,其中包括CPU、I/O、存儲設(shè)備等。

        關(guān)于設(shè)備驅(qū)動加載,有兩部分:一部分設(shè)備驅(qū)動編入Linux Kernel中,Kernel會調(diào)用這部分驅(qū)動初始化相關(guān)設(shè)備,同時將日志輸出到kernel message buffer,系統(tǒng)啟動后dmesg可以查看到這部分輸出信息。另外有一部分設(shè)備驅(qū)動并沒有編入Kernel,而是作為模塊形式放在initrd(ramdisk)中。

        在2.6內(nèi)核中,支持兩種格式的initrd,一種是2.4內(nèi)核的文件系統(tǒng)鏡像image-initrd,一種是cpio格式。以 cpio 格式為例,內(nèi)核判斷initrd為cpio的文件格式后,會將initrd中的內(nèi)容釋放到rootfs中。

        initrd是一種基于內(nèi)存的文件系統(tǒng),啟動過程中,系統(tǒng)在訪問真正的根文件系統(tǒng)/時,會先訪問initrd文件系統(tǒng)。將initrd中的內(nèi)容打開來看,會發(fā)現(xiàn)有bin、devetc、lib、procsys、sysroot、init等文件(包含目錄)。其中包含了一些設(shè)備的驅(qū)動模塊,比如scsi ata等設(shè)備驅(qū)動模塊,同時還有幾個基本的可執(zhí)行程序 insmod, modprobe, lvm,nash。主要目的是加載一些存儲介質(zhì)的驅(qū)動模塊,如上面所說的scsi ideusb等設(shè)備驅(qū)動模塊,初始化LVM,把/根文件系統(tǒng)以只讀方式掛載。

        initrd中的內(nèi)容釋放到rootfs中后,Kernel會執(zhí)行其中的init文件,這里的init是一個腳本,由nash解釋器執(zhí)行。這個時候內(nèi)核的控制權(quán)移交給init文件處理,我們查看init文件的內(nèi)容,主要也是加載各種存儲介質(zhì)相關(guān)的設(shè)備驅(qū)動。

        驅(qū)動加載后,會創(chuàng)建一個根設(shè)備,然后將根文件系統(tǒng)/以只讀的方式掛載。這步結(jié)束后釋放未使用內(nèi)存并執(zhí)行switchroot,轉(zhuǎn)換到真正的根/上面去,同時運行/sbin/init程序,開啟系統(tǒng)的1號進程,此后系統(tǒng)啟動的控制權(quán)移交給 init 進程。關(guān)于switchroot是在nash中定義的程序。

        Linux Kernel需要適應(yīng)多種不同的硬件架構(gòu),但是將所有的硬件驅(qū)動編入Kernel又是不實際的,而且Kernel也不可能每新出一種硬件結(jié)構(gòu),就將該硬件的設(shè)備驅(qū)動寫入內(nèi)核。實際上Linux Kernel僅是包含了基本的硬件驅(qū)動,在系統(tǒng)安裝過程中會檢測系統(tǒng)硬件信息,根據(jù)安裝信息和系統(tǒng)硬件信息將一部分設(shè)備驅(qū)動寫入 initrd 。這樣在以后啟動系統(tǒng)時,一部分設(shè)備驅(qū)動就放在initrd中來加載。

        第四階段:

        init進程起來后,系統(tǒng)啟動的控制權(quán)移交給init進程。

        /sbin/init進程是所有進程的父進程,當(dāng)init起來之后,它首先會讀取配置文件/etc/inittab,進行以下工作:

        1)執(zhí)行系統(tǒng)初始化腳本(/etc/rc.d/rc.sysinit),對系統(tǒng)進行基本的配置,以讀寫方式掛載根文件系統(tǒng)及其它文件系統(tǒng),到此系統(tǒng)基本算運行起來了,后面需要進行運行級別的確定及相應(yīng)服務(wù)的啟動;

        2)確定啟動后進入的運行級別;

        3) 執(zhí)行/etc/rc.d/rc,該文件定義了服務(wù)啟動的順序是先K后S,而具體的每個運行級別的服務(wù)狀態(tài)是放在/etc/rc.d/rcn.d(n=0~6)目錄下,所有的文件均鏈接至/etc/init.d下的相應(yīng)文件。

        4)有關(guān)key sequence的設(shè)置

        5) 有關(guān)UPS的腳本定義

        6)啟動虛擬終端/sbin/mingetty

        7)在運行級別5上運行X

        這時呈現(xiàn)給用戶的就是最終的登錄界面。

        至此,系統(tǒng)啟動過程完畢:)

        說明:

        1)/etc/rc.d/rc.sysint -- System Initialization Tasks

        它的主要工作有:

        配置selinux,

        系統(tǒng)時鐘,

        內(nèi)核參數(shù)(/etc/sysctl.conf),

        hostname,

        啟用swap分區(qū),

        根文件系統(tǒng)的檢查和二次掛載(讀寫),

        激活RAID和LVM設(shè)備,

        啟用磁盤quota

        檢查并掛載其它文件系統(tǒng)

        等等。

        GRUB的基本原理以及對GRUB的操作控制方法:

        GRUB全稱為Grand Unified Boot Loader,是Linux操作系統(tǒng)主流的啟動引導(dǎo)管理器。主要作用是啟動和裝載Linux操作系統(tǒng)。系統(tǒng)啟動過程中一旦完成了BIOS自檢,GRUB會被立刻裝載。在GRUB里面包含了可以載入操作系統(tǒng)的代碼以及將操作系統(tǒng)引導(dǎo)權(quán)傳遞給其他啟動引導(dǎo)管理器的代碼。GRUB可以允許用戶選擇使用不同的kernel啟動系統(tǒng),或者在啟動系統(tǒng)的過程中設(shè)置不同的啟動參數(shù)。

        而通常BIOS會以下面兩種方法之一來調(diào)用啟動引導(dǎo)管理器:

        將控制權(quán)移交給于驅(qū)動器主引導(dǎo)記錄的initial program loader(IPL);

        將控制權(quán)移交給其他啟動引導(dǎo)管理器,再由他們將控制權(quán)移交給安裝在分區(qū)引導(dǎo)扇區(qū)的IPL

        通常情況下啟動引導(dǎo)管理器GRUB由兩部分組成(stage1和stage2):

        stage1比較小,通常可以駐留在MBR或者各個磁盤分區(qū)的啟動扇區(qū)中,主要作用是裝載stage2。

        stage2比較大,從磁盤的啟動引導(dǎo)分區(qū)讀取

        至于在stage1和stage2之間存在一個stage1.5,是因為starge1.5具有識別文件系統(tǒng)的能力。

        在Linux系統(tǒng)中對GRUB的配置有兩種方法:

        主要引導(dǎo)管理器:

        會將啟動引導(dǎo)管理器的stage1安裝在MBR上,這時啟動引導(dǎo)管理器必須被配置為可以傳遞控制權(quán)到其他操作系統(tǒng);

        次要引導(dǎo)管理器:

        會將啟動引導(dǎo)管理器的stage1安裝在一些分區(qū)的引導(dǎo)扇區(qū)上,而其他的啟動引導(dǎo)管理器會被安裝在MBR上,由他們來向Linux啟動引導(dǎo)管理器傳遞控制權(quán)。

        GRUB在啟動過程中可以提供命令行交互界面,可以從ext系列,reiserfs,fat等多種文件系統(tǒng)引導(dǎo)系統(tǒng),并且可以提供密碼加密功能,其內(nèi)容在/boot分區(qū)下,系統(tǒng)啟動過程中由配置文件/boot/grub/grub.conf來定義啟動方式,對該配置文件的更改會立即生效。

        在配置文件/boot/grub/grub.conf文件中定義的內(nèi)容包括:

        grub所在的分區(qū),引導(dǎo)系統(tǒng)所使用的kernel文件位置,硬件初始化使用的initrd文件位置,以及啟動參數(shù)。

        例如:

        grub>root (hd0,0) --root指令為grub指定了一個根分區(qū)

        grub>kernel /xen.gz-2.6.18-37.el5 --kernel指令將操作系統(tǒng)內(nèi)核載入內(nèi)存

        grub>module /vmlinuz-2.6.18-37.el5xen ro root=/dev/sda2 --module指令加載指定的模塊

        grub>module /initrd-2.6.18-37.el5xen.img --指定initrd文件

        grub>boot --boot 指令調(diào)用相應(yīng)的啟動函數(shù)啟動OS內(nèi)核

        可見其指定的內(nèi)容大多數(shù)在/boot分區(qū),如果切換到/boot分區(qū)之后會看到這些內(nèi)容:

        /boot/vmlinuz-* linux kernel的一個copy;

        /boot/initrd*.img 初始化的ram disk文件

        /boot/grub/device.map linux設(shè)備名和grub設(shè)備名的映射文件

        /boot/grub/grub.conf 主配置文件

        通常GRUB出錯幾率不是很大,但一旦出現(xiàn)問題恐怕采用最多的方式是重裝grub到MBR中。

        在這種時候需要注意的問題有:

        首先,設(shè)備映射關(guān)系:

        GRUB里面對設(shè)備名稱的定義和系統(tǒng)中對設(shè)備名稱的定義方法不一樣:

        (fd0) /dev/fd0

        (hd0) /dev/sda /dev/hda

        (hd1) /dev/sdb /dev/hdb

        如夠進入系統(tǒng)或者救援模式,可執(zhí)行命令/sbin/grub-install /dev/sda(或者hda)進行GRUB重裝:

        # /sbin/grub-install device

        處于某種原因MBR中信息出錯可以使用上面的命令將其重裝到磁盤主引導(dǎo)記錄中;但是如果在不能進入系統(tǒng)的情況下就需要通過grub的命令行界面進行手動設(shè)置,這個時候就要注意上面所提到的映射關(guān)系。

        同時,在grub命令行中對grub進行手動設(shè)置的時候需要注意所使用的命令:

        # root (hd0,0) --指定啟動分區(qū)

        # setup(hd0) --表示將grub安裝在主引導(dǎo)記錄上

        # quit --退出grub shell

        下面是一個完整的grub.conf文件內(nèi)容:

        [root@dhcp-0-195 ~]# cat /etc/grub.conf

        # grub.conf generated by anaconda

        #

        # Note that you do not have to rerun grub after making changes to this file

        # NOTICE: You have a /boot partition. This means that

        # all kernel and initrd paths are relative to /boot/, eg.

        # root (hd0,0)

        # kernel /vmlinuz-version ro root=/dev/VolGroup001/LogVol00

        # initrd /initrd-version.img

        #boot=/dev/sda

        default=0

        timeout=30

        splashimage=(hd0,0)/grub/splash.xpm.gz

        hiddenmenu

        password --md5 $1$apEcJWbA$DTJ8a6mKn/3yrTTSXBtdH0

        title Red Hat Enterprise Linux Client (2.6.18-8.1.1.el5)

        root (hd0,0)

        kernel /vmlinuz-2.6.18-8.1.1.el5 ro root=/dev/VolGroup001/LogVol00 crashkernel=128M@16M

        initrd /initrd-2.6.18-8.1.1.el5.img

        系統(tǒng)啟動運行級別的概念以及服務(wù)的定制方法;

        當(dāng)initrd可以正常檢測和裝載之后,最后的工作就基本上由操作系統(tǒng)來進行了。當(dāng)系統(tǒng)的init進程起來之后系統(tǒng)啟動的控制權(quán)移交給init進程。

        /sbin/init進程是所有進程的父進程,當(dāng)init起來之后,它首先會讀取配置文件/etc/inittab,進行以下工作:

        1)執(zhí)行系統(tǒng)初始化腳本(/etc/rc.d/rc.sysinit),對系統(tǒng)進行基本的配置,以讀寫方式掛載根文件系統(tǒng)及其它文件系統(tǒng),后面需要進行運行級別的確定及相應(yīng)服務(wù)的啟動,(從這個角度可以看出如果要定義系統(tǒng)的init動作,需要修改/etc/rc.d/rc.sysinit腳本)

        2)通過對/etc/inittab文件的讀取確定啟動后進入的運行級別;

        3) 在相應(yīng)的運行級別中執(zhí)行/etc/rc.d/rcx.d目錄下的腳本名稱,該文件定義了服務(wù)啟動的順序是先K后S,而具體的每個運行級別的服務(wù)狀態(tài)是放在/etc/rc.d/rcn.d(n=0~6)目錄下,但這些文件均是到/etc/init.d下的相應(yīng)文件的鏈接。

        系統(tǒng)會按照在該目錄下的文件名稱和優(yōu)先級執(zhí)行對應(yīng)運行級別目錄下的腳本:

        在某個運行級別的對應(yīng)目錄下,K開頭的服務(wù)被關(guān)閉,S開頭的服務(wù)被開啟,K在S開始之前執(zhí)行,在執(zhí)行過程中按照數(shù)字來定義優(yōu)先級,數(shù)字越低優(yōu)先級越高。

        4)按照/etc/rc.d/rcX.d目錄中的定義,系統(tǒng)會于后臺啟動相應(yīng)的服務(wù),如果要對某個運行級別中的服務(wù)進行更具體的定制,通過chkconfig命令來操作,或者通過setup/ntsys/system-config-services來進行定制。

        5)在/etc/inittab文件中存在有關(guān)key sequence,UPS的腳本定義,啟動虛擬終端/sbin/mingetty的設(shè)置,這時呈現(xiàn)給用戶的就是最終的登錄界面。

        也就是說后臺啟動的服務(wù)完畢之后,如果系統(tǒng)默認進入字符界面,則運行mgetty進入1-6號終端控制臺,如果系統(tǒng)默認進入圖形界面,則開啟gdm服務(wù)進入7號虛擬圖形控制臺。

        至此,系統(tǒng)啟動過程完畢。

        對于/etc/rc.d/rc.sysinit文件的說明:

        /etc/rc.d/rc.sysint -- System Initialization Tasks 執(zhí)行系統(tǒng)初始化任務(wù)的腳本。

        它的主要工作有:

        配置selinux,

        系統(tǒng)時鐘,

        內(nèi)核參數(shù)(/etc/sysctl.conf),

        hostname,

        啟用swap分區(qū),

        根文件系統(tǒng)的檢查和二次掛載(讀寫),

        激活RAID和LVM設(shè)備,

        啟用磁盤quota

        檢查并掛載其它文件系統(tǒng)

        這是其基本要實現(xiàn)的工作內(nèi)容:

        #!/bin/bash

        #

        # /etc/rc.d/rc.sysinit - run once at boot time

        #

        # Taken in part from Miquel van Smoorenburg's bcheckrc.

        # Check SELinux status

        # Because of a chicken/egg problem, init_crypto must be run twice. /var may be

        # encrypted but /var/lib/random-seed is needed to initialize swap.

        # Only read this once.

        # Initialize hardware

        # Set default affinity

        # Load other user-defined modules

        # Load modules (for backward compatibility with VARs)

        # Start the graphical boot, if necessary; /usr may not be mounted yet, so we

        # may have to do this again after mounting

        # Configure kernel parameters

        # Set the hostname.

        # Initialize ACPI bits

        # RAID setup

        # Device mapper & related initialization

        # Update quotas if necessary

        # Remount the root filesystem read-write.

        # Clean up SELinux labels

        # Clear mtab

        # Remove stale backups

        # Enter mounted filesystems into /etc/mtab

        # Mount all other filesystems (except for NFS and /proc, which is already

        # mounted). Contrary to standard usage,

        # filesystems are NOT unmounted in single user mode.

        # Check to see if a full relabel is needed

        # Start the graphical boot, if necessary and not done yet.

        # Initialize pseudo-random number generator

        # Use the hardware RNG to seed the entropy pool, if available

        # Configure machine if necessary.

        # Clean out /.

        # Do we need (w|u)tmpx files? We don't set them up, but the sysadmin might...

        # Clean up /var. I'd use find, but /usr may not be mounted.

        # Reset pam_console permissions

        # Clean up utmp/wtmp

        # Clean up various /tmp bits

        # Make ICE directory

        # Start up swapping.

      【Linux系統(tǒng)啟動的詳細過程和步驟】相關(guān)文章:

      Linux系統(tǒng)啟動的大致過程09-21

      做壽司的詳細步驟10-05

      美甲的詳細步驟07-11

      咖啡拉花的詳細步驟10-15

      企業(yè)管理的詳細步驟08-13

      裝修流程步驟詳細圖解06-17

      Word排序中文詳細步驟09-26

      手沖咖啡的詳細過程10-19

      德國留學(xué)申請詳細過程04-30

      魚的簡筆畫法及詳細步驟07-28

      主站蜘蛛池模板: 少妇爽到爆视频网站免费| 荣成市| 国产成人丝袜在线无码| 藁城市| 偷拍女厕女澡堂视频在线观看| 中文一区二区三区无码视频| 亚洲色欲色欲大片WWW无码| 亚洲国产成人精品久久精品| 亚洲变态另类色图天堂网| 亚洲va欧美va人人爽夜夜嗨 | 久久精品国产亚洲av麻豆毛片| 亚洲国产av剧一区二区三区| 中文字幕无线乱码亚洲观看| 99国产综合精品-久久久久| 亚洲成AV人国产毛片| 江达县| av资源在线看免费观看| 日韩精品视频在线观看免费| 丝袜系列在线视频国产| 午夜人妻中文字幕福利| 国产va在线播放| 久色精品国产亚洲av麻豆一| 桓仁| 久久精品国产亚洲av桥本有菜| 国产三级在线观看性色av| 中文字幕亚洲精品人妻| 色窝窝手在线视频| 亚洲 暴爽 AV人人爽日日碰| 久久久久AV成人无码网站| 常宁市| 昆山市| 2020亚洲国产| 国产小视频一区二区三区| 大宁县| 久久精品这里就是精品| 佛学| 亚洲一区二区三区在线观看播放| 鹿泉市| av狼人婷婷久久亚洲综合| 亚洲区一区二区中文字幕| 国产精品自偷自偷人妻熟女|