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

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", argvc0);
  • execve(argvc0, 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(anacondaArgs0, 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

ID
Password
Join
Stop searching forever. Happiness is just next to you.


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.0111 sec