linux啟動流程及其自動化安裝

一掏颊、Linux系統(tǒng)啟動流程


? centos6 Linux系統(tǒng)啟動流程大致概括為:POST加電自檢-->Boot Sequence(BIOS)-->Boot Loader(MBR)-->Kernel(ramdisk)-->rootfs(readonly)-->/sbin/init等六個階段糟红。

系統(tǒng)啟動流程.jpg

POST加電自檢

? 在接通電源后,系統(tǒng)會啟動同CMOS上的POST程序乌叶,根據(jù)其配置信息讀取硬件設(shè)備信息并檢測硬件是否存在并能正常運行盆偿,然后對硬件設(shè)備進行初始化。

Boot Sequence(BIOS)

? 加電自檢完成后准浴,系統(tǒng)進入BIOS階段事扭,啟動BOIS中的Boot Sequence程序來選擇設(shè)備啟動順序,當(dāng)檢測到第一個可啟動的設(shè)備時乐横,該設(shè)備即為本次啟動所需的設(shè)備求橄。

Boot Loader(MBR)

? 當(dāng)系統(tǒng)通過Boot Sequence確定了啟動所需設(shè)備后今野,會讀取設(shè)備中操作系統(tǒng)的核心文件,會啟動存放在MBR分區(qū)中的Boot Loader管理程序罐农。此程序為引導(dǎo)加載器条霜,在Linux中使用的是GRUB和LILO兩種,其中GRUB分為grub legacy和grub2兩個版本涵亏。而LILO現(xiàn)主要用于移動設(shè)備內(nèi)核宰睡。BootLoader程序主要功能是提供菜單信息,向用戶提供不同的啟動項目溯乒,來加載不同的操作系統(tǒng)或內(nèi)核版本夹厌,將用戶選的的系統(tǒng)或內(nèi)核裝載到RAM特定空間中加載,并將啟動控制權(quán)移交內(nèi)核裆悄。

Kernel(ramdisk)

在BootLoader讀取操作系統(tǒng)內(nèi)核文件后矛纹,會將內(nèi)核問價解壓裝載至內(nèi)存中,然后根據(jù)內(nèi)核提供的功能開始探測可識別的各硬件設(shè)備光稼,加載硬件驅(qū)動程序或南。在加載硬件驅(qū)動時,可能會借助虛擬文件系統(tǒng)ramdisk來加載驅(qū)動艾君,此虛擬文件系統(tǒng)放置在/boot目錄下以initrd開頭的文件采够。

rootfs(readonly)

通過BootLoader程序?qū)nitrd加載至內(nèi)存中,解壓縮并模擬一個根文件系統(tǒng)冰垄,并以只讀方式掛載蹬癌,這個根文件系統(tǒng)能夠提供一個可運行的程序,通過此程序加載在啟動過程中所需的核心模塊虹茶,加載完成后會協(xié)助內(nèi)核喚醒/sbin/init程序逝薪。

/sbin/init

在加載內(nèi)核和硬件及驅(qū)動信息完成后,會啟動用戶空間第一個執(zhí)行程序/sbin/init蝴罪,進行完成啟動前的初始化操作董济。根據(jù)系統(tǒng)的不同,所采用的方式也有所不同:

centos5中采用SysV init方式要门,其配置文件為/etc/inittab

