· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Booyo LiveCD/Ana Conda

BlogSyncerBoFBoldFontBootSplashBooyoLiveCD/AddPackage BooyoLiveCD/AnaConda

BooyoLiveCD/AnaConda


* boot:
  • kernel_name options
  • label_name options
  • Function key

* isolinux.cfg

* ks.cfg

* command

FC3 install CD ÀÇ ¿É¼Ç

Ä¿³Î ¿É¼Ç: ¾ÆÁÖ ¸¹À½. mem=128M, ramdisk_size=8192

memtest86

installer ¿É¼Ç text mediacheck, rescue, dd, askmethod, updates, resolution=<width>x<height>, nofb, noprobe, skipddc, lores

* CD ÀÇ ³»¿ë
CentOS  RELEASE-NOTES-en       RPM-GPG-KEY-centos4  images    yumgroups.xml
GPL     RELEASE-NOTES-en.html  centosdocs-man.css   isolinux
NOTES   RPM-GPG-KEY            headers              repodata

* isolinux ÀÇ ³»¿ë
boot.cat     initrd.img    memtest      rescue.msg  vmlinuz
boot.msg     isolinux.bin  options.msg  snake.msg
general.msg  isolinux.cfg  param.msg    splash.lss

* initrd.img
  • mv initrd.img initrd.gz
  • gunzip initrd.gz
  • mkdir tmp
  • mount -o loop initrd tmp

* tmp ÀÇ ±¸Á¶ ( initrd.img ÀÇ ³»¿ë )
bin  dev  etc  linuxrc  lost+found  modules  proc  sbin  selinux  sys  tmp  var

linuxrc


* linuxrc ´Â sbin/init ¿¡ link µÇ¾î ÀÖÀ½
  • sbin ¹ØÀÇ halt, poweroff, shutdown Àº init ¿¡ link µÇ¾î ÀÖÀ½.
  • linux rescue ÀÇ °æ¿ì À̿ܿ¡ »ç¿ë°¡´ÉÇѰ¡?
  • anaconda/loader2/init.c °¡ source ÀÓ
    • /proc, /dev/pts, /sys ¸¦ ¸¶¿îÆ®
    • console(/dev/console) ¿¡ ÇØ´çÇÏ´Â °ÍÀ» ã¾Æ device ¿¡ assign.
    • È£½ºÆ®¸í ¼³Á¤ localhost.localdomain
    • / ÆÄÀϽýºÅÛÀ» r/w ·Î ´Ù½Ã ¸¶¿îÆ® (¾î¶»°Ô ¸¶¿îÆ®¸¦ ÇÒ±î?)
