• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coreBugZJ

            此 blog 已棄。

            Bochs 簡介及配置

            Bochs 簡介
                Bochs(讀音同 Box)是用C++開發的以 LGPL 許可證發放的開放源代碼的x86,x86-64模擬器,模擬整個PC。它被設計成可以運行于多種主流平臺下,包括x86, PPC, Alpha, Sun和MIPS。

                和 Bochs 類似的虛擬機軟件還有:VMware,Virtual PC,VirtualBox,但這些都使用了虛擬化技術,部分指令直接交給硬件執行。而Bochs完全是靠軟件模擬來實現的(所以Bochs虛擬機的速度慢很多,而且應該稱Bochs為模擬器,而非虛擬機)。從啟動到重啟,包括PC的外設鍵盤,鼠標,VGA卡,磁盤,網卡等,全部都是由軟件來模擬的。也正是由于Bochs完全是靠軟件來模擬整個PC環境,因此它非常的適合開發操作系統,這對廣大操作系統愛好者來說是一個福音。因為有它,使得調試操作系統非常非常的容易,它自帶一個調試器bochsdbg,它可以從PC機剛啟動的那一剎那起就開始模擬,注意,這不是從讀取磁盤中的引導扇區那開始模擬。


                在Bochs中安裝操作系統,不會分區宿主機硬盤,而僅僅是在宿主機中建立一個大文件——磁盤鏡像文件。


                使用Bochs自帶的bximage工具可以創建軟盤,硬盤的鏡像文件。


                在Bochs中運行操作系統的最低要求:
                    Bochs 軟件
                    BIOS 鏡像
                    VGA BIOS 鏡像
                    至少一個可引導的磁盤鏡像(軟盤,硬盤,光盤)或物理磁盤(軟盤,光盤)



            配置Bochs —— 告訴Bochs你想模擬一臺擁有何種硬件配置的PC。

                這里只介紹如何使用配置文件配置 Bochs。


                Bochs為我們提供了一個配置文件的模版,這個模版為bochsrc-sample.txt,可以在Bochs的安裝目錄中找到。在配置文件中”#”為注釋符號,表明#后面的全部是注釋的內容(類似于C / C++ 中的行注釋“//”)。


                ——其實只要懂點硬件,看看這個模板文件就懂如何配置了,要學習,官網的資料最好。


            Romimage

                # ROMIMAGE:
                # The ROM BIOS controls what the PC does when it first powers on.
                # Normally, you can use a precompiled BIOS in the source or binary
                # distribution called BIOS-bochs-latest. The ROM BIOS is usually loaded
                # starting at address 0xf0000, and it is exactly 64k long. Another option
                # is 128k BIOS which is loaded at address 0xe0000.
                # You can also use the environment variable $BXSHARE to specify the
                # location of the BIOS.
                # The usage of external large BIOS images (up to 512k) at memory top is
                # now supported, but we still recommend to use the BIOS distributed with
                # Bochs. The start address optional, since it can be calculated from image size.
                #=======================================================================
                #romimage: file=$BXSHARE/BIOS-bochs-latest
                #romimage: file=bios/seabios-0.5.1.bin
                #romimage: file=mybios.bin, address=0xfff80000 # 512k at memory top
                使用安裝目錄下的文件就可以了。


            Vgaromimage

                #=======================================================================
                # VGAROMIMAGE
                # You now need to load a VGA ROM BIOS into C0000.
                #=======================================================================
                #vgaromimage: file=bios/VGABIOS-elpin-2.40
                #vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
                #vgaromimage: file=bios/VGABIOS-lgpl-latest-cirrus
                使用安裝目錄下的文件就可以了。


            Megs

                指定內存大小。“megs: 32”表示虛擬系統被分配到32MB內存,如果你嫌少的話,可以在行首添加“#”將之屏蔽,然后選擇更大的內存,當然不要忘記將行首的“#”刪除.


            Floppya
                #=======================================================================
                # FLOPPYA:
                # Point this to pathname of floppy image file or device
                # This should be of a bootable floppy(image/device) if you're
                #  booting from 'a' (or 'floppy').
                #
                # You can set the initial status of the media to 'ejected' or 'inserted'.
                #   floppya: 2_88=path, status=ejected    (2.88M 3.5"  media)
                #   floppya: 1_44=path, status=inserted   (1.44M 3.5"  media)
                #   floppya: 1_2=path, status=ejected     (1.2M  5.25" media)
                #   floppya: 720k=path, status=inserted   (720K  3.5"  media)
                #   floppya: 360k=path, status=inserted   (360K  5.25" media)
                #   floppya: 320k=path, status=inserted   (320K  5.25" media)
                #   floppya: 180k=path, status=inserted   (180K  5.25" media)
                #   floppya: 160k=path, status=inserted   (160K  5.25" media)
                #   floppya: image=path, status=inserted  (guess media type from image size)
                #   floppya: type=1_44                    (1.44M 3.5" floppy drive, no media)
                #
                # The path should be the name of a disk image file.  On Unix, you can use a raw
                # device name such as /dev/fd0 on Linux.  On win32 platforms, use drive letters
                # such as a: or b: as the path.  The parameter 'image' works with image files
                # only. In that case the size must match one of the supported types.
                # The parameter 'type' can be used to enable the floppy drive without media
                # and status specified. Usually the drive type is set up based on the media type.
                #=======================================================================
                #floppya: 1_44=/dev/fd0, status=inserted
                #floppya: image=../1.44, status=inserted
                #floppya: 1_44=/dev/fd0H1440, status=inserted
                #floppya: 1_2=../1_2, status=inserted
                #floppya: 1_44=a:, status=inserted
                #floppya: 1_44=a.img, status=inserted
                #floppya: 1_44=/dev/rfd0a, status=inserted


                這是A驅動器的參數,當然,自然也是模擬的。通常所用的軟驅是1.44MB的,因此后面跟的參數是1_44=/dev/fd0 注意:/dev/fd0表示你當前的真實軟驅。如果你想使用鏡像文件(在編寫操作系統中,我們一般都使用鏡像文件)則把/dev/fd0改成你鏡像文件的路徑,如果你的配置文件和鏡像文件在同一個文件夾中則可以直接寫鏡像名稱,比如1_44=msdos.img就可以。

                當然,也可以模擬其它的軟驅,如2.88M,720K,360K的,這非常的有用!后面的參數status標明軟驅的狀態,只能有兩個inserted(軟盤插入軟驅),ejected(軟盤未插入軟驅)。完整的就是“floppya: 1_44=msdos: 1_44=/dev/rfd0a, status=inserted”。


            Boot
                這是啟動的驅動器,它的頻率也比較高。它可以帶的參數有floppy(軟驅啟動),disk(磁盤啟動),cdrom(光驅啟動)。


            ATA[0-3]-MASTER,ATA[0-3]-SLAVE
                指定硬盤或光盤的參數,并指明它是主盤還是從盤。標準的參數是ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17,type參數只能是兩者,disk(硬盤),cdrom(光盤),mode這個參數鏡像類型,它僅僅是針對磁盤才有效,有幾種,flat(一個文件的布局)concat(多個文件的布局)external(開發者指定的,通過C++的類BOCHS就是C++開發的)dll(開發者指定的,通過dll文件)vmware3(wmware3使用的硬盤鏡像)。還有幾個其它的不介紹;path是指定硬盤或是光盤鏡像的文件。Cylinders,Heads,Spt這幾個參數通過這名字就能知道了。注意,這通常來說也不算是太重要,但是某些時候,則是特別重要,比如裝minix1.5的時候,用bximage這個bochs自帶的創建磁盤工具創建了個硬盤,然后就指明路徑就運行,結果分區的時候一直出錯,查了半天才發現這幾個參數沒有設置好,bximage創建的硬盤的Heads和Spt似乎是固定的,和模板自帶的不一樣,結構分區的時候,自然按配置文件里的計算,和實際的自然不符。


            總之,有了配置模版文件,只要稍微懂一些英文很容易就能明白各個參數的作用和如何使用。


            參數名 
            說明


            config_interface
            關于配置文件的接口。其實就是在BOCHS運行過程中改變配置的界面


            display_library 
            圖形庫。


            Romimage 
            ROM BIOS


            Megs 
            內存


            optromimage [1-4] 
            ROM鏡像的選項


            vgaromimage 
            VGA ROM BIOS


            floppya 
            軟驅A


            floppyb 
            軟驅B


            ata[0-3] 
            硬盤或光驅的ata控制器


            ATA[0-3]-MASTER ATA[0-3]-SLAVE 
            ata設備的類型


            Boot 
            啟動驅動器


            Ips 
            模擬的頻率,有些時候特別有用,比如我裝minix1.5的時候,在login的時候,如果機子高檔的話,輸入passwd的時間特別短,這時候就需要調整頻率了。當然,聽說軟件如果對實時控制特別研的時候,也必須改它。


            Clock 
            時鐘


            floppy_bootsig_check 
            是否檢查軟盤引導時候的引導的標記0xaa55


            log 
            調試用的日志


            logprefix 
            日志記錄的格式


            panic 
            Bochs這個軟件本身錯誤的信息,如配置文件出錯或是模擬錯誤如不支持圖形模式


            Error 
            Bochs遇到不能模擬的情況,如出現非法指令


            Info 
            一些不常出現的情況


            Debug 
            主要用來開發Bochs這個軟件時報告情況用的


            debugger_log 
            調試器輸出錯誤的文件。


            com1 
            串行端口。


            parport1 
            并行端口。


            sb16 
            聲卡


            vga_update_interval 
            VGA卡刷新率


            ne2k 
            網卡



            當我們寫好配置文件后,將其后綴名改為.bxrc,就可以被Bochs識別了。這時候我們只要雙擊該配置文件Bochs就啟動并按照該配置文件進行配置,自動執行。



            (前文部分內容從網上Copy而來,避免重復勞動)




            附:Bochs-2.4.5 的模板配置文件 bochsrc_sample.txt

            # You may now use double quotes around pathnames, in case
            # your pathname includes spaces.

            #=======================================================================
            # CONFIG_INTERFACE
            #
            # The configuration interface is a series of menus or dialog boxes that
            # allows you to change all the settings that control Bochs's behavior.
            # Depending on the platform there are up to 3 choices of configuration
            # interface: a text mode version called "textconfig" and two graphical versions
            # called "win32config" and "wx".  The text mode version uses stdin/stdout and
            # is always compiled in, unless Bochs is compiled for wx only. The choice
            # "win32config" is only available on win32 and it is the default there.
            # The choice "wx" is only available when you use "--with-wx" on the configure
            # command.  If you do not write a config_interface line, Bochs will
            # choose a default for you.
            #
            # NOTE: if you use the "wx" configuration interface, you must also use
            # the "wx" display library.
            #=======================================================================
            #config_interface: textconfig
            #config_interface: win32config
            #config_interface: wx

            #=======================================================================
            # DISPLAY_LIBRARY
            #
            # The display library is the code that displays the Bochs VGA screen.  Bochs
            # has a selection of about 10 different display library implementations for
            # different platforms.  If you run configure with multiple --with-* options,
            # the display_library command lets you choose which one you want to run with.
            # If you do not write a display_library line, Bochs will choose a default for
            # you.
            #
            # The choices are:
            #   x              use X windows interface, cross platform
            #   win32          use native win32 libraries
            #   carbon         use Carbon library (for MacOS X)
            #   beos           use native BeOS libraries
            #   macintosh      use MacOS pre-10
            #   amigaos        use native AmigaOS libraries
            #   sdl            use SDL library, cross platform
            #   svga           use SVGALIB library for Linux, allows graphics without X11
            #   term           text only, uses curses/ncurses library, cross platform
            #   rfb            provides an interface to AT&T's VNC viewer, cross platform
            #   wx             use wxWidgets library, cross platform
            #   nogui          no display at all
            #
            # NOTE: if you use the "wx" configuration interface, you must also use
            # the "wx" display library.
            #
            # Specific options:
            # Some display libraries now support specific option to control their
            # behaviour. See the examples below for currently supported options.
            #=======================================================================
            #display_library: amigaos
            #display_library: beos
            #display_library: carbon
            #display_library: macintosh
            #display_library: nogui
            #display_library: rfb, options="timeout=60" # time to wait for client
            #display_library: sdl, options="fullscreen" # startup in fullscreen mode
            #display_library: term
            #display_library: win32, options="legacyF12" # use F12 to toggle mouse
            #display_library: win32, options="gui_debug" # use Win32 debugger gui
            #display_library: wx
            #display_library: x, options="hideIPS" # disable IPS output in status bar
            #display_library: x, options="gui_debug" # use GTK debugger gui

            #=======================================================================
            # ROMIMAGE:
            # The ROM BIOS controls what the PC does when it first powers on.
            # Normally, you can use a precompiled BIOS in the source or binary
            # distribution called BIOS-bochs-latest. The ROM BIOS is usually loaded
            # starting at address 0xf0000, and it is exactly 64k long. Another option
            # is 128k BIOS which is loaded at address 0xe0000.
            # You can also use the environment variable $BXSHARE to specify the
            # location of the BIOS.
            # The usage of external large BIOS images (up to 512k) at memory top is
            # now supported, but we still recommend to use the BIOS distributed with
            # Bochs. The start address optional, since it can be calculated from image size.
            #=======================================================================
            romimage: file=$BXSHARE/BIOS-bochs-latest
            #romimage: file=bios/seabios-0.5.1.bin
            #romimage: file=mybios.bin, address=0xfff80000 # 512k at memory top

            #=======================================================================
            # CPU:
            # This defines cpu-related parameters inside Bochs:
            #
            #  COUNT:
            #  Set the number of processors:cores per processor:threads per core
            #  when Bochs is compiled for SMP emulation.
            #  Bochs currently supports up to 8 threads running simultaniosly.
            #  If Bochs is compiled without SMP support, it won't accept values
            #  different from 1.
            #
            #  QUANTUM:
            #  Maximum amount of instructions allowed to execute by processor before
            #  returning control to another cpu. This option exists only in Bochs
            #  binary compiled with SMP support.
            #
            #  RESET_ON_TRIPLE_FAULT:
            #  Reset the CPU when triple fault occur (highly recommended) rather than
            #  PANIC. Remember that if you trying to continue after triple fault the
            #  simulation will be completely bogus !
            #
            #  MSRS:
            #  Define path to user CPU Model Specific Registers (MSRs) specification.
            #  See example in msrs.def.
            #
            #  IGNORE_BAD_MSRS:
            #  Ignore MSR references that Bochs does not understand; print a warning
            #  message instead of generating #GP exception. This option is enabled
            #  by default but will not be avaiable if configurable MSRs are enabled.
            #
            #  IPS:
            #  Emulated Instructions Per Second. This is the number of IPS that bochs
            #  is capable of running on your machine. You can recompile Bochs with
            #  --enable-show-ips option enabled, to find your host's capability.
            #  Measured IPS value will then be logged into your log file or shown
            #  in the status bar (if supported by the gui).
            #
            #  IPS is used to calibrate many time-dependent events within the bochs
            #  simulation.  For example, changing IPS affects the frequency of VGA
            #  updates, the duration of time before a key starts to autorepeat, and
            #  the measurement of BogoMips and other benchmarks.
            #
            #  Examples:
            #
            #  Bochs Machine/Compiler                                 Mips
            # ____________________________________________________________________
            #  2.3.7 3.2Ghz Intel Core 2 Q9770 with WinXP/g++ 3.4    50 to 55 Mips
            #  2.3.7 2.6Ghz Intel Core 2 Duo with WinXP/g++ 3.4      38 to 43 Mips
            #  2.2.6 2.6Ghz Intel Core 2 Duo with WinXP/g++ 3.4      21 to 25 Mips
            #  2.2.6 2.1Ghz Athlon XP with Linux 2.6/g++ 3.4         12 to 15 Mips
            #  2.0.1 1.6Ghz Intel P4 with Win2000/g++ 3.3             5 to  7 Mips
            #=======================================================================
            cpu: count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"

            #=======================================================================
            # CPUID:
            #
            # This defines features and functionality supported by Bochs emulated CPU:
            #
            #  MMX:
            #  Select MMX instruction set support.
            #  This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5.
            #
            #  SEP:
            #  Select SYSENTER/SYSEXIT instruction set support.
            #  This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
            #
            #  SSE:
            #  Select SSE instruction set support.
            #  Any of NONE/SSE/SSE2/SSE3/SSSE3/SSE4_1/SSE4_2 could be selected.
            #  This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
            #
            #  XAPIC:
            #  Select XAPIC extensions support.
            #  This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
            #
            #  AES:
            #  Select AES instruction set support.
            #  This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
            #
            #  MOVBE:
            #  Select MOVBE Intel(R) Atom instruction support.
            #  This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
            #
            #  XSAVE:
            #  Select XSAVE extensions support.
            #  This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
            #
            #  1G_PAGES:
            #  Enable 1G page size support in long mode.
            #  This option exists only if Bochs compiled with x86-64 support.
            #
            #  MWAIT_IS_NOP:
            #  When this option is enabled MWAIT will not put the CPU into a sleep state.
            #  This option exists only if Bochs compiled with --enable-monitor-mwait.
            #
            #  VENDOR_STRING:
            #  Set the CPUID vendor string returned by CPUID(0x0). This should be a
            #  twelve-character ASCII string. 
            #
            #  BRAND_STRING:
            #  Set the CPUID vendor string returned by CPUID(0x80000002 .. 0x80000004). 
            #  This should be at most a forty-eight-character ASCII string. 
            #
            #  CPUID_LIMIT_WINNT:
            #  Determine whether to limit maximum CPUID function to 3. This mode is
            #  required to workaround WinNT installation and boot issues.
            #=======================================================================
            cpuid: mmx=1, sep=1, sse=sse4_2, xapic=1, aes=1, movbe=1, xsave=1, cpuid_limit_winnt=0

            #=======================================================================
            # MEMORY
            # Set the amount of physical memory you want to emulate.
            #
            # GUEST:
            # Set amount of guest physical memory to emulate. The default is 32MB,
            # the maximum amount limited only by physical address space limitations.
            #
            # HOST:
            # Set amount of host memory you want to allocate for guest RAM emulation.
            # It is possible to allocate less memory than you want to emulate in guest
            # system. This will fake guest to see the non-existing memory. Once guest
            # system touches new memory block it will be dynamically taken from the
            # memory pool. You will be warned (by FATAL PANIC) in case guest already
            # used all allocated host memory and wants more.
            #
            #=======================================================================
            memory: guest=512, host=256

            #=======================================================================
            # OPTROMIMAGE[1-4]:
            # You may now load up to 4 optional ROM images. Be sure to use a
            # read-only area, typically between C8000 and EFFFF. These optional
            # ROM images should not overwrite the rombios (located at
            # F0000-FFFFF) and the videobios (located at C0000-C7FFF).
            # Those ROM images will be initialized by the bios if they contain
            # the right signature (0x55AA) and a valid checksum.
            # It can also be a convenient way to upload some arbitrary code/data
            # in the simulation, that can be retrieved by the boot loader
            #=======================================================================
            #optromimage1: file=optionalrom.bin, address=0xd0000
            #optromimage2: file=optionalrom.bin, address=0xd1000
            #optromimage3: file=optionalrom.bin, address=0xd2000
            #optromimage4: file=optionalrom.bin, address=0xd3000

            #optramimage1: file=/path/file1.img, address=0x0010000
            #optramimage2: file=/path/file2.img, address=0x0020000
            #optramimage3: file=/path/file3.img, address=0x0030000
            #optramimage4: file=/path/file4.img, address=0x0040000

            #=======================================================================
            # VGAROMIMAGE
            # You now need to load a VGA ROM BIOS into C0000.
            #=======================================================================
            #vgaromimage: file=bios/VGABIOS-elpin-2.40
            vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
            #vgaromimage: file=bios/VGABIOS-lgpl-latest-cirrus

            #=======================================================================
            # VGA:
            # Here you can specify the display extension to be used. With the value
            # 'none' you can use standard VGA with no extension. Other supported
            # values are 'vbe' for Bochs VBE and 'cirrus' for Cirrus SVGA support.
            #=======================================================================
            #vga: extension=cirrus
            vga: extension=vbe

            #=======================================================================
            # FLOPPYA:
            # Point this to pathname of floppy image file or device
            # This should be of a bootable floppy(image/device) if you're
            # booting from 'a' (or 'floppy').
            #
            # You can set the initial status of the media to 'ejected' or 'inserted'.
            #   floppya: 2_88=path, status=ejected    (2.88M 3.5"  media)
            #   floppya: 1_44=path, status=inserted   (1.44M 3.5"  media)
            #   floppya: 1_2=path, status=ejected     (1.2M  5.25" media)
            #   floppya: 720k=path, status=inserted   (720K  3.5"  media)
            #   floppya: 360k=path, status=inserted   (360K  5.25" media)
            #   floppya: 320k=path, status=inserted   (320K  5.25" media)
            #   floppya: 180k=path, status=inserted   (180K  5.25" media)
            #   floppya: 160k=path, status=inserted   (160K  5.25" media)
            #   floppya: image=path, status=inserted  (guess media type from image size)
            #   floppya: type=1_44                    (1.44M 3.5" floppy drive, no media)
            #
            # The path should be the name of a disk image file.  On Unix, you can use a raw
            # device name such as /dev/fd0 on Linux.  On win32 platforms, use drive letters
            # such as a: or b: as the path.  The parameter 'image' works with image files
            # only. In that case the size must match one of the supported types.
            # The parameter 'type' can be used to enable the floppy drive without media
            # and status specified. Usually the drive type is set up based on the media type.
            #=======================================================================
            floppya: 1_44=/dev/fd0, status=inserted
            #floppya: image=../1.44, status=inserted
            #floppya: 1_44=/dev/fd0H1440, status=inserted
            #floppya: 1_2=../1_2, status=inserted
            #floppya: 1_44=a:, status=inserted
            #floppya: 1_44=a.img, status=inserted
            #floppya: 1_44=/dev/rfd0a, status=inserted

            #=======================================================================
            # FLOPPYB:
            # See FLOPPYA above for syntax
            #=======================================================================
            #floppyb: 1_44=b:, status=inserted
            #floppyb: 1_44=b.img, status=inserted

            #=======================================================================
            # ATA0, ATA1, ATA2, ATA3
            # ATA controller for hard disks and cdroms
            #
            # ata[0-3]: enabled=[0|1], ioaddr1=addr, ioaddr2=addr, irq=number
            #
            # These options enables up to 4 ata channels. For each channel
            # the two base io addresses and the irq must be specified.
            #
            # ata0 and ata1 are enabled by default with the values shown below
            #
            # Examples:
            #   ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
            #   ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
            #   ata2: enabled=1, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11
            #   ata3: enabled=1, ioaddr1=0x168, ioaddr2=0x360, irq=9
            #=======================================================================
            ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
            ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
            ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11
            ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9

            #=======================================================================
            # ATA[0-3]-MASTER, ATA[0-3]-SLAVE
            #
            # This defines the type and characteristics of all attached ata devices:
            #   type=       type of attached device [disk|cdrom]
            #   mode=       only valid for disks [flat|concat|external|dll|sparse|vmware3]
            #   mode=       only valid for disks [undoable|growing|volatile]
            #   path=       path of the image
            #   cylinders=  only valid for disks
            #   heads=      only valid for disks
            #   spt=        only valid for disks
            #   status=     only valid for cdroms [inserted|ejected]
            #   biosdetect= type of biosdetection [none|auto], only for disks on ata0 [cmos]
            #   translation=type of translation of the bios, only for disks [none|lba|large|rechs|auto]
            #   model=      string returned by identify device command
            #   journal=    optional filename of the redolog for undoable and volatile disks
            #
            # Point this at a hard disk image file, cdrom iso file, or physical cdrom
            # device.  To create a hard disk image, try running bximage.  It will help you
            # choose the size and then suggest a line that works with it.
            #
            # In UNIX it may be possible to use a raw device as a Bochs hard disk,
            # but WE DON'T RECOMMEND IT.  In Windows there is no easy way.
            #
            # In windows, the drive letter + colon notation should be used for cdroms.
            # Depending on versions of windows and drivers, you may only be able to
            # access the "first" cdrom in the system.  On MacOSX, use path="drive"
            # to access the physical drive.
            #
            # The path is mandatory for hard disks. Disk geometry autodetection works with
            # images created by bximage if CHS is set to 0/0/0 (cylinders are calculated
            # using  heads=16 and spt=63). For other hard disk images and modes the
            # cylinders, heads, and spt are mandatory. In all cases the disk size reported
            # from the image must be exactly C*H*S*512.
            #
            # Default values are:
            #   mode=flat, biosdetect=auto, translation=auto, model="Generic 1234"
            #
            # The biosdetect option has currently no effect on the bios
            #
            # Examples:
            #   ata0-master: type=disk, mode=flat, path=10M.sample, cylinders=306, heads=4, spt=17
            #   ata0-slave:  type=disk, mode=flat, path=20M.sample, cylinders=615, heads=4, spt=17
            #   ata1-master: type=disk, mode=flat, path=30M.sample, cylinders=615, heads=6, spt=17
            #   ata1-slave:  type=disk, mode=flat, path=46M.sample, cylinders=940, heads=6, spt=17
            #   ata2-master: type=disk, mode=flat, path=62M.sample, cylinders=940, heads=8, spt=17
            #   ata2-slave:  type=disk, mode=flat, path=112M.sample, cylinders=900, heads=15, spt=17
            #   ata3-master: type=disk, mode=flat, path=483M.sample, cylinders=1024, heads=15, spt=63
            #   ata3-slave:  type=cdrom, path=iso.sample, status=inserted
            #=======================================================================
            ata0-master: type=disk, mode=flat, path="30M.sample"
            #ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17
            #ata0-master: type=disk, mode=flat, path="c.img", cylinders=0 # autodetect
            #ata0-slave: type=cdrom, path=D:, status=inserted
            #ata0-slave: type=cdrom, path=/dev/cdrom, status=inserted
            #ata0-slave: type=cdrom, path="drive", status=inserted
            #ata0-slave: type=cdrom, path=/dev/rcd0d, status=inserted

            #=======================================================================
            # BOOT:
            # This defines the boot sequence. Now you can specify up to 3 boot drives,
            # which can be 'floppy', 'disk', 'cdrom' or 'network' (boot ROM).
            # Legacy 'a' and 'c' are also supported.
            # Examples:
            #   boot: floppy
            #   boot: cdrom, disk
            #   boot: network, disk
            #   boot: cdrom, floppy, disk
            #=======================================================================
            #boot: floppy
            boot: disk

            #=======================================================================
            # CLOCK:
            # This defines the parameters of the clock inside Bochs:
            #
            #  SYNC:
            #  This defines the method how to synchronize the Bochs internal time
            #  with realtime. With the value 'none' the Bochs time relies on the IPS
            #  value and no host time synchronization is used. The 'slowdown' method
            #  sacrifices performance to preserve reproducibility while allowing host
            #  time correlation. The 'realtime' method sacrifices reproducibility to
            #  preserve performance and host-time correlation.
            #  It is possible to enable both synchronization methods.
            #
            #  TIME0:
            #  Specifies the start (boot) time of the virtual machine. Use a time
            #  value as returned by the time(2) system call. If no time0 value is
            #  set or if time0 equal to 1 (special case) or if time0 equal 'local',
            #  the simulation will be started at the current local host time.
            #  If time0 equal to 2 (special case) or if time0 equal 'utc',
            #  the simulation will be started at the current utc time.
            #
            # Syntax:
            #  clock: sync=[none|slowdown|realtime|both], time0=[timeValue|local|utc]
            #
            # Example:
            #   clock: sync=none,     time0=local       # Now (localtime)
            #   clock: sync=slowdown, time0=315529200   # Tue Jan  1 00:00:00 1980
            #   clock: sync=none,     time0=631148400   # Mon Jan  1 00:00:00 1990
            #   clock: sync=realtime, time0=938581955   # Wed Sep 29 07:12:35 1999
            #   clock: sync=realtime, time0=946681200   # Sat Jan  1 00:00:00 2000
            #   clock: sync=none,     time0=1           # Now (localtime)
            #   clock: sync=none,     time0=utc         # Now (utc/gmt)
            #
            # Default value are sync=none, time0=local
            #=======================================================================
            #clock: sync=none, time0=local


            #=======================================================================
            # FLOPPY_BOOTSIG_CHECK: disabled=[0|1]
            # Enables or disables the 0xaa55 signature check on boot floppies
            # Defaults to disabled=0
            # Examples:
            #   floppy_bootsig_check: disabled=0
            #   floppy_bootsig_check: disabled=1
            #=======================================================================
            floppy_bootsig_check: disabled=0

            #=======================================================================
            # LOG:
            # Give the path of the log file you'd like Bochs debug and misc. verbiage
            # to be written to. If you don't use this option or set the filename to
            # '-' the output is written to the console. If you really don't want it,
            # make it "/dev/null" (Unix) or "nul" (win32). :^(
            #
            # Examples:
            #   log: ./bochs.out
            #   log: /dev/tty
            #=======================================================================
            #log: /dev/null
            log: bochsout.txt

            #=======================================================================
            # LOGPREFIX:
            # This handles the format of the string prepended to each log line.
            # You may use those special tokens :
            #   %t : 11 decimal digits timer tick
            #   %i : 8 hexadecimal digits of cpu current eip (ignored in SMP configuration)
            #   %e : 1 character event type ('i'nfo, 'd'ebug, 'p'anic, 'e'rror)
            #   %d : 5 characters string of the device, between brackets
            #
            # Default : %t%e%d
            # Examples:
            #   logprefix: %t-%e-@%i-%d
            #   logprefix: %i%e%d
            #=======================================================================
            #logprefix: %t%e%d

            #=======================================================================
            # LOG CONTROLS
            #
            # Bochs now has four severity levels for event logging.
            #   panic: cannot proceed.  If you choose to continue after a panic,
            #          don't be surprised if you get strange behavior or crashes.
            #   error: something went wrong, but it is probably safe to continue the
            #          simulation.
            #   info: interesting or useful messages.
            #   debug: messages useful only when debugging the code.  This may
            #          spit out thousands per second.
            #
            # For events of each level, you can choose to crash, report, or ignore.
            # TODO: allow choice based on the facility: e.g. crash on panics from
            #       everything except the cdrom, and only report those.
            #
            # If you are experiencing many panics, it can be helpful to change
            # the panic action to report instead of fatal.  However, be aware
            # that anything executed after a panic is uncharted territory and can
            # cause bochs to become unstable.  The panic is a "graceful exit," so
            # if you disable it you may get a spectacular disaster instead.
            #=======================================================================
            panic: action=ask
            error: action=report
            info: action=report
            debug: action=ignore
            #pass: action=fatal

            #=======================================================================
            # DEBUGGER_LOG:
            # Give the path of the log file you'd like Bochs to log debugger output.
            # If you really don't want it, make it /dev/null or '-'. :^(
            #
            # Examples:
            #   debugger_log: ./debugger.out
            #=======================================================================
            #debugger_log: /dev/null
            #debugger_log: debugger.out
            debugger_log: -

            #=======================================================================
            # COM1, COM2, COM3, COM4:
            # This defines a serial port (UART type 16550A). In the 'term' you can specify
            # a device to use as com1. This can be a real serial line, or a pty.  To use
            # a pty (under X/Unix), create two windows (xterms, usually).  One of them will
            # run bochs, and the other will act as com1. Find out the tty the com1
            # window using the `tty' command, and use that as the `dev' parameter.
            # Then do `sleep 1000000' in the com1 window to keep the shell from
            # messing with things, and run bochs in the other window.  Serial I/O to
            # com1 (port 0x3f8) will all go to the other window.
            # In socket* and pipe* (win32 only) modes Bochs becomes either socket/named pipe
            # client or server. In client mode it connects to an already running server (if
            # connection fails Bochs treats com port as not connected). In server mode it
            # opens socket/named pipe and waits until a client application connects to it
            # before starting simulation. This mode is useful for remote debugging (e.g.
            # with gdb's "target remote host:port" command or windbg's command line option
            # -k com:pipe,port=\\.\pipe\pipename). Note: 'socket' is a shorthand for
            # 'socket-client' and 'pipe' for 'pipe-client'. Socket modes use simple TCP
            # communication, pipe modes use duplex byte mode pipes.
            # Other serial modes are 'null' (no input/output), 'file' (output to a file
            # specified as the 'dev' parameter), 'raw' (use the real serial port - under
            # construction for win32), 'mouse' (standard serial mouse - requires
            # mouse option setting 'type=serial', 'type=serial_wheel' or 'type=serial_msys').
            #
            # Examples:
            #   com1: enabled=1, mode=null
            #   com1: enabled=1, mode=mouse
            #   com2: enabled=1, mode=file, dev=serial.out
            #   com3: enabled=1, mode=raw, dev=com1
            #   com3: enabled=1, mode=socket-client, dev=localhost:8888
            #   com3: enabled=1, mode=socket-server, dev=localhost:8888
            #   com4: enabled=1, mode=pipe-client, dev=\\.\pipe\mypipe
            #   com4: enabled=1, mode=pipe-server, dev=\\.\pipe\mypipe
            #=======================================================================
            #com1: enabled=1, mode=term, dev=/dev/ttyp9


            #=======================================================================
            # PARPORT1, PARPORT2:
            # This defines a parallel (printer) port. When turned on and an output file is
            # defined the emulated printer port sends characters printed by the guest OS
            # into the output file. On some platforms a device filename can be used to
            # send the data to the real parallel port (e.g. "/dev/lp0" on Linux, "lpt1" on
            # win32 platforms).
            #
            # Examples:
            #   parport1: enabled=1, file="parport.out"
            #   parport2: enabled=1, file="/dev/lp0"
            #   parport1: enabled=0
            #=======================================================================
            parport1: enabled=1, file="parport.out"

            #=======================================================================
            # SB16:
            # This defines the SB16 sound emulation. It can have several of the
            # following properties.
            # All properties are in the format sb16: property=value
            # midi: The filename is where the midi data is sent. This can be a
            #       device or just a file if you want to record the midi data.
            # midimode:
            #      0=no data
            #      1=output to device (system dependent. midi denotes the device driver)
            #      2=SMF file output, including headers
            #      3=output the midi data stream to the file (no midi headers and no
            #        delta times, just command and data bytes)
            # wave: This is the device/file where wave output is stored
            # wavemode:
            #      0=no data
            #      1=output to device (system dependent. wave denotes the device driver)
            #      2=VOC file output, incl. headers
            #      3=output the raw wave stream to the file
            # log:  The file to write the sb16 emulator messages to.
            # loglevel:
            #      0=no log
            #      1=resource changes, midi program and bank changes
            #      2=severe errors
            #      3=all errors
            #      4=all errors plus all port accesses
            #      5=all errors and port accesses plus a lot of extra info
            # dmatimer:
            #      microseconds per second for a DMA cycle.  Make it smaller to fix
            #      non-continuous sound.  750000 is usually a good value.  This needs a
            #      reasonably correct setting for the IPS parameter of the CPU option.
            #
            # Examples for output devices:
            #   sb16: midimode=1, midi="", wavemode=1, wave=""           # win32
            #   sb16: midimode=1, midi=alsa:128:0, wavemode=1, wave=alsa # Linux with ALSA
            #=======================================================================
            #sb16: midimode=1, midi=/dev/midi00, wavemode=1, wave=/dev/dsp, loglevel=2, log=sb16.log, dmatimer=600000

            #=======================================================================
            # VGA_UPDATE_INTERVAL:
            # Video memory is scanned for updates and screen updated every so many
            # virtual seconds.  The default is 50000, about 20Hz. Keep in mind that
            # you must tweak the 'cpu: ips=N' directive to be as close to the number
            # of emulated instructions-per-second your workstation can do, for this
            # to be accurate.
            #
            # Examples:
            #   vga_update_interval: 250000
            #=======================================================================
            vga_update_interval: 300000

            # using for Winstone '98 tests
            #vga_update_interval:  100000

            #=======================================================================
            # KEYBOARD_SERIAL_DELAY:
            # Approximate time in microseconds that it takes one character to
            # be transfered from the keyboard to controller over the serial path.
            # Examples:
            #   keyboard_serial_delay: 200
            #=======================================================================
            keyboard_serial_delay: 250

            #=======================================================================
            # KEYBOARD_PASTE_DELAY:
            # Approximate time in microseconds between attempts to paste
            # characters to the keyboard controller. This leaves time for the
            # guest os to deal with the flow of characters.  The ideal setting
            # depends on how your operating system processes characters.  The
            # default of 100000 usec (.1 seconds) was chosen because it works
            # consistently in Windows.
            #
            # If your OS is losing characters during a paste, increase the paste
            # delay until it stops losing characters.
            #
            # Examples:
            #   keyboard_paste_delay: 100000
            #=======================================================================
            keyboard_paste_delay: 100000

            #=======================================================================
            # MOUSE:
            # The Bochs gui creates mouse "events" unless the 'enabled' option is
            # set to 0. The hardware emulation itself is not disabled by this.
            # Unless you have a particular reason for enabling the mouse by default,
            # it is recommended that you leave it off. You can also toggle the mouse
            # usage at runtime (control key + middle mouse button on X11, SDL,
            # wxWidgets and Win32).
            # With the mouse type option you can select the type of mouse to emulate.
            # The default value is 'ps2'. The other choices are 'imps2' (wheel mouse
            # on PS/2), 'serial', 'serial_wheel' and 'serial_msys' (one com port requires
            # setting 'mode=mouse'). To connect a mouse to an USB port, see the 'usb_uhci'
            # or 'usb_ohci' option (requires PCI and USB support).
            #
            # Examples:
            #   mouse: enabled=1
            #   mouse: enabled=1, type=imps2
            #   mouse: enabled=1, type=serial
            #   mouse: enabled=0
            #=======================================================================
            mouse: enabled=0

            #=======================================================================
            # private_colormap: Request that the GUI create and use it's own
            #                   non-shared colormap.  This colormap will be used
            #                   when in the bochs window.  If not enabled, a
            #                   shared colormap scheme may be used.  Not implemented
            #                   on all GUI's.
            #
            # Examples:
            #   private_colormap: enabled=1
            #   private_colormap: enabled=0
            #=======================================================================
            private_colormap: enabled=0

            #=======================================================================
            # fullscreen: ONLY IMPLEMENTED ON AMIGA
            #             Request that Bochs occupy the entire screen instead of a
            #             window.
            #
            # Examples:
            #   fullscreen: enabled=0
            #   fullscreen: enabled=1
            #=======================================================================
            #fullscreen: enabled=0
            #screenmode: name="sample"

            #=======================================================================
            # ne2k: NE2000 compatible ethernet adapter
            #
            # Examples:
            # ne2k: ioaddr=IOADDR, irq=IRQ, mac=MACADDR, ethmod=MODULE, ethdev=DEVICE, script=SCRIPT
            #
            # ioaddr, irq: You probably won't need to change ioaddr and irq, unless there
            # are IRQ conflicts. These arguments are ignored when assign the ne2k to a
            # PCI slot.
            #
            # mac: The MAC address MUST NOT match the address of any machine on the net.
            # Also, the first byte must be an even number (bit 0 set means a multicast
            # address), and you cannot use ff:ff:ff:ff:ff:ff because that's the broadcast
            # address.  For the ethertap module, you must use fe:fd:00:00:00:01.  There may
            # be other restrictions too.  To be safe, just use the b0:c4... address.
            #
            # ethdev: The ethdev value is the name of the network interface on your host
            # platform.  On UNIX machines, you can get the name by running ifconfig.  On
            # Windows machines, you must run niclist to get the name of the ethdev.
            # Niclist source code is in misc/niclist.c and it is included in Windows
            # binary releases.
            #
            # script: The script value is optional, and is the name of a script that
            # is executed after bochs initialize the network interface. You can use
            # this script to configure this network interface, or enable masquerading.
            # This is mainly useful for the tun/tap devices that only exist during
            # Bochs execution. The network interface name is supplied to the script
            # as first parameter
            #
            # If you don't want to make connections to any physical networks,
            # you can use the following 'ethmod's to simulate a virtual network.
            #   null: All packets are discarded, but logged to a few files.
            #   arpback: ARP is simulated. Disabled by default.
            #   vde:  Virtual Distributed Ethernet
            #   vnet: ARP, ICMP-echo(ping), DHCP and read/write TFTP are simulated.
            #         The virtual host uses 192.168.10.1.
            #         DHCP assigns 192.168.10.2 to the guest.
            #         TFTP uses the ethdev value for the root directory and doesn't
            #         overwrite files.
            #
            #=======================================================================
            # ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=fbsd, ethdev=en0 #macosx
            # ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=fbsd, ethdev=xl0
            # ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=linux, ethdev=eth0
            # ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=win32, ethdev=MYCARD
            # ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=tap, ethdev=tap0
            # ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=tuntap, ethdev=/dev/net/tun0, script=./tunconfig
            # ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=null, ethdev=eth0
            # ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=vde, ethdev="/tmp/vde.ctl"
            # ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=vnet, ethdev="c:/temp"

            #=======================================================================
            # pnic: Bochs/Etherboot pseudo-NIC
            #
            # Example:
            # pnic: enabled=1, mac=MACADDR, ethmod=MODULE, ethdev=DEVICE, script=SCRIPT
            #
            # The pseudo-NIC accepts the same syntax (for mac, ethmod, ethdev, script) and
            # supports the same networking modules as the NE2000 adapter. In addition to
            # this, it must be assigned to a PCI slot.
            #=======================================================================
            #pnic: enabled=1, mac=b0:c4:20:00:00:00, ethmod=vnet

            #=======================================================================
            # KEYBOARD_MAPPING:
            # This enables a remap of a physical localized keyboard to a
            # virtualized us keyboard, as the PC architecture expects.
            # If enabled, the keymap file must be specified.
            #
            # Examples:
            #   keyboard_mapping: enabled=1, map=gui/keymaps/x11-pc-de.map
            #=======================================================================
            keyboard_mapping: enabled=0, map=

            #=======================================================================
            # KEYBOARD_TYPE:
            # Type of keyboard return by a "identify keyboard" command to the
            # keyboard controler. It must be one of "xt", "at" or "mf".
            # Defaults to "mf". It should be ok for almost everybody. A known
            # exception is french macs, that do have a "at"-like keyboard.
            #
            # Examples:
            #   keyboard_type: mf
            #=======================================================================
            #keyboard_type: mf

            #=======================================================================
            # USER_SHORTCUT:
            # This defines the keyboard shortcut to be sent when you press the "user"
            # button in the headerbar. The shortcut string is a combination of maximum
            # 3 key names (listed below) separated with a '-' character.
            # Valid key names:
            # "alt", "bksl", "bksp", "ctrl", "del", "down", "end", "enter", "esc",
            # "f1", ... "f12", "home", "ins", "left", "menu", "minus", "pgdwn", "pgup",
            # "plus", "right", "shift", "space", "tab", "up", "win", "print" and "power".
            #
            # Example:
            #   user_shortcut: keys=ctrl-alt-del
            #=======================================================================
            #user_shortcut: keys=ctrl-alt-del

            #=======================================================================
            # I440FXSUPPORT:
            # This option controls the presence of the i440FX PCI chipset. You can
            # also specify the devices connected to PCI slots. Up to 5 slots are
            # available now. These devices are currently supported: ne2k, pcivga,
            # pcidev, pcipnic and usb_ohci. If Bochs is compiled with Cirrus SVGA
            # support you'll have the additional choice 'cirrus'.
            #
            # Example:
            #   i440fxsupport: enabled=1, slot1=pcivga, slot2=ne2k
            #=======================================================================
            i440fxsupport: enabled=1

            #=======================================================================
            # USB_UHCI:
            # This option controls the presence of the USB root hub which is a part
            # of the i440FX PCI chipset. With the portX option you can connect devices
            # to the hub (currently supported: 'mouse', 'tablet', 'keypad', 'disk', 'cdrom'
            # 'hub' and 'printer').
            #
            # If you connect the mouse or tablet to one of the ports, Bochs forwards the
            # mouse movement data to the USB device instead of the selected mouse type.
            # When connecting the keypad to one of the ports, Bochs forwards the input of
            # the numeric keypad to the USB device instead of the PS/2 keyboard.
            #
            # To connect a flat image as an USB hardisk you can use the 'disk' device with
            # the path to the image separated with a colon (see below). To emulate an USB
            # cdrom you can use the 'cdrom' device name and the path to an ISO image or raw
            # device name also separated with a colon.
            #
            # The device name 'hub' connects an external hub with max. 8 ports (default: 4)
            # to the root hub. To specify the number of ports you have to add the value
            # separated with a colon. Connecting devices to the external hub ports is only
            # available in the runtime configuration.
            #
            # The device 'printer' emulates the HP Deskjet 920C printer. The PCL data is
            # sent to a file specified in bochsrc.txt. The current code appends the PCL
            # code to the file if the file already existed. It would probably be nice to
            # overwrite the file instead, asking user first.
            #=======================================================================
            #usb_uhci: enabled=1
            #usb_uhci: enabled=1, port1=mouse, port2=disk:usbdisk.img
            #usb_uhci: enabled=1, port1=hub:7, port2=cdrom:image.iso

            #=======================================================================
            # USB_OHCI:
            # This option controls the presence of the USB OHCI host controller with a
            # 2-port hub. The portX option accepts the same device types with the same
            # syntax as the UHCI controller (see above). The OHCI HC must be assigned to
            # a PCI slot.
            #=======================================================================
            #usb_ohci: enabled=1
            #usb_ohci: enabled=1, port1=printer:usbprinter.bin

            #=======================================================================
            # CMOSIMAGE:
            # This defines image file that can be loaded into the CMOS RAM at startup.
            # The rtc_init parameter controls whether initialize the RTC with values stored
            # in the image. By default the time0 argument given to the clock option is used.
            # With 'rtc_init=image' the image is the source for the initial time.
            #
            # Example:
            #   cmosimage: file=cmos.img, rtc_init=image
            #=======================================================================
            #cmosimage: file=cmos.img, rtc_init=time0

            #=======================================================================
            # MAGIC_BREAK:
            # This enables the "magic breakpoint" feature when using the debugger.
            # The useless cpu instruction XCHG BX, BX causes Bochs to enter the
            # debugger mode. This might be useful for software development.
            #
            # Example:
            #   magic_break: enabled=1
            #=======================================================================
            #magic_break: enabled=1

            #=======================================================================
            # PORT_E9_HACK:
            # The 0xE9 port doesn't exists in normal ISA architecture. However, we
            # define a convention here, to display on the console of the system running
            # Bochs anything that is written to it. The idea is to provide debug output
            # very early when writing BIOS or OS code for example, without having to
            # bother with setting up a serial port or etc. Reading from port 0xE9 will
            # will return 0xe9 to let you know if the feature is available.
            # Leave this 0 unless you have a reason to use it.
            #
            # Example:
            #   port_e9_hack: enabled=1
            #=======================================================================
            #port_e9_hack: enabled=1

            #=======================================================================
            # DEBUG_SYMBOLS:
            # This loads symbols from the specified file for use in Bochs' internal
            # debugger. Symbols are loaded into global context. This is equivalent to
            # issuing ldsym debugger command at start up.
            #
            # Example:
            #   debug_symbols: file="kernel.sym"
            #   debug_symbols: file="kernel.sym", offset=0x80000000
            #=======================================================================
            #debug_symbols: file="kernel.sym"

            #=======================================================================
            # other stuff
            #=======================================================================
            #load32bitOSImage: os=nullkernel, path=../kernel.img, iolog=../vga_io.log
            #load32bitOSImage: os=linux, path=../linux.img, iolog=../vga_io.log, initrd=../initrd.img
            #text_snapshot_check: enabled=1
            #print_timestamps: enabled=1

            #-------------------------
            # PCI host device mapping
            #-------------------------
            #pcidev: vendor=0x1234, device=0x5678

            #=======================================================================
            # GDBSTUB:
            # Enable GDB stub. See user documentation for details.
            # Default value is enabled=0.
            #=======================================================================
            #gdbstub: enabled=0, port=1234, text_base=0, data_base=0, bss_base=0

            #=======================================================================
            # PLUGIN_CTRL:
            # Controls the presence of optional plugins without a separate option.
            # By default all existing plugins are enabled. These plugins are currently
            # supported: 'acpi', 'biosdev', 'extfpuirq', 'gameport', 'iodebug',
            # 'pci_ide', 'speaker' and 'unmapped'.
            #=======================================================================
            #plugin_ctrl: biosdev=0, speaker=0

            #=======================================================================
            # USER_PLUGIN:
            # Load user-defined plugin. This option is available only if Bochs is
            # compiled with plugin support. Maximum 8 different plugins are supported.
            # See the example in the Bochs sources how to write a plugin device.
            #=======================================================================
            #user_plugin: name=testdev

            #=======================================================================
            # for Macintosh, use the style of pathnames in the following
            # examples.
            #
            # vgaromimage: :bios:VGABIOS-elpin-2.40
            # romimage: file=:bios:BIOS-bochs-latest, address=0xf0000
            # floppya: 1_44=[fd:], status=inserted
            #=======================================================================

            #=======================================================================
            # MEGS
            # Set the number of Megabytes of physical memory you want to emulate.
            # The default is 32MB, most OS's won't need more than that.
            # The maximum amount of memory supported is 2048Mb.
            # The 'MEGS' option is deprecated. Use 'MEMORY' option instead.
            #=======================================================================
            #megs: 256
            #megs: 128
            #megs: 64
            #megs: 32
            #megs: 16
            #megs: 8

            posted on 2011-04-03 12:00 coreBugZJ 閱讀(11359) 評論(0)  編輯 收藏 引用 所屬分類: OperatingSystem

            久久本道久久综合伊人| 国内精品久久久久久99蜜桃| 久久毛片免费看一区二区三区| 狠狠色综合久久久久尤物| 亚洲国产精品嫩草影院久久| 2021国内久久精品| 国产精品久久成人影院| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 性做久久久久久久久久久| 久久人妻AV中文字幕| 久久九九亚洲精品| 99久久综合国产精品免费| 久久精品成人国产午夜| 久久精品久久久久观看99水蜜桃| 国产99精品久久| 7777精品久久久大香线蕉 | 国产91久久综合| 无码人妻精品一区二区三区久久 | 狠狠狠色丁香婷婷综合久久俺| 久久丝袜精品中文字幕| 国产美女久久久| 色狠狠久久AV五月综合| 香蕉久久影院| 久久精品国产色蜜蜜麻豆| 99久久免费国产精精品| 久久精品国产色蜜蜜麻豆| 久久久久久国产精品无码下载 | 国内精品久久久久久中文字幕| 人妻丰满AV无码久久不卡| 欧美亚洲国产精品久久久久| 精品国产婷婷久久久| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久人人爽人人爽人人片av麻烦| 国产精品久久久久一区二区三区| 久久久久久久97| 精品蜜臀久久久久99网站| 久久亚洲AV成人无码| 国产69精品久久久久APP下载| 污污内射久久一区二区欧美日韩| 久久婷婷五月综合色99啪ak| 久久久久人妻一区精品果冻|