馬哥筆記第十四天內核編譯、lftp、內核編譯安裝

  1. 內核參數配置

                  /proc: 內核映像:許多參數(讀寫,只讀),/proc:把內核參數net.ipv4.ip_forward虛擬成文件系統:net/ipv4/ip_forward

                             只讀文件:輸出統計信息

                             讀寫文件:設定內核工作特性,不允許使用文本編輯器打開進行編寫,而只能使用重定向的方式或使用專用的工具

    幾個常用參數:

            kernel.hostname:設定主機名

            vm.drop_caches:回收虛擬內存中buffers、cache中的空間。例如: echo 1 > /proc/sys/vm/drop_caches

            net.ipv4.icmp_echo_ignore_all:禁止其他主機ping該主機。echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

            net.ipv4.ip_forward:定義本機路由器功能是否開啓。echo 1 >/proc/sys/net/ipv4/ip_forward

    sysctl:配置內核參數專用工具,讀取配置文件/etc/sysctl.conf,常用選項如下:

            -w:VARAIABLE=VALUE指定內核參數修改值例如:sysctl -w net.ipv4.ip_forward=1

            -a:顯示sysctl可修改所有內核參數

            -p:重讀配置文件/etc/sysctl.conf並立即生效例如:sysctl -p

    sys:kernel在初始化硬件時,根文件系統尚未掛載,內核會把所有探測到的硬件信息全部映射到/sys目錄中,用戶空間udev程序就可根據/sys中信息來爲每個設備按需創建設備文件。

    udev通過udevadmin命令讀取sys目錄下硬件信息,檢查該硬件設備是否存在,沒有就添加並創建設備文件,hotplug會實時監測sys目錄,如有設備加入或減去就會通知udev創建或移除設備文件。例如,插入或移除u盤

    udev創建設備文件是根據udev規則進行,規則文件在/etc/udev/rules.d/

    dracut創建虛擬根文件例如:dracut /boot/initramfs-$(uname -r).img  $(uname -r)

     展開initramfs文件:之前需要查看壓縮類型file initramfs-RELEASE.img

            # cp /boot/initramfs-RELEASE.img /tmp/initramfs.img.gz

    # gzip -d /tmp/initramfs.img.gz

    # mkdir /tmp/initramfs

    # cd /tmp/initramfs

    # cpio -id < /tmp/initramfs.img.gz

    exec COMMAND :能啓動command爲一個進程,此進程會取代當前shell進程;

    screen工具:啓動新屏幕:screen、exit, 關閉屏幕、Ctrl+a, d:切換屏幕、

                          screen -ls: 查看所有被隱藏的屏幕SID、screen -r SID打開屏幕

    lftp: ftp客戶端工具

             -u USERNAME,PASSWORD:指定用戶名和密碼。

             -p PORT:指定端口。

             -e 'CMD':執行一個命令 :例如 lftp -u root,root -p 123 192.17.54.1

    lftp: 命令:

              help: 獲取幫助

              cd: 切換遠程服務器上的文件系統目錄

              lcd: 切換本地文件系統目錄

              get FILE: 下載、mget FILE1...: 下載多個文件,支持使用通配符

               !COMMAND: 執行本地shell命令,而非ftp服務器上命令

               mirror DIR: 鏡像目錄至本地

               put FILE:上傳文件、mput FILE1...:上傳多個文件

               lftpget類似於wget: 下載指定URL

  2. Linux內核編譯安裝,

                在編譯前需要先收集硬件信息,也可以根據系統收集的硬件信息進行編譯/boot/config文件中

                                    查看CPU信息:cat /proc/cpuinfo、lscpu

                                    查看PCI:lspci -v

                                    查看USB:lsusb

                                    查看塊設備:lsblk

    編譯:linux支持交叉編譯,在本機上根據需要運行的主機平臺和硬件信息進行編譯。

    編譯內核的步驟:(必須安裝好開發環境,c6: Development Tools, Server Platform Development, ncurses-devel),先檢查包是否安裝完畢:yumgrouplist,之後安裝所需包:yum groupinstall “Development Tools”

                   第一步:配置內核

                                    make config:手動指定功能開啓或關閉

                                    make allyesconfig:開啓內核中所有功能編譯

                                    make allnoconfig:不開啓任何功能編譯

                                    make menuconfig:打開文本控制界面,讓用戶手動選擇開啓或關閉那些功能

                                    make gconfig:依賴GNome桌面環境及GNome的圖形開發環境,gtk2

                                    make kconfig :依賴KDE桌面環境及KDE的圖形開發環境,qt

                   第二步:編譯

                                    make -j 2 :-j指定用幾顆cpu進行編譯,編譯速度可以提升。

                   第三步:安裝內核模塊

                                    make modules_install

                                    安裝位置:/lib/modules/VERSION/,分析模塊間依賴關係併成dep文件

                    第四步:安裝內核

                                     make install,安裝是否成功檢查grub.conf中是否添加新的啓動項。

                                     安裝內核:/boot/vmlinuz-VERSION,編輯grub.conf,添加一新的title

    獲取內核源代碼,展開指定目錄下:tar xf linux-version.tar.xz -C /usr/src

    在已有的內核上進行二次編譯前需做清理操作:

                     make clean:清理編譯的文件,但保留配置文件

                     make mrproper:移除所有編譯生成的文件、配置文件和備份文件

                     make distclea:完全清理

    將編譯生成的文件保存至別處:

                     mkdir /path/to/somewhere

                     cd /path/to/somewhere

                     ./configure --ksource=/usr/src/linux

    如何只編譯內核的部分代碼:

                     只編譯某子目錄中的相關代碼:cd /usr/src/linux、make  path/to/dir/

                     只編譯部分模塊:make M=path/to/dir。例如:make M=drivers/net/

                     只編譯一個模塊: make path/to/dir/MOD_NAME.ko。例如:make drivers/net/ethernet/intel/e1000/e1000.ko

                     將編譯生成的文件保存至別處:make O=/path/to/somewhere

    交叉編譯:

                     make ARCH=arch,

                     獲取某ARCH的可用的默認配置:make ARCH=arch help。例如:make ARCH=arm acs5k_defconfig


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章