centos6中采用Upstart方式虏肾,并實現(xiàn)向下兼容。其配置文件為/etc/inittab和/etc/init/*.conf

centos7中采用Systemd方式欢搜。其配置文件為/usr/lib/systemd/目錄下的所有文件

/sbin/init程序的處理流程:

1.   設(shè)置默認運行級別封豪。運行級別包括以下幾種:

0:關(guān)閉所有服務(wù),關(guān)機
1:單用戶模式(sigle user)炒瘟,root用戶吹埠,無需認證,維護模式
2:多用戶模式(multi user),會啟動網(wǎng)絡(luò)功能藻雌,但不會啟動NFS,維護模式斩个,需要用戶認證
3:多用戶模式胯杭,正常級別,完全功能模式受啥,文本界面
4:預(yù)留級別
5:正常級別做个,完全功能多用戶模式,圖形界面
6:重啟滚局,關(guān)閉所有服務(wù)

2.  使用/etc/rc.d/rc.sysinit進行系統(tǒng)初始化居暖。初始化操作分為以下幾點:
  1. 設(shè)置主機名
  2. 設(shè)置歡迎信息
  3. 激活udev和selinux
  4. 掛載所有定義在/etc/fstab文件中的文件系統(tǒng)
  5. 檢測根文件系統(tǒng),并以讀寫方式重新掛載根文件系統(tǒng)
  6. 設(shè)置系統(tǒng)時鐘
  7. 根據(jù)/etc/sysctl.conf文件來是指內(nèi)核參數(shù)
  8. 激活lvm及軟raid設(shè)備
  9. 激活swap設(shè)備
  10. 加載額外設(shè)備的驅(qū)動程序
  11. 清理操作
3.  關(guān)閉對應(yīng)級別的需要停止的服務(wù)
4.  啟動對應(yīng)級別下需要啟動的服務(wù)
5.  啟動終端藤肢,若是5級別會啟動圖形化界面太闺。

二、GRUB啟動引導(dǎo)程序配置及其命令行接口


linux系統(tǒng)的啟動引導(dǎo)程序現(xiàn)主流使用的是grub嘁圈,其現(xiàn)有版本分為grub 0.X(grub legacy) 和grub 1.X(grub 2) 省骂。目前centos7采用的是grub2作為啟動引導(dǎo)程序,而centos5和6使用的是grub legacy版本最住。此處使用centos6作為參照钞澳。

grub的三個階段

1.  stage1:存放于MBR中,用于啟動BootLoader來加載stage2的內(nèi)容至內(nèi)存中

2.  stage1_5:位于MBR之后的扇區(qū)涨缚,讓stage1中的BootLoader能識別stage2所在的分區(qū)上的文件系統(tǒng)轧粟。

3.  stage2:位于基礎(chǔ)磁盤分區(qū)/boot/grub下,用于讀取grub.conf配置文件脓魏,并實現(xiàn)引導(dǎo)功能的擴展

stage2以及內(nèi)核等通常防止于一個基礎(chǔ)磁盤分區(qū)/boot目錄下

grub的配置文件

grub的配置文件為/boot/grub/grub.conf和/etc/grub.conf兰吟,實際上/etc/grub.conf是指向/boot/grub/grub.conf的軟連接。通常其內(nèi)容為:

1539406421676.png
  • default=0:表示默認的啟動條目轧拄,加入同事安裝有多個操作系統(tǒng)揽祥,0表示定義的第一個title的系統(tǒng)
  • timeout=5:表示在grub菜單中可供選擇的等待時間,若超過5秒未選擇檩电,則使用default中指定的title菜單中的配置拄丰。
  • splashimage=(hd0,0)/grb/splash.xpm.gz:定義引導(dǎo)才當(dāng)中的背景圖片的路徑
    • (hd0,0):表示第一塊硬盤上的第一個分區(qū)。硬盤代號以()括起來俐末,hd表示硬盤料按,后面接的數(shù)值表示餐盤編號,第一個搜尋到的磁盤編號為0卓箫,第二個為1载矿,以此類推。
  • hiddenmenu:啟動時是否要顯示菜單,默認情況下是不現(xiàn)實菜單信息闷盔,若要現(xiàn)實菜單弯洗,可將此項配置注釋掉。
  • title:定義引導(dǎo)菜單中顯示的每個操作系統(tǒng)的名稱
  • root (hd0,0):表示內(nèi)核文件存放的位置逢勾,此處指的是分區(qū)位置牡整,而非根目錄
  • kernel:定義內(nèi)核的名稱以及一些啟動時的核心參數(shù),通常為要運行的內(nèi)核文件路徑以及相關(guān)的內(nèi)核參數(shù)溺拱。
  • initrd:微內(nèi)核運行指定可用的ramdisk文件逃贝,其版本必須與內(nèi)核版本一致。

grub程序的功能

grub程序的功能如下:

1. 提供引導(dǎo)菜單迫摔,并提供交互式的命令行接口沐扳。在菜單界面中,按e進入編輯模式句占,用于編輯菜單沪摄。按c可以進入命令模式,提供了命令行交互式接口纱烘。
2.  加載用戶選擇的內(nèi)核或操作系統(tǒng)卓起,并允許傳遞參數(shù)給內(nèi)核。也可以隱藏此菜單凹炸。
3.  為菜單提供保護機制戏阅,可分別為編輯菜單和啟用內(nèi)核或操作系統(tǒng)設(shè)置認證。

在啟動系統(tǒng)是按任意鍵可進入grub菜單啤它,進入菜單后會顯示菜單信息:

12.png

grub的命令行接口

在grub菜單頁面奕筐,按c進入命令模式,打開命令行接口变骡,即可配置grub的相關(guān)設(shè)置离赫。grub命令行接口的常用指令有:

help:獲取幫助列表
help KEYWORD:詳細幫助信息
find(hd#,#) /path/to/somefile:用于查找對應(yīng)分區(qū)下的文件。常用于當(dāng)不確認內(nèi)核文件在哪個分區(qū)時塌碌,可使用此命令確認文件所在路徑渊胸;支持tab補全;
root(hd#,#):指定系統(tǒng)和內(nèi)核文件所在的分區(qū)台妆,如root(hd0,0)翎猛。
kernel /path/to/kernel_file:設(shè)定本次啟動使用到的呢和文件;額外還可以添加許多內(nèi)核支持使用的cmdline參數(shù)
initrd /part/to/initranfs:設(shè)定為選定的內(nèi)核提供額外文件ramdisk
boot:引導(dǎo)啟動選定的內(nèi)核
1539406592007.png

grub的安裝

  1. 使用grub-install命令安裝:

grub-install [--root-directory=DIR] DEVICE
--root-directory=DIR:指定gruv鏡像文件的存放位置接剩,默認為當(dāng)前系統(tǒng)根目錄切厘。grub-install會在指定的目錄下創(chuàng)建boot/grub/的層級目錄,并生成相關(guān)的grub文件生成在DIR/boot/grub/下懊缺。
DEVICE:grub安裝的目標(biāo)磁盤

  1. 在grub命令行模式下安裝grub
1539406817299.png

grub的保護機制

grub程序提供了菜單保護機制疫稿,可以為grub菜單和啟用內(nèi)核或操作系統(tǒng)設(shè)置認證。

設(shè)置認證的方法:在grub的配置文件grub.conf中添加passwd --md5 STRING

在第一個title之上添加passwd --md5 STRING,適用于保護grub菜單編輯功能遗座,在title中添加passwd --md5 STRING適用于保護內(nèi)核舀凛。

生成md5加密密碼的命令為:grub-md5-crypt

1539407353231.png

以下為菜單編輯認證:

1539407576797.png

以下為內(nèi)核認證:在選定了操作系統(tǒng)或內(nèi)核并確定之后,會要求輸入密碼途蒋,然后才能啟動系統(tǒng)腾降。

1539412468985.png

三、kickstart文件制作和光盤鏡像制作


kickstart是一個定義了Linux系統(tǒng)安裝過程的配置文件碎绎,比如說定義了系統(tǒng)要使用的時區(qū)、硬盤如何分區(qū)抗果、安裝哪些安裝包等等筋帖。通過自定義該文件,我們可以實現(xiàn)不需要人工干預(yù)即可完成Linux系統(tǒng)的自動化安裝冤馏,這種方法在同時部署大量的主機時非常有用日麸。在Centos系統(tǒng)中,完成系統(tǒng)安裝后逮光,在root目錄下會生成一個名為anaconda-ks.cfg的kickstart文件代箭。

kickstart文件的組成和配置

kickstart文件由命令段、程序包段和腳本段三部分組成涕刚,每部分的功能和配置選項如下:

  • 命令段:用于配置系統(tǒng)安裝時處理安裝軟件之外的自動應(yīng)答操作
必備命令
      1嗡综、auth或authconfig:認證選項;
        --useshadow或--enableshadow啟用shadown文件來驗證杜漠;
        --passalgo=sha512:使用sha512算法极景;
       2、bootloader:指定如何安裝引導(dǎo)程序驾茴,需要提供分區(qū)盼樟,指明引導(dǎo)程序安裝的位置等;
        --location=mbr:指定引導(dǎo)程序的位置锈至;
        --driverorder=sda:指定grub安裝所在的分區(qū)晨缴;
        --append="crashkernel=auto rhgb quiet":指定內(nèi)核參數(shù);
       3峡捡、keyboard:指定鍵盤類型击碗,一般使用keyboard us;
       4们拙、lang:設(shè)置系統(tǒng)語言類型:
        lang zh_CN.UTF-8:安裝中文語言包延都;
       5、part:創(chuàng)建分區(qū)睛竣;
        -fstype=FSSTYPE:指定創(chuàng)建的分區(qū)類型晰房;
        --grow:允許使用剩下的磁盤空間建立分區(qū);
        --size=NUM:設(shè)置分區(qū)大小殊者;
        --maxsize=NUM:設(shè)置分區(qū)大小的最大值与境;
       6、rootpw:設(shè)置管理員密碼猖吴;
        --iscrypted STRING:輸入加密的密鑰串摔刁,STRING為加密后的密鑰串
       7、timezone:設(shè)置時區(qū)海蔽;```

可選命令
       1共屈、selinux:設(shè)置selinux的狀態(tài);
        --enforcing
        --permissice
        --disable
       2党窜、driverdisk:指定驅(qū)動程序所在的位置拗引;
        driverdisk --source=sda
       3、firewall:設(shè)置firewall的狀態(tài)幌衣;
        --disable:禁用防火墻
       4矾削、graphical:在圖形化模式下根據(jù)kickstart執(zhí)行安裝,默認為該選項豁护;
       5哼凯、cmdline:在完全非交互的命令行模式下進行安裝;
       6楚里、text:在文本模式下根據(jù)kickstart執(zhí)行安裝断部;
       7、reboot:安裝完成后自動重啟班缎;
       8家坎、install/upgrade:指定是安裝還是升級系統(tǒng);
        對于install吝梅,還指定系統(tǒng)安裝包的來源為下述之一:
        cdrom:指定從第一個光盤驅(qū)動器安裝虱疏;
        harddrive:從本地硬盤安裝,要求硬盤必須是vfat或者ext2文件系統(tǒng)格式苏携;
        nfs:指定從nfs路徑獲取安裝包來源做瞪;
        url:指定從ftp、http右冻、https安裝装蓬;如:url --url=ftp://1.1.1.1
       13、network:為系統(tǒng)配置網(wǎng)絡(luò)信息纱扭,并在安裝過程中激活該網(wǎng)絡(luò)設(shè)備牍帚,可多次出現(xiàn)使用;
        --bootproto:設(shè)置dhcp或static乳蛾;
        --device:指定網(wǎng)卡名稱暗赶;
        --hostname:指定主機名鄙币;
        --onboot:是否在系統(tǒng)開機后開啟網(wǎng)卡;
        如:network --bootproto=static --ip=1.1.1.1 --netmask=255.255.255.0 --gateway=1.1.1.2 --onboot=on
       14蹂随、autopart:自動創(chuàng)建分區(qū)十嘿;
       15、zerombr:清除磁盤分區(qū)表mbr岳锁;
       16绩衷、clearpart:在安裝系統(tǒng)前清除分區(qū)表;
        --all:清除所有分區(qū)激率;
        --linux:清除Linux分區(qū)咳燕;
        --none:不清楚分區(qū);
        --initlabel:創(chuàng)建標(biāo)簽乒躺,對于沒有MBR或者GPT的新硬盤招盲,該選項是必須的;
        --drivers=sdb:清除指定分區(qū)聪蘸;
        clearpart --all --initlabel是常見的方式;
       17表制、user:在系統(tǒng)中生成一個用戶健爬;
        --name:指定用戶名;
        --groups:指定用戶的附加組么介,非默認組娜遵;
        --homedir:指定用戶的家目錄,不指定則默認為/home/USERNAME壤短;
        --password:設(shè)置該用戶的密碼设拟,不指定的話創(chuàng)建后用戶處于鎖定狀態(tài);
        --shell:指定用戶的默認shell久脯;
        --uid:指定用戶的UID纳胧;
  • 程序包段
    程序包段用于指明系統(tǒng)安裝的個程序以及包組,包括不安裝的程序包帘撰。
    程序包段的開始標(biāo)記為%packages跑慕,結(jié)束標(biāo)記為%end。在兩者之間為相應(yīng)的程序包及程序包組摧找,其中@GROUP_NAME表示為需要安裝的程序包組核行,PACKAGES_NAME為需要安裝的程序包,不安裝某個程序包則在對應(yīng)的程序包前加"-"號蹬耘。@base和@core兩個包組為默認選項芝雪。 如:
%packages
@Base
@Core
@Desktop
@Fonts
@General Purpose Desktop
@Internet Browser
@Printing client
 @X Window System
binutils
gcc
kernel-devel
make
patch
python    ?
%end
  • 腳本段
    腳本段可以概括為兩部分:%pre和%post,兩者均以%end為結(jié)束標(biāo)記综苔。
    %pre:其后緊跟系統(tǒng)安裝前執(zhí)行的命令或腳本惩系,支持命令很少位岔;
    %post:表示系統(tǒng)安裝完成后執(zhí)行的命令,基本支持所有命令蛆挫; 如:
%post
    if [ -f /boot/grub/menu.lst -a ! -h /boot/grub/menu.lst ]; then cp /boot/grub/menu.lst /boot/grub/menu.lst.bak && sed -i 's/ rhgb//' /boot/grub/menu.lst; fi
    if [ -f /boot/grub/grub.conf -a ! -h /boot/grub/grub.conf ]; then cp /boot/grub/grub.conf /boot/grub/grub.conf.bak && sed -i 's/ rhgb//' /boot/grub/grub.conf; fi
    if [ -f /boot/grub2/grub.conf -a ! -h /boot/grub2/grub.conf ]; then cp /boot/grub2/grub.conf /boot/grub2/grub.conf.bak && sed -i 's/ rhgb//' /boot/grub2/grub.conf; fi
    if [ -f /etc/rc.d/rc.local ]; then cp /etc/rc.d/rc.local /etc/rc.d/rc.local.backup; fi
    cat >>/etc/rc.d/rc.local <<EOF
    #!/bin/bash
    echo
    echo "Installing VMware Tools, please wait..."
    if [ -x /usr/sbin/getenforce ]; then oldenforce=\$(/usr/sbin/getenforce); /usr/sbin/setenforce permissive || true; fi
    mkdir -p /tmp/vmware-toolsmnt0
    for i in hda sr0 scd0; do mount -t iso9660 /dev/\$i /tmp/vmware-toolsmnt0 && break; done
    cp -a /tmp/vmware-toolsmnt0 /opt/vmware-tools-installer
    chmod 755 /opt/vmware-tools-installer
    cd /opt/vmware-tools-installer
    mv upgra32 vmware-tools-upgrader-32
    mv upgra64 vmware-tools-upgrader-64
    mv upgrade.sh run_upgrader.sh
    chmod +x /opt/vmware-tools-installer/*upgr*
    umount /tmp/vmware-toolsmnt0
    rmdir /tmp/vmware-toolsmnt0
    if [ -x /usr/bin/rhgb-client ]; then /usr/bin/rhgb-client --quit; fi
    cd /opt/vmware-tools-installer
    for s in sr0 sr1; do eject -s /dev/\$s; done
    ./run_upgrader.sh
    if [ -f /etc/rc.d/rc.local.backup ]; then mv /etc/rc.d/rc.local.backup /etc/rc.d/rc.local; else rm -f /etc/rc.d/rc.local; fi
    rm -rf /opt/vmware-tools-installer
    sed -i 's/3:initdefault/5:initdefault/' /etc/inittab
    if [ -f /boot/grub/menu.lst.bak ]; then mv /boot/grub/menu.lst.bak /boot/grub/menu.lst; fi
    if [ -f /boot/grub/grub.conf.bak ]; then mv /boot/grub/grub.conf.bak /boot/grub/grub.conf; fi
    if [ -f /boot/grub2/grub.conf.bak ]; then mv /boot/grub2/grub.conf.bak /boot/grub2/grub.conf; fi
    if [ -x /usr/sbin/getenforce ]; then /usr/sbin/setenforce \$oldenforce || true; fi
    if [ -x /bin/systemd ]; then systemctl restart prefdm.service; else telinit 5; fi
    EOF

kickstart文件的制作

kickstart文件有兩種制作方式:

  • 手動編輯kickstart文件赃承,可參考/root/anaconda-ks.conf文件進行修改編輯
  • 通過system-config-kickstart圖形化工具編輯生成kickstart文件。此工具需要使用yum -y install system-config-kickstart 命令安裝悴侵。制作完成后也可同時使用ksvalidator命令來驗證kickstart文件中是否有語法錯誤

創(chuàng)建光盤鏡像文件

  1. 將系統(tǒng)安裝光盤掛載至/media目錄下
  2. 創(chuàng)建一個存放創(chuàng)建光盤鏡像文件的目錄myboot(名稱隨意)瞧剖,并移動至該目錄下
  3. 將/media/isolinux/目錄復(fù)制到myboot目錄下。
  4. 由于/myboot/isolinux目錄下內(nèi)容是從光盤中復(fù)制可免,無法編輯抓于,需要加寫權(quán)限
  5. 在/myboot/isolinux目錄下有個isolinux.cfg文件,可修改此文件中選項參數(shù)浇借,添加自己需要的內(nèi)容捉撮,如修改背景圖片等···
  6. 將事先準(zhǔn)備好的kickstart問價ks.cfg復(fù)制到/myboot目錄下,要確保ks文件無問題即可使用妇垢。
  7. 此時就可以使用mkisofs命令創(chuàng)建鏡像文件了巾遭;命令如下:
    mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/
    注:"CentOS 6 x86_64 boot"此名稱隨意指定;/root/boot.iso此為保存路徑闯估,按需指定灼舍。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涨薪,隨后出現(xiàn)的幾起案子骑素,更是在濱河造成了極大的恐慌,老刑警劉巖刚夺,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件献丑,死亡現(xiàn)場離奇詭異,居然都是意外死亡侠姑,警方通過查閱死者的電腦和手機创橄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莽红,“玉大人筐摘,你說我怎么就攤上這事〈希” “怎么了咖熟?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柳畔。 經(jīng)常有香客問我馍管,道長,這世上最難降的妖魔是什么薪韩? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任确沸,我火速辦了婚禮捌锭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘罗捎。我一直安慰自己观谦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布桨菜。 她就那樣靜靜地躺著豁状,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倒得。 梳的紋絲不亂的頭發(fā)上泻红,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音霞掺,去河邊找鬼谊路。 笑死,一個胖子當(dāng)著我的面吹牛菩彬,可吹牛的內(nèi)容都是我干的缠劝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼骗灶,長吁一口氣:“原來是場噩夢啊……” “哼惨恭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起矿卑,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤喉恋,失蹤者是張志新(化名)和其女友劉穎沃饶,沒想到半個月后母廷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡糊肤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年琴昆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馆揉。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡业舍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出升酣,到底是詐尸還是另有隱情舷暮,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布噩茄,位于F島的核電站下面,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏绩聘。R本人自食惡果不足惜沥割,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一耗啦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧机杜,春花似錦帜讲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陡叠,卻和暖如春玩郊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枉阵。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工译红, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兴溜。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓侦厚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拙徽。 傳聞我的和親對象是個殘疾皇子刨沦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容