學習linux之安裝gentoo (vmware 下安裝)

     

     一、下载部分:

      

    1,http://distfiles.gentoo.org/releases/x86/autobuilds/20160607/install-x86-minimal-20160607.iso

      2,http://distfiles.gentoo.org/releases/x86/autobuilds/20160607/stage3-i686-20160607.tar.bz2

      3,http://gentoo.aditsu.net:8000/snapshots/portage-20160602.tar.bz2

      4,https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.6.2.tar.xz

      5,https://wiki.gentoo.org/wiki/Handbook:Main_Page/zh-cn   是gentoo的中文手册

     

     相關說明:

      install-x86-minimal-20160607.iso是用來啟動安裝的,算是啟動盤吧!

      stage3-i686-20160607.tar.bz2是gentoo的基本系統,包括目錄結構、常用軟件、開發套件,如Glibc、Binutils、GCC、Coreutils等。

      portage-20160602.tar.bz2軟件的快照,與包管理相關的。

      linux-4.6.2.tar.xz是內核,版本可以隨便選擇,现在4.x.x是比较新的内核。

 

      新建一臺虛擬機。

      如題,我用的是vmware, 可供選擇的還有virtualbox等, 默認你已安裝好了。現在我們來新建一臺虛擬機。

      我們在這個步驟時裝入install.iso :

      學習linux之安裝gentoo (vmware 下安裝)_第1张图片

 

      學習linux之安裝gentoo (vmware 下安裝)_第2张图片

 

     

      二、安装部分

      2.1 前奏

      虚拟机创建完毕,然后点选啟动吧。 LiveCD启动完毕,进入cd预设好的linux环境。好,让我们輸入命令看看是否獲取到IP,如有开启了DHCP服務,一般都已自動配置IP了,然后再修改密碼,默認是沒有密碼的,改了密碼后打開ssh服務,然后就可以winscp之類的工具把文件(stage,portage,kernel)上傳過去,不過傳輸文件前要把硬盤mount起來,因為文件最終是要放到硬盘空間里。mount硬盤前要把硬盤分區,然后格式化成ext3文件系統。當然文件系統可以是ext4、reiserfs等,各人喜歡吧,這里不討論文件系統優劣。

 

      命令:

      $ ifconfig    (查看網絡接口卡)                  

      $ passwd   (更改密碼)                           

      $ /etc/ini.d/sshd start    (開啟ssh服務)

          

        2.2 分區与格式化

       # fdisk  /dev/sda     (我的是sda,其它有可能是hda之類的,看用什么接口類型,SCSI一般會是sd打頭,IDE是hd開頭)

      

        學習linux之安裝gentoo (vmware 下安裝)_第3张图片

 

        格式化與mount:

        $ mke2fs -j  /dev/sda1        (建立ext3文件系統, ext3是ext2的擴展,多了日志功能,所以用mke2fs -j 命令)

        $ mount /dev/sda1 /mnt/gentoo                     

        $ df -h                                  (看看我們的硬盤是不是可以用了呢)   

        

         學習linux之安裝gentoo (vmware 下安裝)_第4张图片

  

          2.3上传或下载 

         上傳stage和portage,kernel,這步聚我使用winscp來完成。如果前面没进行下载步骤,则可直接在livecd里敲入wget命令下载。

         #cd   /mnt/gentoo           

         # wget http://mirrors.kernel.org/gentoo/releases/x86/autobuilds/current-iso/stage3-i686-20110426.tar.bz2      

         # wget   http://mirror.mcs.anl.gov/pub/gentoo/snapshots/portage-20110517.tar.bz2  

          

         2.4解压 

         接下來先把stage3解壓到當前的目錄中:

         # tar xvf stage3-i686-20110405.tar.bz2  (確定你是在gentoo目錄下,就是硬盤所在目錄吧)

         tar后帶的參數是要打印解壓的細節,而為什么不帶壓縮包屬性參數啦,因為新版本會自動檢測我们的包是bz2還是gz。

 

         我們再把portage解壓到/usr目錄下:

         #tar xvf portage-latest.tar.bz2 -C /mnt/gentoo/usr 

         之后可以把 stage3-i686-20110405.tar.bz2  和 portage-latest.tar.bz2 刪除

         #rm -rf  portage-latest.tar.bz2  stage3-i686-20110405.tar.bz2  

 

 

 

         三、配置文件

    

 

         這時候需要修改一下 etc/mak.conf  ,  注意路徑哦,這個make.conf是你之前解壓出來的,完整路径是/mnt/gentoo/etc/make.conf。

         我們需要在make.conf里添加一個源, 源是什么呢? 它是下載和同步軟件包的源頭, 國內163, sina等網站現在都架設了這類型的服務。 我就采用163的源吧,感覺速度也過得去。這里不討論什么國內國外的區別,大家用得著就可以了

         $cat > etc/make.conf << eof      
              CFLAGS="-O2 -march=i686 -pipe"        
              CXXFLAGS="${CFLAGS}"       

              CHOST="i686-pc-linux-gnu"               

              GENTOO_MIRRORS="http://mirrors.163.com/gentoo/"   
              SYNC="rsync://mirrors.163.com/gentoo-portage"       
              MAKEOPT="-j8"  

              eof  

             

          MAKEOPT后面的參數"-j8"參照實際cpu數,一般是有幾個核就設多少個核加1。實際上你設個2就可以,作用并非很明顯。

          接下來配置域名服務器:

           $cat  > /mnt/gentoo/etc/resolv.conf << eof             

            nameserver 8.8.8.8                                                     

            nameserver 8.8.4.4                                                     

            eof                                                                                 

          nameserver可以加多個。

          然后是網絡配置, 這兩步其實是可以在后面配,不過先配也沒所謂。

          $cat > /mnt/gentoo/etc/confi.d/net  << eof     

            config_eth0=( "192.168.7.44 netmask 255.255.255.0 /  

                                      brd  192.168.7.255" )                 
            routes_eth0=( "default via 192.168.7.254" ) 

            eof   

 

           ip根椐實際情況配置吧,不要照抄。

          

 

           四、chroot

           好,接下來到了激動人心的一步啦,那就是chroot, 不過chroot還要做一下設置。

           $mount -t proc none /mnt/gentoo/proc  
           $ mount --rbind /dev /mnt/gentoo/dev   

         

            proc是一種文件系統,存在在內存中,mout proc的意思就是說接下來chroot后可以和livecd共用相同的proc系統,proc里面的內容基本上由內核提供。 而mount dev 的意思呢? 當然也是為了chroot后可以和livecd使用同樣硬件設備,最常用的如硬盤。

 

            #chroot /mnt/gentoo  /bin/bash                    

            #env-update                                                
                >> Regenerating  /etc/ld.so.cache...          
            # source /etc/profile                                      
            # export PS1="(chroot) $PS1"                       

 

             ok,現在你就已經進入你所要安裝的gentoo 環境中。

 

             我們再改一下密碼, 因為我們之前的密碼并不適用于這個環境中。

             # passwd                                                     

 

             我們還要做什么嗎? 當然要呀,還有很多事沒做。

             我們先得同步一下portage,敲入命令:

           #emerge --sync                                           

            

             如果覺得比較慢,可以用更快的命令代替:  
            # emerge --sync --quiet                                

 

            sync需要好幾分鐘啦,同步完畢后可能有什么new之類的提示,打入命令解決它:

            # eselect news read all                                  

 

            然后我們需要在系統的使用目的上做出決擇,先看看有什么可選擇的:

            #eselect profile list                                       
                Available profile symlink targets:
                      [1]   default/linux/x86/10.0 *
                      [2]   default/linux/x86/10.0/desktop
                      [3]   default/linux/x86/10.0/server

                      [4]

                        .

                        .

                        .

                      [15]

 

          默認是1, 推薦也是1,你可以選擇其它, 區別不大, 主要是安裝的包的版本會有出入,有些軟件包可能無法解決依賴關系,但無需關心。更改的方法是:

          #eselect profile set 2      (或者3,4,5,6-15)

         

          接下來設置本地化,和裝windows差不多。

          #nano -w /etc/locale.gen                

         

           nano和windows的寫字板一樣,直接改了就成,我把en_US.UTF-8 前面的#去了,意思是我使用英語環境吧。

           然后來個命令就可設置完畢:

           #locale-gen                                   

 

           設置時區:

           #cp /usr/share/zoneinfo/Shanghai /etc/localtime  

           

          

           五、linux内核

           基本系統設置完畢,好了,到了最重要一步, 編譯內核哦, linux本身是內核, 我們之前所使用的軟件全是基于內核的,沒內核我們運行不了。有人會問,那我們現在沒裝內核,為什么能運行哦? 其實我們現在所在的環境是livecd提供的哦, 我們之前用來啟動的install cd包含了linux的內核, 比如我們之前的mount proc目的就是要共享這個內核數據, mount -o bind /dev 就是要和這個內核的駆動表作個綁定。

 

 

           編譯內核對于初學者來說可能聽起來很高深,其實我們這樣編譯內核和在windows里安裝軟件并無多大區別,區別可以在于多了一些自定義的選項。有些初學者可能會以為編譯內核需要很專業的知識,又或者會了編譯內核是件多么了不起的事, 其實不然,編譯內核并不能說明你能學到多少,懂多少, 實際上編譯內核可能不會提高丁點兒的專業知識。

 

           要想提高水平,最好是把內核的幫助文檔看一遍,你會使你對cpu,對計算機的架構有一定的認識,然后亦會加深你對linux的系統架構的了解,為你進一步學習內核打下基礎。這里就不再討論內核的問題了,我將會在以后的筆記里聊一下我對內核的看法,我是如何學習內核的。

 

 

           gentoo編譯內核其實蠻簡單的,還記得文章開始時下載的

linux-2.6.39.tar.bz2吧,無錯,這就是我們要裝的內核,我這樣安裝算是走了一步稍為麻煩的路子了,gentoo有更簡單的方法安裝。

 

            #emerge gentoo-sources                            
            # emerge genkernel                                    

            #genkernel all                                            

               哈哈,就是這三步曲就把內核裝好。 emerge又出場啦,大家還記得前面的命令 emerge --sync 吧,呵呵, emerge 是gentoo世界里的萬能之神, 不過它只不過是個是相當于倉庫管理員的角色罷了, emerge沒選項是默認是安裝動作, 如emerge genkernel,意思是要安裝genkernel這個軟件包,它會先把這個包下載到本地/usr/portage/distfiles這個目錄下,然后根椐/usr/portage里面相關規則進行解壓與編譯,編譯過程中/etc/make.conf能起到關鍵作用,里面的USE=""是對軟件包編譯可選功能的控制。我們安裝軟件時,一般不會直接用emerge裸奔,而是在后跟參數 -av, 這樣我們就能看到這個包是否安裝過?有什么功能可選。而emerge -s  strings則是查找portage里包含有strings的軟件包,然后把該軟件包名稱打印出來。 如果有人用過FreeBSD,一定會覺得它們之間很相似,據說gentoo的包管理是模仿FreeBSD的。

 

            手動安裝內核的過程也較為簡單,先是把內核解壓到/usr/src目錄去,為什么要解壓到這里呀? 因為習慣嘛,你可以解壓到任何地方。      

            # tar xvf   linux-2.6.39.tar.bz2 -C /usr/src            

            # ln -s /usr/src/linux-2.6.39  /usr/src/linux            

 

 

            用ln -s建立一個軟連接,軟硬連接的區別是硬的能生兒育女,軟的不能,所能軟的當它的源刪了就什么都沒有了,我所認為的建一個軟連接的目的是為了方便編譯不同版本的內核,但實際上并沒能帶給多少的方便。

 

              進入linux目錄:

              # cd linux                                    

              # make mrproper       (比make clean 清理得干凈, config文件、備份等都會被清除,也就說運行后,代碼足夠的干凈)        

              # make  menuconfig   (好吧,讓我們盡情的選擇吧。值得關心的就是驅動了,也就是Device Drivers里面的分枝慢慢挑吧。至于如何配置,大家本著學習的態度,我們應該把不知道的每項的help都捉摸一遍,這才會有所幫助 這里我就不多說了。下次再做個有關如何配置的筆記。)     

              #make bzImage        (配置完畢,用這命令生成內核吧,眾所周知這是壓縮過的內核,它在啟動時會自解壓。現在的命令比較智能化了,它在      make image前如發現有更新的改到,又或者沒有make過,它就會make一遍,所以我們無須關心是否要不要編譯一次。接下來應該是make modules 但我把功能都都做到內核里了,且沒有其它需要的module,所以就make modules了,等需要功能擴展時再make,反正內核已選Enable loadable module support, 這樣以后要開發模塊時,就不用重新編譯內核。在這里大家要弄明白概念,module可能是內核的一部分,但內核和module是各自獨立的 兩個東西,內核不依賴module存在,但module依賴于內核。)         

 

 

 

 

                  闲话initrd

 

             如果是用genkernel all 生成的內核,又或者ubuntu,readhat等發行版,又或者我們的install cd,都會有一個initrd, 那么它是要做什么的呢?為什么我們手工編譯的內核沒有這個東東呢?  我們可以說initrd是一個包含著某些模塊文件的包,包里面還有一些基本應用程序,它可以作為一個根文件系統被加載到內存中去,用于無盤操作,亦可以要來加載特定的驅動供我們的內核使用。 為什么我們自已編譯內核時不需要呢?那就是因為我們知道我們的計算機用什么驅動了,且已編譯到內核里面去啦,所以就不需要這個東東了。當然,這個東東有很多特別的用途,如果我們用usb設備做根文件系統時,制作一個initrd能幫助到我們的內核順利的mount上usb硬盤。initrd技術還大量應用于堪入式的產品中。至于initrd制作也不算復雜,準備好文件后用cpio就能制作,麻煩的是準備文件的過程。 這里提到initrd旨在給大家一個初步的了解,深入的討論又是另外一個話題了,如果可能會在另個的筆記里探討。

 

             我們把內核復制到/boot目錄下,工作就算是完成了,但gentoo的安裝并沒有結束,我們還要做最后一步安裝工作,我們需要一個叫啟動選擇器的東東,就是俗稱為boot loader的大俠,它幾乎無所不在,除非真的是單干的機器,就是單片機之類啦,要不你離不開boot loader大俠的幫助。我們要把內核啟動起來,第一步工作就是要把內核裝載到內存里,如何裝載呢? 這就是boot loader的能力了,boot loader加載內核后就會讓出對系統的統治地位,所以說它大俠,就是因為它不迷戀權位,內核接掌最高領導人的職位后,會一直到系統死機,也就是終生制啦。不過在它的統治下,我們可以自由的方便的與它打交道,至于自由到什么程度呢? 那就要看你對它的認識有多深了。

 

             Boot Loader

 

             我們選用grub這個boot loader作為系統的引導者吧,因為它比lilo友好,亦因為它無處不在。

             # emerge grub            

             gentoo很多時候都是emerge的舞臺,我們就看它表演吧, 不一會它就把grub搞定了,但我們還要把grub安裝到硬盤的第一個扇區中,也是要裝到大名鼎鼎的MBR里,我們可以稱MBR為超級塊,BIOS是系統的開國皇帝,而它的繼位者必定是在MBR里產生的,如GRUB。

              # grub                      (運行grub)         

                 setup(hd0)             (安裝到MBR里)                      

                 quit                       (退出)       

 

                然后我們需要構造一個配置文件給grub , 文件里提供內核的選單, 這樣才完善grub選擇器的功能。

               # cat  > /boot/grub/grub.conf     << eof                               

                    default 0                                                                           
                    timeout 2                                                                          

                    title Gentoo Linux                                                             
                    root (hd0,0)                                                                      
                    kernel /boot/bzImage root=/dev/sda1                              

                    eof                                                                                   

 

                  bzImage 根據實際情況寫,它的來源就在/boot目錄下,其實一般名字都叫vmlinuz, 如果是genkernal生成的就叫kernel-genkernel-xxx ,大家可以看清楚哦, 如果是genkenel的還應該用initrd哦, 如下:

             

               # cat  > /boot/grub/grub.conf     << eof                          

                    default 0                                                                      
                    timeout 2                                                                     

                    title Gentoo Linux                                                         
                    root (hd0,0)                                                                 
                    kernel /boot/kernel-genkernel-xxx root=/dev/sda1       

                    initrd  /boot/initramfs-genkernel-xxx                            

                    eof                                                                               

 

                    還有一個配置文件是我們必須關注,就是/etc/fstab

                    # cat > /etc/fstab  << eof                                                       

                        # <fs>    <mountpoint>    <type>   <opts>   <dump/pass>

                        /dev/sda1          /          ext3            noatime                  0 1 

                        eof                                                                                       

 

                  Gentoo包管理 

 

 

                   OK, 我們的gentoo總算安裝完畢, 以后的事是emerge的世界了, 下面有些常用的命令我們有需要熟識。

 

                         emerge –sync                      同步portage­


                       emerge -uD world              升级整个系统­

                       emerge <PackageName>           安装软件包­


                       emerge <PackageName> -f       下载指定软件包安装所需文件


                       emerge <PackageName> -pv     查看安装指定软件包的依赖性及use flags­
                       emerge -C <PackageName>       卸载软件包


                       euse -E <use-flags>     设置允许use flag(修改/etc/make.conf中的USE)­
                       euse -D <use-flags>    设置禁止use flag(修改/etc/make.conf中的USE)­
                       euse -i <use-flag>       查询use flag描述­

                       eix <RegExp>          搜索软件包­


                       eix -I                          列出系统中已安装的软件包­

                       equery files <PackageName>   列出已安装包的文件


                       equery belongs <FileName>     查询已安装的指定文件属于哪个包­

                       ebuild <xxx.ebuild> digest     生成摘要文件


                       ebuild </var/db/pkg/xxx/xxx.ebuild> config 初始化设置­

                       注:要使用euse、equery需要安装gentoolkit包,eix需要安装eix包。­
 

            

 

 

 

你可能感兴趣的:(vmware,linux,Module,FreeBSD,linux内核)