mount("/", "/", "ext2", MS_REMOUNT | MS_MGC_VAL, NULL)
  • /tmp ¸¶¿îÆ®: mount("none", "/tmp", "ramfs", 0, NULL)
  • /sbin/loader ¼öÇà
  • È­¸é Ãâ·Â
    • printstr("Greetings.\n");
    • printf("anaconda installer init version %s starting\n", VERSION);
    • printf("mounting /proc filesystem... ");
    • printf("creating /dev filesystem... ");
    • printf("mounting /dev/pts (unix98 pty) filesystem... ");
    • printf("mounting /sys filesystem... ");
    • printf("trying to remount root filesystem read write... ");
    • printf("running install...\n");
    • *argvp++ = "/sbin/loader";
    • printf("running %s\n", argvc[0]);
    • execve(argvc[0], argvc, env);


  • loader


    * insmod, modprobe, rmmod °¡ loader ¿¡ link µÇ¾î ÀÖÀ½.
    • linux rescue ÀÌ¿ÜÀÇ °æ¿ì¿¡ »ç¿ë°¡´ÉÇѰ¡?
    • anaconda/loader2/load.c °¡ source ÀÓ.
    • insmod, modprobe, rmmod ´Â modstubs.c ¿¡ ÀÖÀ½.

      • ¿É¼Ç Á¡°Ë ¹× ¼³Á¤ cmdline, ksfile, test, mediacheck, virtpconsole
      • ¸ðµâ°ü·Ã ÀÛ¾÷
        • /modules/module-info ¸¦ Àоî modinfo ¿¡ ÀúÀå
        • /proc/modules ¸¦ Àоî modloaded ¿¡ ÀúÀå
        • /modules/modules.dep À» Àоî modDeps ¿¡ ÀúÀå
      • console À» À§ÇÑ ¸ðµâ, font, keymap À» ¿Ã¸².
        • iSeries vio console Á¡°Ë ÇÊ¿ä(PowerPC ÀÇ iSeries ¸Ó½Å)
      • load modules: cramfs:vfat:nfs:loop:isofs:floppy:edd
      • ide, scsi, dasd ¼³Á¤
        • cdrom:ide-cd
        • scsi_mod:sd_mod:sr_mod
        • dasd_mod, dasd_diag_mod:dasd_fba_mod:dasd_eckd_mod
      • usb ÃʱâÈ­
        • usb controller °¡ ÀÖ´ÂÁö Á¡°Ë
        • doPwMount("/proc/bus/usb", "/proc/bus/usb", "usbfs", 0, 0,
          NULL, NULL, 0, 0)
        • usb-storage
      • firewire ÃʱâÈ­
        • firewire controller ÀÌ ÀÖ´ÂÁö Á¡°Ë
        • ÀÖÀ¸¸é °ü·Ã ¸ðµâ ·Îµå
      • read /modules/pcitable
      • language set (loader ÀÇ ¾ð¾î)
      • cmdline ¿¡ ÀÔ·ÂµÈ ¸ðµâ ·Îµå
      • µð¹ÙÀ̽º °Ë»ö (probeDevices)
      • doLoaderMain (CD-ROM °Ë»ö, ÆÄÀϽýºÅÛ ¿Ã¸®´Â µí ÇÔ)
        • cdinstall.c
        • findAnacondaCD
        • setupCdrom: base ¹ØÀÇ stage2.img ¸¦ mount ÇÔ
        • queryCDMediaCheck
    rc = newtWinChoice(_("CD Found"), _("OK"),
                           _("Skip"),
           _("To begin testing the CD media before installation press %s.\n\n"
             "Choose %s to skip the media test and start the installation."), _("OK"), _("Skip"));
    
    • selinux °ü·Ã ÀÛ¾÷
    • ´Ù½Ã ¸ðµâÀ» ¿Ã¸®´Â ÀÛ¾÷À» ÇÔ. (kickstart ¶§¹®ÀεíÇÔ)
    • ´Ù½Ã ide, scsi ¸¦ Çϰí busProbe ÇÔ. (kickstart ¶§¹®ÀεíÇÔ)
    • agpgartInitialize

    • initializeParallelPort
    • usbInitializeMouse
    • set environment (python path...)
    • set anaconda path and options
      • rescue, serial, T, graphical, C, expert, noselinux, selinux
      • kickstart, virtpconsole, lang, keymap, module
    buf = sdupprintf(_("Running anaconda, the %s system installer - please wait...\n"), getProductName());
            printf("%s", buf);
    
    • anaconda ¼öÇà
      • execv(anacondaArgs[0], anacondaArgs);

    /base/stage2.img


    * loader2/loader.c
    • main
    • doLoaderMain
    • fineAnacondaCD
    * loader2/cdinstall.c
    • findAnacondaCD
    • setupCdrom
    • mountStage2
    * loader2/method.c
    • mountStage2
    • mountLoopback
    * mount -o loop stage2.img tpm

    * tmp ÀÇ ±¸Á¶
    etc  lib  modules  proc  usr  var
    [root@localhost etc]# ls
    fonts  gtk-2.0  ld.so.cache  nsswitch.conf  passwd        protocols  selinux
    group  joe      man.config   pango          prelink.conf  rpm        services
    [root@localhost usr]# ls
    X11R6  bin  lib  sbin  share
    

    /usr/bin
    [root@localhost bin]# ls
    Xvnc       du               ln           mount          reset     test
    [          echo             load_policy  mpartition     rlogin    time
    anaconda   egrep            loadkeys     mrd            rm        top
    ash        emacs            losetup      mren           rmdir     touch
    awk        env              ls           msh            rmmod     tr
    basename   expr             lsattr       mshowfat       route     traceroute
    bash       false            lsmod        mt             rpm       true
    bunzip2    fgrep            makedevs     mtools         rpm2cpio  tty
    busybox    find             mattrib      mtype          rsh       umount
    bzcat      free             mbadblocks   mv             scp       uname
    bzip2      ftp              mcd          mzip           sed       uniq
    cat        grep             mcopy        nc             sftp      unzip
    chattr     gunzip           md5sum       open           sh        uptime
    chgrp      gzip             mdel         openvt         shred     usleep
    chmod      halt             mdeltree     pico           sleep     vi
    chown      head             mdir         pidof          sort      vncconfig
    chroot     hexdump          mdu          ping           ssh       vncpasswd
    chvt       hostname         mformat      pivot_root     strings   wc
    clear      id               minfo        ps             stty      wget
    cmp        ifconfig         mini-wm      pump           swapoff   which
    cp         install          mkdir        pwd            swapon    whoami
    cpio       jmacs            mknod        python         sync      xargs
    cut        joe              mktemp       python2.3      syslinux  yes
    date       jpico            mlabel       raidstart      tac       zcat
    dd         kill             mmd          raidstop       tail
    deallocvt  killall          mmount       rcp            tar
    df         kudzu-probe      mmove        rdate          tee
    dirname    less             modprobe     readlink       telnet
    dmesg      list-harddrives  more         rescue-startx  termidx
    
    /usr/sbin
    [root@localhost sbin]# ls
    arp        dump       hdparm       mdadm       mkswap     rrestore
    badblocks  e2fsck     hwclock      mkdosfs     mtr        sfdisk
    chroot     e2label    ifconfig     mke2fs      parted     traceroute
    clock      fdisk      load_policy  mkfs.ext2   prelink    tune2fs
    ddcprobe   fsck       lspci        mkfs.ext3   resize2fs
    debugfs    fsck.ext2  lvm          mkfs.msdos  restore
    dmidecode  fsck.ext3  lvm.static   mkfs.vfat   route
    
    

    anaconda


    boot ¿É¼ÇÀ¸·Î ÁÙ ¼ö ÀÖ´Â °ÍÀº Çϵå¿þ¾î °Ë»ö disable, ÀνºÅç ¹Ìµð¾î ½ÃÇè, ÀνºÅç ¹æ¹ý ¼±Åà µîÀÌ ÀÖ½¿.


    anaconda ¸¦ ºÐ¼®ÇÏÁö¸¸, live CD ¸¦ ¸¸µå´Âµ¥ ÇÊ¿äÇÑ ºÎºÐ¸¸ ºÐ¼®ÇÕ´Ï´Ù.

    /sbin/loader °¡ ¿É¼ÇÀ» Ãß°¡ÇÏ¿© anaconda ¸¦ call ÇϴµíÇÔ.

    path append argument parsing try:
    (args, extra) = isys.getopt(theargs, 'CGTRxtdr:fm:',
    [ 'graphical', 'text', 'test', 'debug', 'nofallback',
    'method=', 'rootpath=', 'pcic=', "overhead=", 'testpath=', 'mountfs', 'traceonly', 'kickstart=', 'lang=', 'keymap=', 'kbdtype=', 'module=', 'class=', 'expert', 'serial', 'lowres', 'nofb', 'rescue', 'nomount', 'autostep', 'resolution=', 'skipddc', 'noselinux', 'selinux', 'vnc', 'vncconnect=', 'vnc=', 'cmdline', 'headless', 'virtpconsole='])

    archtecture °¡ s390 ÀÏ °æ¿ì isHeadless = 1 anaconda ¸¦ call Çϱâ Àü¿¡ ÀÌ¹Ì È­¸é¿¡ ÀÇÇØ setting ÀÌ µÇ´Â°¡?
    language, keyboard, ¼³Ä¡ or upgrade, ¼³Ä¡À¯Çü, µð½ºÅ©ÆÄƼ¼Ç, ºÎÆ®·Î´õ, ³×Æ®¿öÅ©, ¹æÈ­º® selinux, Ãß°¡¾ð¾î, ½Ã°£´ë
    anaconda ¿¡¼­ ¸Þ´º È­¸é µð½ºÇ÷¹ÀÌÇϰí setting ÇϴµíÇÔ.

    if not isHeadless:
    try:
    import xsetup import rhpl.xhwstate as xhwstate
    except ImportError:
    isHeadless = 1
    import rhpl.keyboard as keyboard

    import rhpl.xserver as xserver skipddcprobe = skipddc or (x_already_set and flags.test) skipmouseprobe = not ('DISPLAY' not in os.environ or flags.setupFilesystems)

    (videohw, monitorhw, mousehw) = xserver.probeHW(skipDDCProbe=skipddcprobe,
    skipMouseProbe = skipmouseprobe)

    try:
    xcfg = xhwstate.XF86HardwareState(defcard=videohw,
    defmon=monitorhw)

    kbd = keyboard.Keyboard() if keymap:
    kbd.set(keymap)

    xsetup_failed = xserver.startXServer(videohw, monitorhw, mousehw, kbd,
    runres, xStartedCB=doStartupX11Actions, xQuitCB=doShutdownX11Actions, logfile=xlogfile)

    if mousehw:
    id.setMouse(mousehw)

    if videohw:
    id.setVideoCard(videohw)

    if monitorhw:
    id.setMonitor(monitorhw)

    xsetup = xsetup.XSetup(xcfg)

    id.setXSetup(xsetup)

    if kbd:
    id.setKeyboard(kbd)

    instClass.setInstallData(id)

    if lang:
    dispatch.skipStep("language", permanent = 1) instClass.setLanguage(id, lang)

    if keymap:
    dispatch.skipStep("keyboard", permanent = 1) instClass.setKeyboard(id, keymap)

    rhpl


    xserver probeHW
    videocard.VideoCardInfo
    cards = kudzu.probe (kudzu.CLASS_VIDEO,
    kudzu.BUS_PCI | kudzu.BUS_SBUS, kudzu.PROBE_ALL);

    monitor.MonitorInfo
    /usr/sbin/ddcprobe
    mouse.Mouse
    list = kudzu.probe(kudzu.CLASS_MOUSE, kudzu.BUS_UNSPEC,
    kudzu.PROBE_ALL)


    bootloader.py


    instbootloader

    etc/sysconfig

    cbq
    rhn
    networking
    spamassassin - need check
    selinux -> ../selinux/config
    apm-scripts
    netdump_id_dsa.pub - need check
    netdump_id_dsa - need check
    network-scripts
      ifcfg-eth0 - need check
    network - need check
    keyboard - need check
    i18n - need check
    authconfig - need check
    desktop - 0
    
    system-config-securitylevel - need check
    iptables-config - need check
    clock - need check
    firstboot
    hwconf - need check
    
    
    * /usr/lib/anaconda-runtime/pkgorder /root/aster2.5 i386 CentOS | tee pkgorder.txt



    sponsored by andamiro
    sponsored by cdnetworks
    sponsored by HP

    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2010-02-03 17:35:46
    Processing time 0.0841 sec