• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 制作RAMDISK in KERNEL的NetBSD微系統

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    轉載自 matthew的日記 http://matthew.3322.org/index.php?action=showid=4 前言 在前面我們已經講過如何制作軟盤上運行的FreeBSD和OpenBSD系統,現在我們來看看如何制作一個運行在軟盤上的NetBSD系統。同軟盤中的OpenBSD系統一樣,我們還是將系統中的所有配
    轉載自 matthew的日記 http://matthew.3322.org/index.php?action=show&;id=4

    前言

    在前面我們已經講過如何制作軟盤上運行的FreeBSD和OpenBSD系統,現在我們來看看如何制作一個運行在軟盤上的NetBSD系統。同軟盤中的OpenBSD系統一樣,我們還是將系統中的所有配制文件及程序全部存放到NetBSD的內核中,這樣整個系統看起來就是一個文件。下面讓我們具體來看看如何完成這樣一個微系統的制作。

    0、NetBSD的啟動過程

    當硬盤MBR中的引導程序接過啟動之后,MBR中的程序將讀入硬盤NetBSD分區中的引導程序,引導程序默認情況下會加載/boot,然后由boot載入內核/netbsd,此時內核開始檢測一些硬件和做一些初始化。初始化完成后kernel將mount root device,然后啟動系統初始化進程/sbin/init,init將根據/etc/rc中的設置來進行初始化等。

    1、定制RAMDISK內核

    要使用RAMDISK in KERNEL就必須在內核配制文件中加入以下選項:

    options MEMORY_DISK_HOOKS
    options MEMORY_DISK_IS_ROOT # force root on memory disk
    options MEMORY_DISK_SERVER=0
    options MEMORY_DISK_ROOT_SIZE=10000 # size of memory disk, in blocks
    options MEMORY_RBFLAGS=0x00 # boot in to multi-user mode
    pseudo-device md 1 # memory disk device (ramdisk)

    以上的內核參數意義如下:

    MEMORY_DISK_ROOT_SIZE : 內存磁盤大小,以塊為單位
    MEMORY_RBFLAGS=0x00 : 啟動到多用戶模式

    以下是在我機器上使用的一個內核配制文件

    include "arch/i386/conf/std.i386"

    #options INCLUDE_CONFIG_FILE # embed config file in kernel binary

    makeoptions COPTS="-Os" # Optimise for space. Implies -O2

    # Enable the hooks used for initializing the root memory-disk.
    options MEMORY_DISK_HOOKS
    options MEMORY_DISK_IS_ROOT # force root on memory disk
    options MEMORY_DISK_SERVER=1 # 0 readonly 1 writable
    options MEMORY_DISK_ROOT_SIZE=10000 # size of memory disk, in blocks
    options MEMORY_RBFLAGS=0x00 # boot in to multi-user mode

    maxusers 48 # estimated number of users

    # CPU support. At least one is REQUIRED.
    options I386_CPU
    options I686_CPU

    # CPU-related options.
    options MATH_EMULATE # floating point emulation

    # This option allows you to force a serial console at the specified
    # I/O address.
    #options CONSDEVNAME="\"com\"",CONADDR=0x3f8,CONSPEED=9600

    # Avoid irq 5 and 7, the most likely cause of problems on modern laptops.
    options PCIC_ISA_INTR_ALLOC_MASK=0xff5f

    # Standard system options

    options INSECURE # disable kernel security levels

    options RTC_OFFSET=0 # hardware clock is this many mins. west of GMT
    #options NTP # NTP phase/frequency locked loop

    options USERCONF # userconf(4) support
    options PIPE_SOCKETPAIR # smaller, but slower pipe(2)
    options MALLOC_NOINLINE # Not inlining MALLOC saves memory

    # File systems
    file-system FFS # UFS
    file-system MFS # memory file system
    file-system MSDOSFS # MS-DOS file system
    file-system KERNFS # /kern

    options VNODE_OP_NOINLINE # Not inlining vnode op calls saves mem

    # Networking options
    options GATEWAY # packet forwarding
    options INET # IP + ICMP + TCP + UDP
    #options PFIL_HOOKS # pfil(9) packet filter hooks

    # builtin terminal emulations
    options WSEMUL_VT100 # VT100 / VT220 emulation
    # different kernel output - see dev/wscons/wsdisplayvar.h
    options WS_KERNEL_FG=WSCOL_BLACK
    options WS_KERNEL_BG=WSCOL_WHITE
    # compatibility to other console drivers
    #options WSDISPLAY_COMPAT_PCVT # emulate some ioctls
    #options WSDISPLAY_COMPAT_SYSCONS # emulate some ioctls
    #options WSDISPLAY_COMPAT_USL # VT handling
    #options WSDISPLAY_COMPAT_RAWKBD # can get raw scancodes
    # see dev/pckbc/wskbdmap_mfii.c for implemented layouts
    #options PCKBD_LAYOUT="(KB_DE | KB_NODEAD)"
    # allocate a number of virtual screens at autoconfiguration time
    #options WSDISPLAY_DEFAULTSCREENS=4
    # use a large software cursor that doesn't blink
    options PCDISPLAY_SOFTCURSOR
    # modify the screen type of the console; defaults to "80x25"
    #options VGA_CONSOLE_SCREENTYPE="\"80x24\""

    # Kernel root file system and dump configuration.
    config netbsd root on ? type ?
    #config netbsd root on sd0a type ffs
    #config netbsd root on ? type nfs

    #
    # Device configuration
    #

    mainbus0 at root

    cpu* at mainbus?

    apm0 at mainbus0 # Advanced power management


    # Basic Bus Support

    # PCI bus support
    pci* at mainbus? bus ?
    pci* at pchb? bus ?
    pci* at ppb? bus ?

    # PCI bridges
    pchb* at pci? dev ? function ? # PCI-Host bridges
    pceb* at pci? dev ? function ? # PCI-EISA bridges
    pcib* at pci? dev ? function ? # PCI-ISA bridges
    ppb* at pci? dev ? function ? # PCI-PCI bridges
    # XXX 'puc's aren't really bridges, but there's no better place for them here
    puc* at pci? dev ? function ? # PCI "universal" comm. cards

    # ISA bus support
    isa0 at mainbus?
    isa0 at pceb?
    isa0 at pcib?

    # ISA Plug-and-Play bus support
    isapnp0 at isa?

    # Coprocessor Support

    # Math Coprocessor support
    npx0 at isa? port 0xf0 irq 13 # x86 math coprocessor


    # Console Devices

    # ISA console
    #pc0 at isa? port 0x60 irq 1 # pclearcase/" target="_blank" >ccons generic PC console driver

    # wscons
    pckbc0 at isa? # pc keyboard controller
    pckbd* at pckbc? # PC keyboard
    #pms* at pckbc? # PS/2 mouse for wsmouse
    vga0 at isa?
    vga* at pci? dev ? function ?
    pcdisplay0 at isa? # CGA, MDA, EGA, HGA
    wsdisplay* at vga? console ?
    wsdisplay* at pcdisplay? console ?
    wskbd* at pckbd? console ?
    #wsmouse* at pms? mux 0

    pcppi0 at isa?
    sysbeep0 at pcppi?

    # Serial Devices

    # PCI serial interfaces
    com* at puc? port ? # 16x50s on "universal" comm boards
    #cy* at pci? dev ? function ? # Cyclades Cyclom-Y serial boards

    # ISA Plug-and-Play serial interfaces
    com* at isapnp? # Modems and serial boards

    # ISA serial interfaces
    #options COM_HAYESP # adds Hayes ESP serial board support
    com0 at isa? port 0x3f8 irq 4 # Standard PC serial ports
    com1 at isa? port 0x2f8 irq 3
    com2 at isa? port 0x3e8 irq 5
    #com3 at isa? port 0x2e8 irq 9
    #ast0 at isa? port 0x1a0 irq 5 # AST 4-port serial cards
    #com* at ast? slave ?
    #boca0 at isa? port 0x100 irq 5 # BOCA 8-port serial cards
    #com* at boca? slave ?
    #tcom0 at isa? port 0x100 irq 7 # TC-800 8-port serial cards
    #com* at tcom? slave ?
    #rtfps0 at isa? port 0x1230 irq 10 # RT 4-port serial cards
    #com* at rtfps? slave ?
    #cy0 at isa? iomem 0xd4000 irq 12 # Cyclades serial cards

    # Miscellaneous mass storage devices

    # Network Interfaces

    # PCI network interfaces
    fxp* at pci? dev ? function ? # Intel EtherExpress PRO 10+/100B
    le* at pci? dev ? function ? # PCnet-PCI Ethernet
    pcn* at pci? dev ? function ? # AMD PCnet-PCI Ethernet
    rtk* at pci? dev ? function ? # Realtek 8129/8139

    amhphy* at mii? phy ? # AMD 79c901 Ethernet PHYs
    urlphy* at mii? phy ? # Realtek RTL8150L internal PHYs
    ukphy* at mii? phy ? # generic unknown PHYs

    # Pseudo-Devices

    # disk/mass storage pseudo-devices
    pseudo-device md 1 # memory disk device (ramdisk)
    #pseudo-device vnd 4 # disk-like interface to files

    # network pseudo-devices
    pseudo-device bpfilter 8 # Berkeley packet filter
    pseudo-device ipfilter # IP filter (firewall) and NAT
    pseudo-device loop # network loopback
    pseudo-device ppp 2 # Point-to-Point Protocol
    pseudo-device pppoe 3

    # miscellaneous pseudo-devices
    pseudo-device pty 2 # pseudo-terminals (Sysinst needs two)
    # wscons pseudo-devices
    pseudo-device wsmux # mouse & keyboard multiplexor
    #pseudo-device wsfont

    2、制作ramdisk鏡像

    # dd if=/dev/zero of=/ramdisk bs=512 count=9000
    # vnconfig -c /dev/vnd0d /ramdisk
    # disklabel -r -w /dev/vnd0d rdroot
    # newfs -m 0 -S 512 -i 4096 /dev/vnd0a
    # mount /dev/vnd0a /mnt
    # mkdir /mnt/
    # cp /dev/MAKEDEV /mnt/dev
    # cp /bin/ /mnt/bin
    # cp /sbin/init /mnt/sbin
    # cd /mnt/dev/ && ./MAKEDEV ramdisk
    # echo 'echo "This is my minibsd all in kernel" && /bin/sh' > /mnt/etc/rc
    # sync && umount /mnt
    # sync && vnconfig -u vnd0d && sync

    3、將ramdisk寫入kernel

    # mdsetroot /minibsd ramdisk

    4、壓縮kernel大小

    # gzip -9 -c /minibsd > /minibsd.gz

    5、制作目標軟盤

    因為系統需要使用/boot(/usr/mdec/boot)來加載kernel,所以我們需要在軟盤上放置boot文件。

    # disklabel -B -w -r /dev/fd0a fd1440
    # newfs -m 0 -S 512 /dev/fd0a
    # mount /dev/fd0a /mnt
    # cp /usr/mdec/boot /mnt
    # cp /minibsd.gz /mnt/netbsd

    現在你的ramdisk in kernel的mininetbsd系統就已經做好了。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>