欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

UEFI Shell腳本語(yǔ)法詳解:從入門到固件調(diào)試實(shí)戰(zhàn)

UEFI Shell腳本語(yǔ)法詳解:從入門到固件調(diào)試實(shí)戰(zhàn) 1. UEFI Shell到底是什么為什么調(diào)試固件繞不開它先講個(gè)親身經(jīng)歷。前兩年幫朋友修一臺(tái)進(jìn)不去系統(tǒng)的老機(jī)器開機(jī)黑屏連BIOS Setup都進(jìn)不去風(fēng)扇轉(zhuǎn)、電源燈亮就是沒(méi)畫面。折騰半天最后是靠著UEFI Shell進(jìn)去用幾條命令定位到啟動(dòng)項(xiàng)損壞直接從Shell里把默認(rèn)啟動(dòng)項(xiàng)拉回來(lái)機(jī)器才救活。那時(shí)候我就覺(jué)得UEFI Shell這玩意兒看著不起眼真到關(guān)鍵時(shí)刻比什么PE盤、LiveCD都管用。UEFI Shell是運(yùn)行在UEFI固件環(huán)境下的一個(gè)命令行解釋器你可以把它理解成BIOS年代的DOS——系統(tǒng)沒(méi)起來(lái)之前它先給你一個(gè)能操作硬件、讀寫文件、執(zhí)行腳本的入口。它不依賴硬盤上的操作系統(tǒng)只要板子上的UEFI固件能跑起來(lái)Shell就能用。很多人分不清UEFI Shell和BIOS Setup的關(guān)系。簡(jiǎn)單說(shuō)BIOS Setup是圖形化或半圖形化的配置界面能改的東西被廠商鎖死了無(wú)非是啟動(dòng)順序、電源管理、虛擬化開關(guān)這些。UEFI Shell則是另一層?xùn)|西它面向的是真正能操作固件和硬件的人——你可以直接訪問(wèn)EFI系統(tǒng)分區(qū)里的文件可以加載驅(qū)動(dòng)可以讀寫內(nèi)存和IO端口可以用腳本批量執(zhí)行命令甚至可以操作ACPI表、管理啟動(dòng)項(xiàng)、刷寫固件。如果你在做固件開發(fā)、主板驗(yàn)證、系統(tǒng)集成或者單純喜歡折騰底層這玩意兒是繞不開的。這篇文章我不會(huì)去貼那份幾百頁(yè)的UEFI Shell規(guī)范文檔而是按我自己實(shí)際使用的路徑把腳本語(yǔ)法這塊徹底講透變量、參數(shù)、分支循環(huán)、文件操作、外部命令加載再到真實(shí)場(chǎng)景下的完整腳本拆解。最后一部分我會(huì)把這幾年前前后后踩過(guò)的大坑一并列出來(lái)這些才是文檔里查不到的東西。如果你是完全沒(méi)接觸過(guò)UEFI Shell的新手建議你把前兩節(jié)看完再上手如果你已經(jīng)寫過(guò)幾個(gè).nsh腳本可以直接跳到第4和第6節(jié)里面有不少細(xì)節(jié)值得對(duì)照。2. 搭建實(shí)操環(huán)境Shell不是所有機(jī)器都自帶2.1 主流板卡上怎么進(jìn)UEFI Shell先解決一個(gè)實(shí)際問(wèn)題Shell從哪來(lái)大多數(shù)商業(yè)主板默認(rèn)不預(yù)裝UEFI Shell你得自己想辦法。常見的入口有幾個(gè)部分工作站和服務(wù)器主板比如某些品牌的商務(wù)機(jī)型在BIOS Setup里提供一個(gè)Launch UEFI Shell的選項(xiàng)打開后重啟就能直接進(jìn)。沒(méi)有內(nèi)置Shell的機(jī)器可以把Shell.efi放到FAT32格式的U盤或EFI系統(tǒng)分區(qū)里然后在啟動(dòng)菜單里選UEFI: U盤名進(jìn)入。前提是U盤根目錄下有EFI/BOOT/BOOTX64.EFI64位x86機(jī)器或者你把Shell.efi命名為這個(gè)路徑下的啟動(dòng)文件。在EDK2開發(fā)環(huán)境里直接用QEMU加OVMF固件跑一個(gè)虛擬機(jī)啟動(dòng)時(shí)也能進(jìn)Shell這個(gè)方法對(duì)學(xué)習(xí)語(yǔ)法來(lái)說(shuō)反而是最省事的。我自己平時(shí)調(diào)試用的組合是一臺(tái)裝了Linux的筆記本跑QEMUOVMF固件里直接集成Shell配合虛擬的FAT32磁盤鏡像腳本寫完不用燒到真實(shí)板卡就能驗(yàn)證語(yǔ)法。這個(gè)方法強(qiáng)烈推薦——因?yàn)檎鏅C(jī)上反復(fù)重啟測(cè)試時(shí)間成本太高了而且有些機(jī)器進(jìn)Shell的快捷鍵和菜單路徑差異很大會(huì)打斷你調(diào)試的思路。2.2 版本差異Shell 2.0與細(xì)節(jié)變化UEFI Shell有兩種主版本Shell 1.0和Shell 2.0。2.0是EDK2默認(rèn)的版本功能強(qiáng)很多比如支持for循環(huán)、支持-b分頁(yè)參數(shù)、支持環(huán)境變量的字符串操作等。1.0基本只在內(nèi)嵌的老固件里能碰到。到了2.0之后不同固件版本的具體實(shí)現(xiàn)其實(shí)也有差異。有的廠商自己編譯的Shell會(huì)砍掉一些命令有的則集成了一堆EFI Shell下的DXE驅(qū)動(dòng)。所以在某個(gè)機(jī)器上能用的腳本換臺(tái)機(jī)器可能就提示命令找不到。這種事兒我遇到過(guò)不止一次后面第6節(jié)會(huì)專門講怎么排查。現(xiàn)階段你只需要記住一個(gè)原則寫腳本時(shí)盡量用最基礎(chǔ)的內(nèi)置命令少依賴廠商自定義的擴(kuò)展命令。2.3 文件系統(tǒng)支持與Shell下的盤符邏輯進(jìn)到Shell之后第一件事通常是敲map命令看當(dāng)前有哪些可用映射。UEFI Shell下沒(méi)有C盤D盤的概念它用FS0:、FS1:這樣的格式來(lái)表示文件系統(tǒng)BLK0:、BLK1:表示塊設(shè)備。比如Shell map輸出會(huì)列出當(dāng)前能訪問(wèn)的所有設(shè)備映射。你輸入FS0:回車就能切換到第一個(gè)文件系統(tǒng)然后ls看目錄結(jié)構(gòu)。這里有個(gè)容易懵的地方一個(gè)U盤分一個(gè)區(qū)是FS0:如果某個(gè)磁盤上有多個(gè)FAT分區(qū)可能會(huì)映射成FS0:、FS1:而且映射順序不一定等于你的物理順序和UEFI固件對(duì)設(shè)備的枚舉順序有關(guān)。還有一點(diǎn)Shell只認(rèn)FAT12/16/32格式的文件系統(tǒng)NTFS、ext4這些在純Shell環(huán)境下是不認(rèn)的。你要想從U盤加載腳本U盤必須是FAT32格式別踩這個(gè)坑。3. UEFI Shell腳本的母語(yǔ)內(nèi)置命令與幫助體系3.1 先弄清楚Shell的命令從哪里來(lái)在動(dòng)手寫腳本之前得先搞明白Shell命令的分類。UEFI Shell下的命令大致分三類Shell內(nèi)置命令Shell自己實(shí)現(xiàn)的比如cd、ls、cp、mv、rm、set、alias、for、if等。這些不依賴外部文件永遠(yuǎn)可用。EFI應(yīng)用程序編譯出來(lái)的.efi文件放在某一路徑下通過(guò)Shell去加載執(zhí)行。最典型的就是Shell.efi本身以及你寫的一些.efi小工具。Shell命令腳本.nsh本次重點(diǎn)。本質(zhì)是一個(gè)包含若干Shell命令的文本文件Shell逐行解釋執(zhí)行。你在Shell里敲一條命令Shell會(huì)先查內(nèi)置命令表然后查當(dāng)前目錄下有沒(méi)有對(duì)應(yīng)的.efi或.nsh文件再根據(jù)path環(huán)境變量的設(shè)置去一系列目錄里查找。這個(gè)查找順序很重要后面會(huì)講一個(gè)因此引發(fā)的詭異Bug。3.2 常用內(nèi)置命令的功能分組我按使用場(chǎng)景把常用命令分了幾組這比死記命令列表高效得多文件操作類ls、cd、cp、mv、rm、mkdir、touch、type查看文本文件內(nèi)容、edit文本編輯器、hexedit十六進(jìn)制編輯器。其中edit寫短腳本非常實(shí)用不用來(lái)回在Shell和操作系統(tǒng)之間切換。系統(tǒng)信息類mem內(nèi)存信息、devices設(shè)備列表、drivers驅(qū)動(dòng)列表、bcfg啟動(dòng)項(xiàng)管理、smbiosviewSMBIOS信息、acpiACPI表信息、ver版本信息。內(nèi)存與端口操作類mm內(nèi)存讀寫、io端口讀寫、dmemdump內(nèi)存、dmesg類似Linux的dmesg。這些屬于固件調(diào)試的利器也是Shell最危險(xiǎn)的一面——改錯(cuò)一個(gè)內(nèi)存地址系統(tǒng)直接就掛。腳本控制類set、if、for、while、goto、shift、pause、stall延時(shí)、exit退出腳本或Shell、reset重啟。這些是腳本語(yǔ)法的核心。Shell環(huán)境類alias命令別名、path可執(zhí)行文件搜索路徑、map設(shè)備映射、echo、cls。其中map命令本身還能用來(lái)修改映射關(guān)系。3.3 用好-help參數(shù)比查文檔快十倍UEFI Shell每個(gè)命令都支持-?也就是help的縮寫參數(shù)。比如Shell ls -?就會(huì)輸出ls的完整用法、參數(shù)說(shuō)明、示例。這個(gè)參數(shù)信息是命令自己內(nèi)置的不需要聯(lián)網(wǎng)查文檔。我寫腳本的日常流程基本上是拿不準(zhǔn)某個(gè)參數(shù)就先命令 -?看一遍然后開一個(gè)Shell窗口在機(jī)器上驗(yàn)證另一個(gè)窗口用edit寫腳本。有一個(gè)小細(xì)節(jié)-?和-h不一定等價(jià)。部分命令只支持-?你要敲-h反而會(huì)被當(dāng)成非法參數(shù)。這個(gè)和Linux下的習(xí)慣不一樣很多人上來(lái)就敲-h然后提示參數(shù)錯(cuò)誤還以為命令壞了。4. 腳本語(yǔ)法核心變量、參數(shù)、流程控制寫法到這里開始進(jìn)入正題。UEFI Shell腳本文件是.nsh后綴的純文本文件一行一條命令支持#注釋。我把語(yǔ)法拆成幾個(gè)相對(duì)獨(dú)立的部分來(lái)講。4.1 變量與環(huán)境變量%符號(hào)的用法UEFI Shell里所有變量都是環(huán)境變量沒(méi)有單獨(dú)的局部變量概念。你用它它就是一個(gè)全局的環(huán)境變量你刪它用set命令。設(shè)置和引用的語(yǔ)法set MYVAR hello echo %MYVAR%第一行把環(huán)境變量MYVAR設(shè)成hello第二行輸出hello。注意引用變量時(shí)必須用%包裹這和Windows批處理里的%VAR%寫法一樣。刪除變量用set MYVAR后面不跟值就是刪除。或者set -d MYVAR??串?dāng)前所有環(huán)境變量直接敲set不帶參數(shù)。有一個(gè)必須記住的坑**環(huán)境變量的值里如果包含特殊字符解析順序會(huì)導(dǎo)致意想不到的結(jié)果。**Shell對(duì)%的解析是在執(zhí)行命令之前做替換所以如果你在腳本里想輸出一個(gè)字面上的%得寫兩個(gè)%轉(zhuǎn)義——echo %%輸出一個(gè)%。這一點(diǎn)和批處理腳本一模一樣。Shell自帶一些內(nèi)置變量經(jīng)常用到的有%path%可執(zhí)行文件搜索路徑多個(gè)目錄用分號(hào)分隔。%cwd%當(dāng)前工作目錄。%lasterror%上一條命令的返回值/錯(cuò)誤碼。%startup%是否以startup.nsh方式啟動(dòng)腳本里可以用它判斷當(dāng)前是不是開機(jī)自啟。我實(shí)際寫腳本用到%lasterror%的頻率非常高。因?yàn)槟_本本身沒(méi)有try-catch機(jī)制判斷命令是否執(zhí)行成功唯一的辦法就是檢查錯(cuò)誤碼。4.2 腳本參數(shù)與shift處理執(zhí)行一個(gè).nsh腳本時(shí)可以帶參數(shù)比如Shell test.nsh arg1 arg2在腳本內(nèi)部%0拿到的是腳本名自身%1到%9依次是參數(shù)1到參數(shù)9%*是全部參數(shù)從參數(shù)1開始。有一個(gè)比較坑的地方UEFI Shell雖然支持shift命令但它的shift不太好用——它是把參數(shù)整體左移一位%1變成原來(lái)的%2以此類推。如果你拿%1做循環(huán)取出所有參數(shù)寫到第三四個(gè)參數(shù)之后容易亂套。我自己寫腳本處理不定長(zhǎng)參數(shù)時(shí)通常直接繞開%1~%9改用%*配合字符串截取操作。字符串操作指令在UEFI Shell里是%VAR:~start,len%這種風(fēng)格比如set fullarg %* set firsttwo %fullarg:~0,2%這可以截取參數(shù)的前兩個(gè)字符。語(yǔ)法風(fēng)格接近Windows批處理的%VAR:~m,n%。但因?yàn)镾hell對(duì)%的解析比較嚴(yán)格這種寫法在嵌套環(huán)境里偶爾會(huì)出問(wèn)題。所以遇到特別復(fù)雜的字符串處理我更推薦在腳本里調(diào)用echo加重定向生成一個(gè)新的臨時(shí)腳本再執(zhí)行這個(gè)臨時(shí)腳本——雖然笨但可控。4.3 分支if/then/else/endifUEFI Shell的if語(yǔ)法支持三種基礎(chǔ)形式if 條件 then 命令 endifif 條件 then 命令 else 命令 endifif 條件 then 命令 elseif 條件 then 命令 endif條件判定的寫法分兩種。一種是判斷環(huán)境變量是否存在或等于某個(gè)值if %MYVAR% hello then echo match endif另一種是文件存在性判斷if exist FS0:\EFI\BOOT\BOOTX64.EFI then echo found bootloader endif注意兩邊我習(xí)慣都加引號(hào)這是從批處理時(shí)代養(yǎng)成的習(xí)慣——如果%MYVAR%是空值不加引號(hào)會(huì)導(dǎo)致整個(gè)條件表達(dá)式語(yǔ)法不完整腳本會(huì)報(bào)錯(cuò)。加了引號(hào)之后空值就變成了一個(gè)空字符串參與比較穩(wěn)妥很多。還有三個(gè)邏輯運(yùn)算符可以用AND、OR、NOT。比如if exist FS0:\flag.txt AND %mode% test then echo enter test mode endif4.4 循環(huán)for和whilefor循環(huán)的語(yǔ)法是for %i in (val1 val2 val3) echo %i endfor注意循環(huán)變量用單個(gè)%不是雙%for %i in (1 2 3 4) echo %i endfor如果想遍歷文件列表可以這么寫for %i in FS0:\*.nsh echo %i endforShell會(huì)自己展開通配符把匹配到的文件路徑依次賦給%i。while循環(huán)的語(yǔ)法也類似while 條件 命令 endwhile這里有一個(gè)重要限制UEFI Shell的循環(huán)沒(méi)有計(jì)數(shù)器自動(dòng)遞增的能力如果你要用while計(jì)數(shù)必須自己修改變量。set counter 0 while %counter% 5 echo count is %counter% set counter %counter%1 endwhile等一下UEFI Shell的set命令不支持算術(shù)運(yùn)算。set counter %counter%1的結(jié)果是字符串01不是數(shù)字1。這是Shell腳本最讓人抓狂的地方——它沒(méi)有內(nèi)置的整數(shù)運(yùn)算能力。那怎么實(shí)現(xiàn)計(jì)數(shù)兩個(gè)辦法。一是借助for %i in (1 2 3 4 5)這種顯式列表實(shí)現(xiàn)固定次數(shù)循環(huán)二是用外部工具比如edk2自帶的parse命令或者其他小工具去處理數(shù)值?;蛘咄艘徊窖h(huán)次數(shù)已知就用for循環(huán)條件是基于環(huán)境變量且不需要自增的情況才用while。這個(gè)思路能讓你的腳本少走很多彎路。4.5 傳說(shuō)中的goto和標(biāo)簽UEFI Shell支持goto跳轉(zhuǎn)和標(biāo)簽goto :start ... :start echo start here標(biāo)簽是冒號(hào)加名字goto語(yǔ)句跳轉(zhuǎn)到指定標(biāo)簽。注意goto不能跳出當(dāng)前腳本文件的邊界——你沒(méi)法在一個(gè).nsh里goto到另一個(gè).nsh的標(biāo)簽。這和批處理一樣。但goto在Shell里還有一個(gè)比較危險(xiǎn)的行為如果標(biāo)簽不存在Shell不會(huì)報(bào)錯(cuò)退出而是直接跳到腳本末尾然后返回一個(gè)%lasterror%錯(cuò)誤碼。如果腳本是開機(jī)自啟動(dòng)的startup.nsh這種靜默失敗很容易被忽略后面真正要用的操作沒(méi)執(zhí)行你還不明所以。4.6 把多個(gè)命令串起來(lái)重定向和管道UEFI Shell支持重定向是覆蓋寫是追加寫。比如把命令輸出保存到文件ls FS0:\filelist.txt smbiosview -b FS0:\smbios.txt管道|在UEFI Shell里的支持比我想象中弱一些。實(shí)測(cè)下來(lái)管道在某些版本的Shell里能工作在另一些版本里會(huì)直接報(bào)語(yǔ)法錯(cuò)誤。比如ls | grep .efi這個(gè)命令在部分EDK2版本里能用Shell內(nèi)置了grep的簡(jiǎn)易實(shí)現(xiàn)但換到另一塊主板上可能就失敗了。我的經(jīng)驗(yàn)是正式腳本里盡量少用管道需要過(guò)濾輸出就先把結(jié)果重定向到臨時(shí)文件再用search命令或type加parse去處理。寧可多寫兩行也不要在管道這個(gè)特性上賭固件實(shí)現(xiàn)。5. 一個(gè)能直接上機(jī)跑的診斷備份腳本逐步拆解語(yǔ)法講再多不如一個(gè)完整的例子。下面這個(gè)腳本是我在某次批量主板測(cè)試中實(shí)際用的一個(gè)簡(jiǎn)化版本功能包括檢查設(shè)備映射、備份當(dāng)前BIOS區(qū)域模擬、收集SMBIOS信息、檢查關(guān)鍵啟動(dòng)文件是否存在。5.1 腳本的目標(biāo)與運(yùn)行邏輯這個(gè)腳本解決一個(gè)很實(shí)際的問(wèn)題現(xiàn)場(chǎng)運(yùn)維人員拿U盤插到機(jī)器上跑一下自動(dòng)把診斷信息和備份文件落盤然后退出。不需要他們懂Shell命令不需要手動(dòng)敲一堆指令。腳本放在U盤根目錄啟動(dòng)進(jìn)入Shell后執(zhí)行FS0:\debug.nsh所有輸出寫到同一個(gè)日志目錄下。5.2 完整腳本內(nèi)容# debug.nsh - 簡(jiǎn)易固件診斷與備份腳本 # 用法: debug.nsh [日志目錄](méi) set LOGDIR %1 if %LOGDIR% then set LOGDIR FS0:\LOGS endif if not exist %LOGDIR% then mkdir %LOGDIR% endif set LOGFILE %LOGDIR%\debug_%lasterror%.log # 1. dump設(shè)備映射 echo %LOGFILE% echo Device Map %LOGFILE% map %LOGFILE% # 2. dump SMBIOS信息 echo %LOGFILE% echo SMBIOS Info %LOGFILE% smbiosview -b %LOGFILE% # 3. 檢查關(guān)鍵EFI啟動(dòng)文件 echo %LOGFILE% echo Check BootLoaders %LOGFILE% set FOUND 0 if exist FS0:\EFI\BOOT\BOOTX64.EFI then echo FS0: BOOTX64.EFI found %LOGFILE% set FOUND 1 endif if exist FS1:\EFI\BOOT\BOOTX64.EFI then echo FS1: BOOTX64.EFI found %LOGFILE% set FOUND 1 endif # 4. dump啟動(dòng)項(xiàng) echo %LOGFILE% echo Boot Option List %LOGFILE% bcfg boot dump %LOGFILE% # 5. 備份當(dāng)前啟動(dòng)項(xiàng)配置 echo %LOGFILE% echo Boot Option Backup %LOGFILE% bcfg boot dump -v %LOGFILE% echo %LOGFILE% echo Done. Log saved to %LOGFILE% pause exit5.3 逐段講解為什么這樣寫參數(shù)與默認(rèn)值腳本開頭先取%1作為日志目錄如果沒(méi)傳參就默認(rèn)用FS0:\LOGS。這里用到了前面講過(guò)的空判斷技巧——if %LOGDIR% 空值時(shí)%LOGDIR%被替換成空字符串表達(dá)式就變成了if 成立進(jìn)入默認(rèn)賦值邏輯。日志文件的命名我在這里耍了個(gè)小聰明debug_%lasterror%.log。第一次執(zhí)行時(shí)%lasterror%可能為空或0第二次執(zhí)行時(shí)它等于上一次某個(gè)命令的返回值。這個(gè)命名其實(shí)不夠嚴(yán)謹(jǐn)最終生成的文件名可能不唯一但勝在簡(jiǎn)單。嚴(yán)格一點(diǎn)的做法是用%time%或%date%拼一個(gè)時(shí)間戳但UEFI Shell里的時(shí)間格式依賴固件實(shí)現(xiàn)輸出經(jīng)常是10:20:30帶冒號(hào)Windows文件系統(tǒng)不認(rèn)冒號(hào)所以用時(shí)間戳反而容易踩坑。smbiosview -b參數(shù)smbiosview是EDK2自帶的SMBIOS查看命令-b表示分頁(yè)輸出。在重定向到文件時(shí)分頁(yè)參數(shù)不僅不會(huì)打斷輸出反而能讓內(nèi)容一次性完整落盤不會(huì)因?yàn)榭刂婆_(tái)緩沖區(qū)限制丟行。這個(gè)細(xì)節(jié)最開始我不知道導(dǎo)致dump出來(lái)的SMBIOS信息只有前幾行排查了半天。bcfg boot dumpbcfg是啟動(dòng)項(xiàng)管理命令。bcfg boot dump列出當(dāng)前所有啟動(dòng)項(xiàng)-v參數(shù)會(huì)輸出更詳細(xì)的信息比如關(guān)聯(lián)的設(shè)備路徑。這個(gè)命令對(duì)排查為什么開不了機(jī)類問(wèn)題非常有用。注意bcfg在某些精簡(jiǎn)固件里可能沒(méi)被編譯進(jìn)去如果提示命令不存在回頭看我第6節(jié)的排查方法。5.4 執(zhí)行與驗(yàn)證這個(gè)腳本寫完后實(shí)際執(zhí)行時(shí)我用了一個(gè)小技巧先在QEMU里跑一遍確認(rèn)語(yǔ)法沒(méi)問(wèn)題再放到真實(shí)U盤上跑。QEMU里跑的時(shí)候第一次執(zhí)行會(huì)報(bào)一堆smbiosview: command not found之類的錯(cuò)誤嗎其實(shí)不會(huì)因?yàn)镺VMF固件里帶了SHELL的完整命令集。但真機(jī)上確實(shí)可能缺命令所以我在腳本里做了一件事所有可能失敗的命令后面都靠%lasterror%去判斷。更關(guān)鍵的一點(diǎn)寫腳本時(shí)每條命令的返回值都是獨(dú)立的。比如mkdir %LOGDIR%在目錄已存在時(shí)會(huì)返回錯(cuò)誤碼但這不影響腳本繼續(xù)執(zhí)行——Shell腳本默認(rèn)不會(huì)因?yàn)閱螚l命令失敗而中止除非你顯式寫-exit或使用abort命令。這也是很多新手感到困惑的地方明明上一行報(bào)錯(cuò)腳本還是往下跑了。理解這一點(diǎn)就能明白為什么腳本里要手動(dòng)檢查關(guān)鍵步驟的%lasterror%。6. 踩坑實(shí)錄六年UEFI Shell使用中遇到的典型問(wèn)題這一部分單獨(dú)拎出來(lái)因?yàn)檫@些坑我?guī)缀醵紝?shí)實(shí)在在踩過(guò)每一類都花過(guò)不少時(shí)間排查。寫出來(lái)幫你省點(diǎn)時(shí)間。6.1 文件系統(tǒng)大小寫與路徑分隔符UEFI Shell的文件系統(tǒng)和UEFI規(guī)范一樣不區(qū)分大小寫但輸出時(shí)可能混合大小寫。有次我寫了一個(gè)判斷if exist fs0:\EFI\BOOT\BOOTX64.EFI then注意我寫的是小寫fs0。Shell能認(rèn)出這個(gè)盤符嗎在大多數(shù)固件實(shí)現(xiàn)里可以但有些嚴(yán)謹(jǐn)?shù)膶?shí)現(xiàn)可能要求必須用FS0:全部大寫。我的建議是腳本里統(tǒng)一用大寫盤符、大寫路徑分隔符避免在固件兼容性上賭運(yùn)氣。路徑分隔符一律用反斜杠\不要用正斜杠/。UEFI規(guī)范里正斜杠在某些上下文里有特殊含義比如作為參數(shù)前綴萬(wàn)一你把路徑寫錯(cuò)排查起來(lái)非常痛苦。6.2 命令找不到環(huán)境變量和當(dāng)前目錄的坑path環(huán)境變量影響Shell對(duì)可執(zhí)行文件的查找范圍。有次我腳本里用了一個(gè)自研的診斷.efi工具放在U盤的EFI\Tools目錄下。腳本第一行執(zhí)行set path FS0:\EFI\Tools;%path%結(jié)果下一行調(diào)用這個(gè)工具時(shí)Shell提示命令找不到。排查了半天發(fā)現(xiàn)是set path這個(gè)操作本身的問(wèn)題——當(dāng)一個(gè)環(huán)境變量名是path時(shí)Shell在執(zhí)行set path ...之后當(dāng)前這條命令的解析還沒(méi)結(jié)束它用的還是舊的path。等到下一條命令時(shí)新的path才生效。這看起來(lái)很正常但問(wèn)題在于腳本第一行設(shè)置path第二行就要用應(yīng)該沒(méi)問(wèn)題啊后來(lái)發(fā)現(xiàn)真正的原因是UEFI Shell在解析腳本時(shí)某些實(shí)現(xiàn)會(huì)在每行執(zhí)行前重新讀取path變量而另一些實(shí)現(xiàn)只在腳本開始執(zhí)行時(shí)讀取一次path快照。第一種實(shí)現(xiàn)里你中途改path對(duì)后續(xù)行生效第二種實(shí)現(xiàn)里你必須把path設(shè)置放在腳本最開頭或者用一個(gè)外層的wrapper腳本去設(shè)置path再調(diào)用真正的腳本。 這個(gè)行為差異沒(méi)有寫在規(guī)范里純靠實(shí)測(cè)發(fā)現(xiàn)?,F(xiàn)在的處理策略是把path設(shè)置獨(dú)立放在一個(gè)env.nsh文件里所有需要環(huán)境變量的腳本第一行都改成include env.nsh或直接復(fù)制那兩行set命令。繞開實(shí)現(xiàn)差異。6.3include指令別對(duì)它寄予太多希望UEFI Shell有一個(gè)include命令可以理解為類似C語(yǔ)言的#include。用法include FS0:\env.nsh但實(shí)測(cè)下來(lái)include在多個(gè)版本里行為不太穩(wěn)定有的要求被include的文件必須帶.nsh擴(kuò)展名否則拒絕執(zhí)行有的在相對(duì)路徑下解析失敗。而且它不能傳參數(shù)被include的腳本里%1~%9會(huì)被清空還是保留原調(diào)用者的參數(shù)不同版本表現(xiàn)不一樣。我后來(lái)基本不用include需要復(fù)用代碼就直接把內(nèi)容復(fù)制進(jìn)主腳本或者通過(guò)執(zhí)行子腳本的方式傳遞參數(shù)call FS0:\subtask.nsh %parm%call是執(zhí)行另一個(gè)腳本的正確姿勢(shì)它會(huì)等子腳本執(zhí)行完再回到當(dāng)前腳本繼續(xù)。雖然每啟動(dòng)一次子腳本有開銷但在腳本規(guī)模不大的前提下可維護(hù)性比include強(qiáng)太多。6.4 腳本編碼與不可見字符UEFI Shell腳本文本文件的編碼要求不算嚴(yán)格但必須注意兩點(diǎn)。第一**保存為Unix換行LF還是Windows換行CRLF**實(shí)測(cè)而言Shell對(duì)兩種換行都能處理但混合換行會(huì)出問(wèn)題。如果腳本在Windows下編輯完放到Linux環(huán)境改了一行再拷回U盤文件中同時(shí)出現(xiàn)LF和CRLFShell會(huì)在某些版本里把一個(gè)\r當(dāng)成命令的一部分導(dǎo)致命令不存在之類的報(bào)錯(cuò)而且報(bào)錯(cuò)指向的行和你實(shí)際出錯(cuò)的行對(duì)不上——因?yàn)橹鹦薪馕鰰r(shí)CR被吞掉與否取決于實(shí)現(xiàn)。第二如果腳本里含非ASCII字符比如中文注釋必須在文件頭部加BOM否則Shell的文本解析可能亂碼。這個(gè)問(wèn)題在UEFI Shell 2.0之后有所緩解但保險(xiǎn)起見腳本里我一般只用純英文注釋。6.5%lasterror%的時(shí)效性%lasterror%變量在每條命令執(zhí)行后都會(huì)更新但它有個(gè)特點(diǎn)內(nèi)置變量對(duì)set命令本身也會(huì)被更新。也就是說(shuō)你執(zhí)行set foo 1之后%lasterror%變成的是這次set是否成功的狀態(tài)而不是最初那條你想檢查的命令的狀態(tài)。所以正確的檢查姿勢(shì)是這樣的bcfg boot dump FS0:\boot.txt set ERRCODE %lasterror% if %ERRCODE% 0 then echo dump ok else echo dump failed with %ERRCODE% endif先把%lasterror%存到一個(gè)普通環(huán)境變量里再拿去判斷。直接寫if %lasterror% 0雖然也能用但中間一旦插入別的命令比如echo值可能已經(jīng)變了。還有一個(gè)小細(xì)節(jié)%lasterror%雖說(shuō)是錯(cuò)誤碼但Shell命令成功時(shí)的返回值不一定是0。有些命令返回的不是標(biāo)準(zhǔn)0而是自定義狀態(tài)碼。所以判斷成功時(shí)更可靠的方式是檢查輸出文件的內(nèi)容是不是符合預(yù)期而不是只看返回碼。6.6 內(nèi)存讀寫命令的危險(xiǎn)性mm命令可以在Shell里直接讀寫物理內(nèi)存和IO端口Shell mm 0xE0000000 # 讀這個(gè)地址的內(nèi)容 Shell mm 0xE0000000 0x1F # 往這個(gè)地址寫0x1F這是固件調(diào)試的利器但也是最大的危險(xiǎn)源。寫錯(cuò)一個(gè)地址輕則系統(tǒng)死機(jī)重則把SPI Flash里的固件搞壞。我見過(guò)同事在調(diào)試時(shí)用mm往某個(gè)不知道是什么的地址寫了個(gè)值重啟后板子直接起不來(lái)最后靠編程器重新燒固件才救回來(lái)。在腳本里涉及mm操作我的建議是先dmem或mem把目標(biāo)區(qū)域讀一遍確認(rèn)地址有效。寫操作前人工確認(rèn)三次地址沒(méi)錯(cuò)。不要在自動(dòng)化腳本里放未驗(yàn)證的mm寫操作。操作完馬上reset重啟觀察不要繼續(xù)跑后面的腳本。6.7startup.nsh的自動(dòng)執(zhí)行機(jī)制如果你把U盤插上Shell啟動(dòng)時(shí)會(huì)自動(dòng)嘗試執(zhí)行U盤根目錄下的startup.nsh。這是一個(gè)很方便的機(jī)制但也容易出事故。有一次我調(diào)試腳本把startup.nsh放到U盤根目錄內(nèi)容是一個(gè)死循環(huán)等待某個(gè)條件。結(jié)果每次開機(jī)進(jìn)Shell就卡死拔U盤都來(lái)不及——因?yàn)镾hell啟動(dòng)時(shí)讀不到文件系統(tǒng)U盤被占住拔掉就報(bào)錯(cuò)。最后只能重啟進(jìn)BIOS把啟動(dòng)順序改成直接進(jìn)系統(tǒng)再把U盤格式化才解決。所以我對(duì)startup.nsh的態(tài)度是開發(fā)階段不要把調(diào)試腳本命名為startup.nsh用普通文件名手動(dòng)執(zhí)行。需要自動(dòng)執(zhí)行時(shí)startup.nsh里只放一個(gè)調(diào)用其他腳本的語(yǔ)句不要寫長(zhǎng)邏輯。重要操作前先pause給你自己留一個(gè)取消執(zhí)行的機(jī)會(huì)。6.8 腳本超時(shí)與交互Shell腳本執(zhí)行過(guò)程中如果需要人工輸入通常用pause命令等按任意鍵。但pause在無(wú)人值守場(chǎng)景下會(huì)卡住整個(gè)流程。如果需要倒計(jì)時(shí)自動(dòng)繼續(xù)可以寫一個(gè)循環(huán)配合stall命令單位是微秒實(shí)現(xiàn)延時(shí)set countdown 5 while %countdown% 0 echo Continue in %countdown% ... stall 1000000 set countdown ... endwhile這里有個(gè)矛盾set不支持算術(shù)運(yùn)算所以set countdown %countdown%-1是無(wú)效的。實(shí)際做法是把倒計(jì)時(shí)變量拆成多個(gè)if判斷或者干脆用固定次數(shù)的for循環(huán)。比如for %i in (5 4 3 2 1) echo Continue in %i ... stall 1000000 endfor這個(gè)方案最簡(jiǎn)單既不依賴算術(shù)運(yùn)算也不容易出錯(cuò)。7. 把Shell腳本用在自動(dòng)化測(cè)試?yán)锏墓こ袒悸纷詈笠徊糠至牧脑趺窗?nsh腳本寫得像工程代碼而不是隨手寫的玩具。這幾年我在固件驗(yàn)證項(xiàng)目里逐漸摸索出一套自己的規(guī)范分享出來(lái)供參考。7.1 約定目錄結(jié)構(gòu)一個(gè)完整的U盤工具包目錄結(jié)構(gòu)建議如下FS0:\ ├── startup.nsh # 入口腳本可選 ├── scripts\ │ ├── common.nsh # 公共函數(shù)用call調(diào)用 │ ├── debug.nsh │ ├── backup.nsh │ └── flash.nsh ├── tools\ │ ├── shell.efi # 備用Shell │ ├── xxxdiag.efi # 自定義診斷工具 │ └── ... └── logs\ # 日志輸出目錄腳本里統(tǒng)一用scripts\和tools\的絕對(duì)路徑不要在幾十行里到處寫FS0:\這種硬編碼。如果U盤盤符變了比如插到不同USB口變成FS1:至少還有救——你只需要改頂部的幾個(gè)set變量。7.2 輸出規(guī)范與日志級(jí)別UEFI Shell的echo命令沒(méi)有彩色輸出也沒(méi)法區(qū)分日志級(jí)別。我的做法是在腳本里統(tǒng)一一個(gè)日志函數(shù)的概念用子腳本實(shí)現(xiàn):log_info echo [INFO] %1 %LOGFILE% goto :EOF但前面說(shuō)過(guò)goto :EOF在UEFI Shell里的支持不完全可靠所以這種函數(shù)寫法我很少用。更實(shí)際的做法是每條輸出都同時(shí)打到屏幕和日志文件屏幕輸出幫助操作者實(shí)時(shí)了解進(jìn)展日志文件用于事后審計(jì)。具體寫法是這樣echo Step 1: dump smbios... | tee %LOGFILE%等等tee命令在UEFI Shell里通常沒(méi)有。所以實(shí)際做法是寫兩行echo Step 1: dump smbios... %LOGFILE% echo Step 1: dump smbios...麻煩是麻煩一點(diǎn)但可靠。我已經(jīng)不指望Shell腳本能寫出多優(yōu)雅的日志框架了能穩(wěn)定執(zhí)行比什么都強(qiáng)。7.3 與UEFI固件內(nèi)部的交互變量命名空間環(huán)境變量名不要起得太通用。比如你腳本里用了一個(gè)set boot后面某段代碼也用了set boot互相覆蓋了排查起來(lái)非常費(fèi)勁。我建議所有腳本變量統(tǒng)一加前綴比如項(xiàng)目名縮寫set DBG_LOGDIR FS0:\LOGS set DBG_MODE 1這樣不同腳本之間的變量沖突概率大大降低。另外注意UEFI Shell的環(huán)境變量會(huì)隨腳本退出而保留除非你顯式刪除或整個(gè)Shell重啟。也就是說(shuō)一個(gè)腳本設(shè)置的變量另一個(gè)腳本能看到。這既是便利也是隱患——一個(gè)寫壞了的變量可能在半小時(shí)后的另一個(gè)腳本里莫名出現(xiàn)。7.4 錯(cuò)誤碼傳遞與失敗處理腳本失敗時(shí)的退出碼是%lasterror%。在自動(dòng)化測(cè)試框架里我們經(jīng)常在Shell腳本的最外層套一個(gè)Linux或Windows側(cè)的驅(qū)動(dòng)腳本用串口或網(wǎng)絡(luò)和Shell交互。Shell側(cè)接收參數(shù)、執(zhí)行測(cè)試、返回錯(cuò)誤碼宿主側(cè)解析。這種模式下exit %lasterror%就非常關(guān)鍵確保Shell退出時(shí)把最后的錯(cuò)誤碼帶出去。但有兩點(diǎn)要特別小心不是所有版本的Shell都支持exit %lasterror%的語(yǔ)法。部分實(shí)現(xiàn)只支持exit不帶參數(shù)返回碼永遠(yuǎn)是0。如果你在.nsh里執(zhí)行了另一個(gè).efi程序該程序的退出碼會(huì)通過(guò)%lasterror%暴露出來(lái)但前提是Shell沒(méi)在這之間執(zhí)行其他命令。任何一條命令都可能覆蓋它。為了確保錯(cuò)誤碼正確傳遞在測(cè)試框架里我會(huì)專門寫一個(gè)report.nshset TEST_RESULT %lasterror% if %TEST_RESULT% 0 then echo PASS FS0:\logs\result.txt else echo FAIL:%TEST_RESULT% FS0:\logs\result.txt endif exit %TEST_RESULT%宿主側(cè)的腳本只認(rèn)result.txt里的內(nèi)容不依賴Shell退出碼——因?yàn)閷?shí)測(cè)下來(lái)有的固件版本退出碼頭幾位的字節(jié)會(huì)被截?cái)鄬?dǎo)致宿主側(cè)收到奇怪的值。7.5 與DXE驅(qū)動(dòng)和EFI應(yīng)用的配合UEFI Shell最有意思的地方是可以加載DXE驅(qū)動(dòng)和運(yùn)行各種EFI應(yīng)用。比如在測(cè)試過(guò)程中你可能需要先加載一個(gè)自定義的協(xié)議驅(qū)動(dòng)再跑測(cè)試工具。典型寫法load FS0:\tools\MyDriver.efi if %lasterror% 0 then echo driver loaded else echo driver load failed endifload命令加載驅(qū)動(dòng)后驅(qū)動(dòng)常駐內(nèi)存。此時(shí)可以用drivers命令查看驅(qū)動(dòng)列表用devices查看設(shè)備節(jié)點(diǎn)。如果有新設(shè)備出現(xiàn)說(shuō)明驅(qū)動(dòng)生效了。加載驅(qū)動(dòng)時(shí)特別需要注意驅(qū)動(dòng)一旦加載成功直到系統(tǒng)重啟前都不會(huì)被卸載。你連續(xù)加載同一驅(qū)動(dòng)兩次第二次會(huì)返回錯(cuò)誤但這個(gè)錯(cuò)誤并不影響第一次加載的效果。所以腳本里不要因?yàn)槟炒渭虞d報(bào)錯(cuò)就判定驅(qū)動(dòng)有問(wèn)題要結(jié)合drivers輸出確認(rèn)是否已在列表里。7.6 QEMU聯(lián)調(diào)不燒板子練腳本最后安利一下QEMU調(diào)試法。EDK2項(xiàng)目官方就提供OVMF固件配合QEMU可以完整模擬UEFI環(huán)境。具體步驟下載編譯好的OVMF.fd固件或者自己從EDK2源碼編譯。準(zhǔn)備一個(gè)FAT32格式的磁盤鏡像把寫好的.nsh文件放進(jìn)去。啟動(dòng)命令大致是qemu-system-x86_64 -drive ifpflash,formatraw,fileOVMF.fd -drive formatraw,filefat:rw:./diskQEMU啟動(dòng)時(shí)會(huì)自動(dòng)進(jìn)入OVMF的菜單選擇UEFI Shell即可。這個(gè)方法有兩個(gè)好處一是完全不用碰真實(shí)硬件腳本寫錯(cuò)了重啟一下虛擬機(jī)就行二是QEMU支持GDB調(diào)試你可以結(jié)合EDK2源碼單步跟蹤Shell命令的執(zhí)行流程理解每一條命令背后的邏輯。不過(guò)對(duì)大多數(shù)應(yīng)用場(chǎng)景來(lái)說(shuō)能快速驗(yàn)證語(yǔ)法就夠了也不必深入到那個(gè)程度。8. 最后分享幾個(gè)關(guān)于Shell腳本的心得回想這幾年跟UEFI Shell打交道的經(jīng)歷最深的感觸是這工具看著像Linux終端用起來(lái)像DOS批處理但它的很多細(xì)節(jié)都夾在固件實(shí)現(xiàn)和硬件平臺(tái)的縫隙里。同一個(gè)腳本在這塊板子上跑得好好的換一塊板子可能就行為迥異。所以我的建議一直沒(méi)變——腳本要向最基礎(chǔ)的命令看齊不要賭固件實(shí)現(xiàn)的一致性和文檔沒(méi)有覆蓋的邊界行為。具體到日常使用有幾件事是我每次上手都會(huì)做的拿到一臺(tái)新機(jī)器先敲ver看Shell版本再敲map看設(shè)備最后ls -?、bcfg -?看命令支持情況?;ㄎ宸昼娍焖僭u(píng)估這臺(tái)機(jī)器的Shell能力邊界比后面盲寫腳本踩坑強(qiáng)得多。寫任何涉及硬件操作的腳本前先在虛擬機(jī)里跑通邏輯再在真機(jī)上人工跑一遍驗(yàn)證命令可用性和輸出格式最后才正式使用。遇到詭異問(wèn)題先用type或hexedit看腳本文本有沒(méi)有不可見字符然后再懷疑語(yǔ)法。這個(gè)排查路徑能解決相當(dāng)一部分奇怪的問(wèn)題。如果你平時(shí)做BIOS開發(fā)或固件測(cè)試UEFI Shell腳本看著不起眼但熟練之后真的能幫你把很多重復(fù)的調(diào)試工作變成一條命令的事。把這篇文章里的語(yǔ)法和踩坑點(diǎn)消化掉你大概率就能寫出屬于自己的第一版可復(fù)用腳本了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
无码免费人妻A片AAA毛片西瓜| 亚洲综合五月天婷婷| 激情五月丁香六月综合AVXXXX| 五月丁香六月香香蕉| 亚洲综合五月天综合| 涩 五月 婷婷 狠狠| 五月丁香影视| 婷婷五月综合网| 久久这里只有国产视频| 丁香五色月婷婷网| 婷婷六月丁香开心深深爱| 人人操 色| 亚洲V国产V欧美V久久久久久| 久久婷婷五月天懂色| 婷婷瑟瑟五月天| 天天干,天天舔| 无码人妻一区二区一牛影视| 色色色色丁香| 91男人操女人视频| 国产,欧美,学生妹,视频| 久久六月天| 热成人网| 婷婷五月天成人基地| 香蕉综合网| 99综合成人视频在线观看 | 极品另类| 天天操天天干天天日| 五月丁香视频在线观看| 青青操avbb| 五月色网| 538午夜激情| 久久婷狠狠色| 九九综合九九| 成片免费播放| 五月丁香在线视频观看| 五月天六月天| 99视频在线观看视频| 亚洲激情网| 欧美视频五区| 色婷婷久久| 色色色97| 亚洲综合在线伊人婷| 亚洲综合视频网| 亚州激情九月| 97资源碰碰在线| 亚洲电影中文字幕| 99热99在线精品| 99五月香婷婷丁香在线视频| 神马久久五月天| 99久久国产宗和精品1上映| 五月天婷婷丁香| 久久婷婷伊人| 风流少妇A片一区二区蜜桃| 思思热视频| 狠狠干综合| 99热老网站| 夜夜 操无码| 日韩欧美成人片| 99色热视频在线| 天天澡天天狠天天天做| 91成人品| 怡红院AV亚洲一区二区三区H| 久久激情五月| 果冻传媒A片一二三区| 精品欧美性爱超级爽| 免费看欧美成人A片无码| 日本人妻伦在线中文字幕| 1024操逼| 玖玖激情五月天| 五月婷婷偷拍| 丁香五月天欧美在线| 日韩乱玛久久| 啊v视频在线观看| 337p大胆噜噜噜噜噜91Av| 五月丁香婷婷中文| 激情五月黄色| 天天搡日日搡aaaaⅩ| 97色久| 色五月网址| 五月天合网| 色五月婷婷开心| 婷婷激情啪啪| 9久精品| 免费看欧美成人A片无码| 亚洲妇女熟BBW| 91久久久久| 亚洲无aV在线中文字幕| 中文久久久人妻| 婷婷丁香基地在线| 嫩草视频在线观看| 丁香婷婷成年| 五月天激情四射| 午夜美女人啪最红院| 五月丁香六月婷婷色| 婷婷色5月激情网| www.色婷婷| 丁香色婷婷五月天| 六月婷婷最新网址| 色五月久久成人婷婷| 精品久久久久久久久久久久人妻| 丁香九月婷婷综合| 91在线资源| 久操干| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 国产日韩av片| 夜夜操激情| 色色操| 超碰免费人人肏| 五月丁香欧美综合| 亚洲色情网站| 国产乱子轮XXX农村| 国产婷婷五月| 五月天色婷婷视频| 久久99综合| 七七婷婷综合| 五月丁香色婷婷婷基地| 日本精品在线噜噜噜| 亚洲综合视频在线| 天天插,天天射| 日日噜噜夜夜狠狠久久丁香六月| 日本97久久久精品| 九九九九九九九热| 久久小视频| 国内久久亭亭| 色五月女| 97人人干视频| 激情综合激情五月| 五月丁香综合| 色综合色综合网| 2025年最新亚洲在线欧美| 99热网站| 91人操| 天天精品视频在线观看视频| 少妇AB又爽又紧无码网站| 婷婷激情综合色五月久久图片| 久久国产性爱A V| 91久久精品无码一区二区三区| 亚洲情综合五月天| 婷婷另类开心| 激情五月天色播| 激情综合在线播放| 五月婷婷基地| 成人va在线| WWW五月天| 五月丁香综合激情网| a级毛片一区二区免费视频| 五月丁香亚洲校园欧美| 99久久精品国产色欲| 无码人妻一区| 九月丁香网婷婷| 97香蕉碰碰人妻国产欧美| 国产精品香蕉| ady狠狠入| 五月丁香综合伦理片| 99黄色性生活| 九九综合色| 蜜臀99精品| 99久99久| 丁香五月香蕉| 人人操人人添人人摸97| 国产偷人妻精品一区| 大香蕉在线99热| 另类图片激情五月天| 五月色网| 96人人操人人操人人| 色婷婷亚洲精品天天综| 人人色人人摸人人看| 亚洲综合视频网| 九九精品re免费视频| 天天色天天爱天天爽| 欧美顶级少妇做爰HD| 伊人五月天日日夜夜久久久天天| 丁香五月天激情综合| 久久五月天综合视频网站| 久/久精品99看9| 超碰在线精品| 婷婷99狠狠| 色婷婷婷av| 另类图片五月天| 少妇丁香婷婷 | 日韩黄色影院| 色婷婷五月天视频在线| 六月婷婷七月丁香| 久热这里只有| 精品少妇蜜臀91| 春色激情| 婷婷五月色惰| 怡红院99| 五月色婷婷夜色| 久久免费精彩视频| 日本妈妈乱| 亚洲精品久久久久久久久久吃药| 99热精地址| 精品人妻久久久久久久| 极品嫩草| 91人人操.COM| 六月婷婷五月丁香首页| 小香蕉av| 天天色天天日| www.99热这里精品| 五月天婷婷永久免费视频| 无码色| 天天肏视频| 99热碰碰热| 亚洲另类婷婷综合| 狠狠操天天干| 综合色激情| 91色在线 | 日韩| 婷婷色丁香六月| AV在线不卡网站| 丁香六月无码播放| 91美女被操| 五月天色色色| 色五月丁香五月| 久久9久久| 99色综合| 女人天堂 AV| 99在线视频女女视频| 97超碰在线免费观看| 九九热色视频| 九九九九热99超碰| 丁香激情久久| 婷婷久久六月费| 超级碰 久久9| 久99| 五月天网站亭亭| 婷婷九月在线| 第2色五月婷| 久热婷婷综合| 婷婷五月电影院| 亚洲五月天综合色| 光棍影院日韩精品| 欧美精品999| 五月婷婷网久久| 欧美婷婷九月| 青草青草视频2免费观看| 99热这里只有精品一区| 五月婷婷综合激情网| 老师的粉嫩小又紧水又多A片视频| 五月停停丁香| 香蕉婷婷色五月| 91日综合欧美| 国产欧美日韩综合精品一区二区| 婷婷性福五月天| 思思久久99热| 开心五月婷婷婷美女| 婷婷丁香色五月| 99色在线观看| 99热这里只有99| 极品五月天| 超碰在线91| 婷婷六月花| 91avse| 91黄操| 九九aV| 久久小片| 日日肏天天操| 欧美大奶熟女噜噜噜噜| 色色日本欧美| 91在线资源| 色色色热| 97婷婷丁香| 久久思思热视频| 色五月涩涩婷婷蜜桃| 婷婷丁香社区| se婷97| 精品亚洲国产成AV人片传媒| 黄网在线免费观看| 99热思思| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 怎么样可以看免费的一级av| 久久久噜噜噜久久人妻| 婷婷综合精品视频97| 婷婷精品视频| 六月丁香中文字幕| 中日韩狠狠色| 婷婷五月中文字幕| 色色色色区| 日日干四虎| 大香蕉综合网| 五月丁香| 婷婷激情小说| 狠狠干无码| 激情九九六月激情免费视频| 五月天激情小说欧美激情| 激情五月天开心网丁香无码| 色婷婷伊人| 五月丁香久久呀| 五月丁香六月婷婷激情四射| 美女视频图片久久91| 无码人妻AV久久久一区二区三区| 97人人干| 国产毛片精品一区二区色欲黄A片| WWW.99热| 色五月激情五月天| 五月丁香六月婷婷啪啪| 亚洲va综合va国产va中文| 久月婷婷| 99精色| 五月婷婷啪啪啪| 人人97碰| 99热8| 婷婷金品综合视频| 性爱综合网| 思思热在线视频精品| 秋霞性爱AV| 夜夜 操无码| 日日干天天| 99热免费观看| 91男同视频| 激情性爱五月天网页| 狠狠精品干练久久久无码中文字幕| 99无码精品| 婷婷五月情| 婷婷五月色天| 电影91久久久| 欧美大片免费观看| 国产精产国品一二三在观看 | 日韩无码人妻一区二区三区综合 | A片试看120分钟做受图片| 人人干av| 嫩草免费视频| 九九热精品99| site:jszngf.com| 成人超碰AV| 六月色色综合| 丁香五月成人网| 久久婷五月婷| 天堂无码人妻精品AV一区| 99超超碰| 色色色色色五月| 久久伊人9| 色激情综合| 欧洲永久精品| 激情六月色| 色99网| 久久久久久久久久8888| 琪琪色网址| 日hao1区| 狠狠久久婷五月综合色| 天天日天天舔| 五月天激情国产综合婷婷婷| 亚洲第一成人AV| 五月天天综合| 丁香综合伊人AV| xxx.色婷婷| 色丁香五月| 日本三级大片| 婷婷五月天你懂的| 99在线视频免费| 亚洲欧洲99| 伊人婷婷激情| 啊v视频在线观看| 日韩在线一级| 另类视频五月天| 影音先锋色婷婷| 粉嫩AV久久一区二区三区| 欧美久久九九| 亚洲色9| 久99久热只有精品国产99| 久热a| 午夜成人网站在线观看| 中文字幕无码AV| AV色婷婷| 开心婷婷五月天激情网| 欧美成人精品A片免费一区99| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 超碰九色| 这里只有精品免费观看网占| 久久综合九九| 婷婷综合色图| 人人操插| 另类激情五月天| 婷婷五月综合久久中文字幕| 国产黄大片在线观看画质优化| 亚洲一区二区无码蜜乳av| 成人草榴视频| 五月婷婷六月丁香免费| www.henhengan| www久| 97操碰免费视频| 亚洲在线网站| 亚洲最大五月六月丁香婷婷| 久久综合首页| 99免费热视频在线| 丁香五月中文字幕久色| 婷婷五月丁香六月| 成人中文字幕在线| 色五月婷婷影院| 五月天激情网图片| 都市激情蜜桃婷婷五月天| 99色色| 丁香六月天婷婷色| 一本道综合网| 99啪啪视频| 26UUU欧美激情一区二区| 免费不卡狠操美女视频网 | 久艹大香蕉| 99人妻碰碰久久久禁片| 91操色| 九九AV在线| 日本全黄一级999| 激情网婷婷婷| 亚洲狠狠色丁香婷婷综合久久| 91性高潮久久久久久久久| 色五月婷婷五月| 亚洲第一成人AV| 婷婷五月天色综合翘| 色噜噜狠狠色综无码久久合欧美| 婷婷五月影院| 色综久久AV| 久九色| 伊人九九综合| 天天干天天干天天干| 色九月丁香婷婷蜜桃在线观看| 欧美噜一噜| 荫道BBWBBB高潮潮喷| 九九热视频精品2| 午夜激情综合| 草综合网| 五月玖玖| 日韩成人中文字幕| 婷婷五月综合网| www.婷婷五月天.com| 五月色综合网| 另类视屏| 色五月天激情| 欧洲99视频在线| 婷婷丁香十月| 五月天a婷婷伊人| 7EzOBIhNq85TO| 深爱丁香激情| 自拍视频99| 俺去也综合| 教师性爱毛片| 99视频在线观看网址| 91无码高清| 99九九玖玖| 國語久久婷| 色啪网| 在线视频色五月| 丁香五月av| 五月天婷婷青青草| Www.狠狠| 人妻啪啪啪| 26UUU精品一区二区| 久色网址| 国产古装妇女野外A片| 天堂AV在线看| 五月丁香婷婷啪啪网| 五月天婷婷AV| 99热99网| 婷婷五月天渟渟| 天天干天天日天天操| 婷婷色丁香五月| 婷婷五月花| 激情五月天之五月婷婷| 专区无日本视频高清8| 热久视频| 另类图片色五月| 婷婷激情四射| 激情五月婷婷开心网| 色婷婷狠狠爱| 色色色激情网| 熟女网站久久| 丁香五月骚喷水视频| 亚洲日本三级片| 97精品自拍| 97丁香五月天| 九九视屏| 国产成人精品一区二区三区视频| 五月丁香婷婷六月| 丁香五月婷婷啪| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 9999热在线观看| 天天影院色| 色色婷婷综合网| 人人插9| 五月色网| 婷婷六月色开 | 苗黎美女四级成人版一级二级毛片| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 色吧五月婷婷| 亚洲小说五月婷婷| 亚洲无aV在线中文字幕 | 91色九| 六月婷婷中文字幕| 五月丁香久久| 五月丁香六月停停| 亚洲午夜精品久久久久久人妖| 五月天丁香婷婷久久九| 天天色天天操天天射| 可以看的AV| 五月丁香六月婷婷,婷| 色婷婷人人| 婷婷激情五月综合| 亚洲AV综合在线观看| 射久久丁香五月| 激情网站五月| 狼人婷婷久久| 婷婷综合成人五月天| 色婷婷丁香九月| 日韩无码AV电影网站| 粉嫩av懂色av蜜臀av熟妇| 79色色| 99热99日…..| 狠狠色色| 91凹凸在线| 久热99中文字幕| 婷婷五月大香蕉| 天天草天天摸| 色五月婷婷啪啪五月| 五月天开心色情网| 色婷婷激情五月天| 91热在线观看视频| 五月婷九月| 人人操AV| 色婷婷色99国产综合精品| 日亚二欧美| 丁香五月综合网亚洲综合欧美狠狠| 国产VA播放| 久99热| 久久人人九| 强奸幻女毛片| 变态另类色图| 玖玖九九9999在线观看视频精品| 9热成人在线视频| 九月色婷婷| 五月激情偷拍| 亚洲六月色| 亚洲黄色精品| 99热日| 五月婷婷深深爱| 另类激情中文| 婷婷丁香五月综合免费视频百花| 婷婷五月无码| 天天干天干| 99无码黄色视频| 蜜桃五月天| 狠狠做五月婷婷| 天天综合激情| 成人羞羞啪啪 全 视频| www.伊人天堂偷偷婷婷| 欧洲激情五月天| 天天草天天爱| 午夜亚洲AV日韩无码| 天天综合网站| 日韩无码AV电影网站| 亚洲宗合激情| 99在线视频操999| 亚洲五月六月婷婷| 欧美日韩精品一区二区三区钱| 3DAV亚洲香蕉久久 一区二区| 亚洲人操亚洲人| 啪啪啪丁香五月| 丁香五月婷婷综合激情啪啪啪| 久久99综合| 中文字幕 码精品视频网站| 丁香婷婷啪啪| 亚洲成人在线在线| 欧美色色日韩| 日韩一级A片黄色| 99久久99九九99九九九| 久久婷婷成人视频| 天天日日天天| 狠狠色丁香| 丁香激情五月| 在线综合网| 少妇人妻偷人精品无码视频新浪| 极骚大香蕉伊人| 99热99草97| 丁香 久久| 玖玖婷婷五月天| 二人电影免费版在线观看| 日韩六十路91性交电影| 天堂五月婷婷| 日本久久99| 天天草女人| 狠爱婷色| 久热只有这里有精品| 丁香综合伊人AV| 99热在线观看精品免费| YJLZZJLZZ亚洲乱熟无码| 色五月天在线观看| 久婷婷视平| 久久精品63| 中文字幕久久婷九女同| 怎么样可以看免费的一级av| 欧美色色日韩| 五月丁婷香| 97五月天婷婷| 97丁香婷婷| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 665566 无码| 五月色激情综合网| 丁香五月天在线观看视频| 青青草蜜臀| 激情五月天小说网| 超碰在线99| 五月丁香婷婷激情图片| 另类精品视频在线观看| 欧美综合激情五月| 色婷婷综合久久久久| 情欲禁地| 久久99综合| 激情五月婷在线精品| 99热免费精品| 九月激情婷婷丁香| 成人在线视频网| 亚洲成人噜噜| 欧美搡BBBBB摔BBBBB| 91婷婷五月丁香碰| WWW.桔色成人.COM入口| 夜夜久久综合网| 四川BBB搡BBB爽爽视频| 五月丁香另类图片| 天天天久久人人人合| 夜夜操夜夜操| 精品99视频| 新激情五月开心五月婷婷五月丁香五月| 五月婷婷丁香五月婷婷丁香| 日韩中文字幕| 综合激情五月天| 亚洲第一综合| 啪啪九九色| 这里只有精品日韩精品| 婷婷激情九月| 久久99热久久99精品| 久久只有18视频| 丁香五月97视频| 色插综合网| www.色综合| 五月婷婷丁香五月| 中国激情网| 国产av天堂| 自拍偷窥99热| 婷婷六月色开 | 狠狠操狠狠操AV| 婷婷在线中文字幕| 激情久久四色| 五月天亭亭俺也| 91久久五月天| 思思热在线视频精品| 懂色av粉嫩AV蜜臀AV| 婷婷激情四射网| http://www.sd-xiangsu.com/| 99热在线播放| 99久久99视频只有精品| 激情av| 亚洲黄色精品| 综激情网| 狠狠色丁香久久| 日韩色色视频| 日韩在线一级| 色噜噜狠狠色综无码久久合欧美| 91综合网| 五月天国产婷婷精品视频在线| 六月婷欧美丁香综合| 五月丁香久久久| 国产熟妇的荡欲午夜视频| 亚洲 综合中文| 久操热| 激情五月天婷婷图| 可以直接看的av| 97操操操| 亚洲国产99| 丁香丁香激情网| 激情五月天婷婷| 婷婷综合另类小说| 欧美性生交XXXXX无码小说| ,99视频久久| 人妻人人操| 91精品熟女| 国产真实乱了老女人视频| 婷婷亚洲五月丁香综合在线| 久草婷婷| 丁香五月天精品| 久久婷婷免费| 免费在线观看欧美激情xx小视频| 婷婷激情五月天小说| 99久久www| 天天肏视频| 久久精品性爱| oVV4WIB3vFi8D| 九热视频在线伦| 91婷婷五月天嫩女| 婷婷久久久久| 成人在线视频网| 丁香五月婷婷成人网| 91丁香婷婷综合久久欧美| 五月丁香六月情| 欧美日本黄色| 精品无码久久久久久久久 | 九草性爱| 天天插天天日| 五月色精品| 男人視頻站| 91人人爽狠狠狠| 五月天婷婷六月激情网| 狠狠色综合五月人人| 99视频在线精品免费观看2| 日本九九网| 久操97| 热的国产,热的综合,热的有码| 熟女强人妻一区二区三区四区无| 老司机日日夜夜青草| 欧美日韩123| 国产精产国品一二三在观看| 五月天狠狠网| 五月天激情黄色小说在线观看| 久久精品99国产精品日本| AV性爱网| 综合五月草| 久久久9久| 日韩操人| 亚洲天码视频www蛋播视频| 嫩模aV在线| 亚洲亚洲人成综合网络| 日韩啊啊啊| 婷婷激情综合无月| 久久五月情| 婷婷激情图片| www,天天干| 久er7久热| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 婷婷丁香久久| 五月婷丁香| 五月激情综合婷婷| 丁香五月婷婷亚洲色图| 激情五月综合| 五月丁香六月婷婷激情网| 99成人精品六| 无码yw| 久久五月婷6 9| AV在线大香蕉| 天天做天天爱天天做| 做爱夜夜干天天操| 亚洲成人无码网站| 97成人操| 欧美一级色| www.狠狠| 能直接看的AV网站| 丁香八月综合激情| 五月婷精品| 婷婷干六月综合旧址| 26uuu亚洲| 超碰五月婷婷五月天| 成人短视频在线观看| 亚洲婷婷欧美婷婷| 99这里只有精品视频在线| 六月婷婷av| 殴美97色| 五月天久久色| 国产古装妇女野外A片| 五月色网| 日日夜夜狠狠| 久久A区B区| 色色色欧美色色| www.婷婷网| 婷婷五月电影院| 久久一品区| 久久六月综合| 色欲AVV| 狠狠精品干练久久久无码中文字幕| 五月婷婷丁香综合| 欧美 日韩 成人 在线| 色欲色香综合网| 伊人色欲五月天| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 丁香婷婷色情| 夜夜谢天天干| 97色色色色色| 79色色色色| 中文字幕乱轮| 六月色丁香中文字幕| 五月丁香网站在线播放| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 91精品久久久久久77777| 中文AV在线播放| 丁香美女五月天婷婷| 26uuu亚洲| 亚洲欧美一区二区三区四区爱爱动图| 五月婷婷综合色啪首页| 五月婷庭丁香在线| Jh7Uf088VHafNm| 婷婷开心青青草| 欧美99热| 电影《战争与艾拉》免费观看| 青青操绿aaa一区日v| 六月丁香婷婷拍拍| 激情深爱婷婷网| 成久综合视频| 伊人大香五月天| www.狠狠操.co m| www.25五月婷婷| 深爱激情网婷婷| 79色色免费| 日日操,天天操| 99热这里在线精品| 五月天开心婷婷久久| 无码毛片992367| 99亚洲欧洲| 开心五月天激情网站| 激情婷婷色五月| 婷婷丁香18| 超碰色色综合| 9久久精品| 欧美激情性做爰免费视频| 亚洲色无码A片一区二区麻豆| 五月婷婷天| 国产人妻777人伦精品HD| 四季8848精品成人免费网站| 久久99大| 婷婷综合亚洲| 欧美日本综合网| WWW、日本色丁香、co m| 九九久久视频| 大香蕉五月婷婷| 天天射影院| 丁香六月在线综合| 五月丁香综合成人社区| 婷婷五月天黄色| 精品99这里有| 精久久色| 综合久久综合久久| 婷婷色中文字幕| 五月婷婷电影院| 丁香六月婷婷久久高清| www.99热日韩.com| wwwC0maV五月花| 色5月丁香婷婷| 婷婷综合网站| 欧美三级视频| 欧美三日本三级少妇三99| WWW丁香五月| 欧美激情综合色丁香婷婷五月天 | 色开心五月婷婷丁香HD| 亚洲操精品| 另类综合激情| 丁香激情五月| 无码99| 七七色综合| 2015超碰| 免费看欧美成人A片无码| 琪琪色网在线| 婷婷综合色图| 丁香六月天婷婷开心综合| www热久久yy9| 午夜不卡久久精品无码免费| 精品欧美性爱超级爽| 久久精品9| 色色婷婷综合网| 人妻AV在线观看| 丁香六月丁香婷婷激情| 狠狠爱婷婷| 手机看片日日做夜夜| 色五月在线播放| 涩五月婷婷| 九月婷婷人人操人人舔人人爱| 成人 在线 日韩| 五月丁香在线看| 五月丁香网站| 国精产品一区二区三区| AⅤ色区| 婷婷99中文字幕| 久久精彩视频18| 综合激情五月天| 激情五月天影院| 欧美性生交XXXXX无码小说| 懂色av蜜臀av粉嫩av永陈冠希| xx综合网| 久久婷婷色| 五月天色色色网| 婷婷永久在线| 99视频自拍| 日本三级片片| 狠狠干狠狠干狠狠干狠狠干| 99re热视频这里只精品| 欧美在线视频9| 夜夜爽日日躁| 色五月综合网| 91人妻人人操人人爽| 九九视频这里有精品| 日本欧美成人片AAAA| 久久东京热婷婷五月| 999影院成人在线影院| www.婷婷五月| 激情综合99| 久久五月天激情| 中文字幕精品无码一区二区| 久久机热这里只有精品免费视频| 人人摸人人| 天天操综合网| 激情小说视频图片| 亚洲国产成人裸舞| 精品99在线| 狠狠色综合777| 激情av在线| 开心五月激情五月丁香五月婷婷| 久久只有18视频| 在线看黄色| 天天爽,夜夜爽| 香蕉久日夜| 激情综合激情五月| 亚洲熟妇AV乱码在线观看| 天天操天天日天天爱| 久久网日本| 骚五月婷婷| 久久99网| 五月丁香激情婷婷综合| 女婷久久| 这里只有精品99www| 日韩在线一级| 天天色天天色天天色天天色天天色| 亚洲精品99| 天天日夜夜欢| 婷婷中文无码| 日韩成人AV在线播放| 丁香五月天.com| 青996青| 午夜成人综合| 91丨九色丨白浆| 99操免费视频| 91婷婷在线| 九九综合| 久久婷婷伊人| 色五月婷婷在线| 五月天另类小说亚洲| 五月天婷婷久久视频| 男人天堂亚洲综合| 天天干天天做| 五月丁香婷婷久久| 久久久久9久无码视频| 五月婷婷啪啪网| 色啪久| 99热这里只有精品69| 久久99久久99久久99| 人人视频色| 亚洲国产成人AV在线| WWW.桔色成人.COM| 日本天堂爱爱| 色五月婷婷久久| 五月社区丁香| 97操资源婷婷| 日本va欧美va欧美精品88| 七七九色| 色情五月婷婷| 婷婷五月天激情在线观看| 九九XX视频| 中文AV网站| 五月天婷婷免费| 丁香五月婷婷基地| 婷婷丁香五月欧美人| 久久99久久99www| 9l视频自拍9l九色9l成人| 六月婷婷激情图片| 97人妻碰碰中文无码久热丝袜| 夜夜夜叫天天天做| 五月婷婷精品视频| 久久天堂网| 五月婷婷少妇之| 色五月噜噜| 丁香婷婷91在线观看视频| 久久视屏这里只有久久| 美国少妇性做爰| 色五月六月| 色婷婷九月| 噼里啪啦完整版中文在线观看 | www.婷婷| 色爱终和网| 亚洲综合网 665566| 在线只有精品| 色J香五月天| 蜜臀AV在线成人| 婷婷色色网站| xxxx久| 五月婷婷婷婷婷婷艺术| 影音先锋偷偷色男人站| 五月天婷婷激情在线色图| 开心五月天激情| 五月丁香六月婷婷啪啪| 99网| 99在线观看精品| 天天综合干| 五月婷婷草| 青柠影视免费高清电视剧| 五月丁香六月婷婷网| 91热视频色网站| 香蕉网婷婷| 97操碰碰无码视频| 久久五月激情| 99精品在线| 婷婷黄色网| 97婷婷色| 日日夜夜干| 亚洲射激情| 色狠狠综合| 国产高潮白浆一区二区| 开心五月深爱五月| 伊人玖玖网| 婷婷综合网伊人| 成人国产网站| 激情文学综合婷婷五月天丁香花| 五月天丁香综合久久国产| 色五月婷婷丁香婷婷| 国产老熟妇亲子乱对白| 久久久一级AAA| 婷婷网五月天| 丁香五月六月综合欧美| 免費亭亭成人| 91超级碰| 五月天激情综合网| 色婷婷成人做爰A片免费看网站| 影音先锋噜一噜| 亚艹艹| 99高级会所久久| 久操无码| 成人免费视频一区| 久久婷青青草原| 天天干天天爽| 99免费热视频在线| AV性爱网| 天天色天天色天天色天天色天天色| 99re热精品在线视频| 色婷婷久久天天性爱| 五月丁香亭亭A片| 狠狠色婷婷7777久| 伊人婷婷综合| 丁香六月激情国产| 五月开心深深爱激情综合| 五月天快乐开心激情网| 99自拍网| 婷久久| 七月激情六月婷婷综合在线播放| 国产偷人爽久久久久久老妇APP | 亚洲综合在线丁香五月| 狠狠艹狠狠艹| 亚洲午夜av| 91偷拍视频| 91无码高清| 婷婷五月天丁香久久| 亚洲av电影网站| 国产成人精品一区二三区熟女在线| 久久999久久999久久999久久| 五月婷激情| 五月情色天| 五月激情六月综合| 婷婷综合色五月天| 久久久区区一久久久久久| 五月婷婷无码专区| 色欲五月天| 这里只有国产精品在线| 色五月久久成人婷婷| 久久久久久久综合狠狠综合| 激情五月婷婷丁香六月| 综合色五月天| 成人免费网站免费看| 99啪在线视频| 综合精品99| 五月丁香婷婷激情影院欧美| 99在线热视频| 九九热99熟女| 五月婷在线观看| 7777激情基地| 亚洲夜五月| 欧美精品久久久久久视频观看| 久久五月天精品视频| 天天草狠狠擦| 五月色婷婷综合丁香精品无遮挡| 无码激情精品色婷婷久久久久| 日日色五月天| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 91热久久| 99re6热在线精品视频播放速度| 国产精品久久久99视频| 涩涩五月天综合| 99re热| 五月丁香激情欧洲啪啪| 99热12| 九九精品热播| 黄网在线播放| 成人亚洲精品| 国产69久久久欧美黑人A片| 99热这里有精品| 91日本在线免费| 五月天婷婷激情在线色图| 久久91久久精品久久| 人人叉久| 超碰人人超碰| 色五月亚洲五月天| 色综合网综合| 日批在线看| 五月婷精品| 激情综合色图| 久久激情网| www,setingting| 98色丁香五月婷婷综合网| 日韩综合网络男女香蕉a片| 国产欧美婷婷| 五月婷婷激清网| 色色激情五月| 日韩成人综合网| www.1024久久| 五月丁香激情四射综合| 天天久久66xxx| 狠狠色激情综合| 五月丁香六月色| 婷婷五月天激情丁香| 91凹凸在线| 丁香色婷婷| 天天干天天操天天爱| 开心激情综合| www99热| 久久婷婷一级片| 中文AV在线观看| 79精品在线视频| 播五月丁香六月| 五月亭亭六月天| 狠狠婷婷色综合| 国产老熟妇亲子乱对白| 五月色情婷婷开心五月色情| 丁香五月无码| 天天日天天干天天操| 丁香五月婷婷啪啪视频| 51XX午夜影福利| 99亚洲大片精品永久在线观看| 天天做天天爱天天爽综合网| 五月丁香色综合| 日本色色视频| 天天婷婷综合| 五月色色激情网| 性爱视频久久| 久久天堂加勒比| 丁香女人五月天| 超碰国产AV| 精品夜夜澡人妻无码AV| 棕合影院色色| 亚洲色域网| 婷婷五月激情综合| 亚洲av电影网站| 婷婷五月大香蕉| 噜噜噜噜噜色| 六月天婷婷| 色色色区| 婷婷五月天手机版视频| 另类图片天天影视在线观看| 91色性感五月婷婷丁香| 丝袜激情网| 六月亭亭久久综合激情| 中文字幕在线播放视频| 国产黄色av| 色五月婷婷、老熟女| 色色婷婷五月| 超级碰碰视频无码| 激情久久五月网| 色色激情| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 丁香综合婷婷开心激情网| 久久久久思思热| 亚洲精品白浆高清久久久久久| 久热黄色| 五月丁香成人小说| 狠狠色综合五月人人| 五月丁香久久综合| 色色激情网| 人妻激情久久| 国产视频久色| 色色婷婷五月天| 啪啪黄页网| 韩国三级五月天婷婷。| 成人无码髙潮喷水A片| 亚洲AV免费在线| 超碰成人在线观看| 亚洲精品中文字幕成人片| 五月丁香婷婷潮喷中文字幕| 国产精品第一国产精品| 五月天综合久久丁香91| 久久激情五月婷婷| 国产干逼片| 亚洲色色色色| 免费视频WWW在线观看网站| 五月总合激情网| www.五月天色色.com| 一二区成人电影| 色婷婷精品| 日韩三级视频一区二区| 色噜噜在线| 婷婷99视频在线| 停停色综合伊人| 六月婷婷激情| 五月天色狠狠| 综合激情视频| 91精品久久久久久综合五月天| 亚洲欧美一区二区三区四区爱爱动图| A片天天| 开心五月丁香啪| 色色色色丁香| 5月婷婷性视频| 国产成人综合亚洲| 五月丁香婷婷婷婷综合网| 午夜69成人做爰视频| 久久这有这里精品| 久久精品国产一区二区三区四区| 天天天久久久| 日本欧美成人片AAAA| 综合亚洲五月天| 最近中文字幕大全免费版在线 | 婷婷基地成人五月天| 桃色成人网| 丁香八月综合激情| 99色人| 国产精品五月天婷婷| 99小视频在线观看| 五月婷婷天天| 超碰二区| 欧洲亚洲免费视频9| 亭亭玉立国色天香| 久9热| 99性感视频| 久久五月热| 九九色色| 五月婷婷啪啪啪| 婷婷综合五月| 亚洲久久视频| 激情AV综合| 色狠狠色噜噜AV天堂五区消防| 99精品超在线播放| 日本色图综合| 激情美女五月天| 国产婷婷色综合AV蜜臀AV| 丁香五月婷婷手机| 久久丁香九| 五月婷婷AV| 日日夜夜狠狠婷婷色| 97很鲁在线视频| 欧美va欧美va差| 六月丁香色色| 五月婷婷啪啪| www.热99热| 中文字幕婷婷在线| 91九九| www.夜夜夜| 色九九九综合| 五月丁香六月色| 成人精品一区二区三区四区五区| 91精品丝袜久久久久久久久粉嫩| 超碰AV在线| 啪啪啪五月天| 久草五月丁香婷婷综合| 成人短视频在线免费观看| 九九黄色网| 五月丁小婷婷激情四射| 激情综合网五月婷婷| 丁香婷婷色五月| 97综合在线| 亚洲无码99| 五月丁香综合久久| 婷婷久久女人| 婷婷色色五月| 免费试看小视频 99| 日韩三级视频一区二区| www.色综合.com| 五月熟妇婷婷久久| 丁香五月综合久久| 六月丁香激情网| 思思 热 99|