· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Jin LiveCD/Jin Win

cygwin

  • http://www.cygwin.com/
  • 기본 설치
  • Control Panel --> System --> Advanced --> Environment Variables --> System Variables --> Edit --> Path
  • insert C:\cygwin\bin
  • reboot
  • setup 을 별도로 다운로드
  • devel 에서 gcc 와 make 선택

grub and grubinstall

vim

livecd2win

  • 디렉토리 구조
  • %SystemDrive%\LIVECD
    • base.sqfs, usr.sqfs, version
  • %SystemDrive%\boot
    • vmlinuz, initrd.gz, grub, version
  • %SystemDrive%\boot\grub
    • stage1, stage2, menu.lst, version
  • livecd2win.exe 은 extract 되는 디렉토리에 생성됨
  • uninstall.exe 는 livecd2win.exe 이 수행되면, 같은 디렉토리에 생성됨.
  • shortcut 을 만들 것인가? 만들 필요 없음.
  • 각각의 버전 파일을 만들 것인가?
  • vmlinuz, initrd.gz, grub 는 이름에 버전 넘버를 넣어도 될 것 같군.
  • base 와 usr 도 이름에 버전 넘버를 넣은 것이 가능은 한데, 문제가 있을 것 같다.

installer

  • CD 에 있는 경우
  • 다운로드한 경우
  • 공통된 부분
    • %SystemDrive% 밑에 NTLDR, boot.ini 이 있는가 점검.
    • 없으면? Abort
    • 있으면 boot, LIVECD 있는가 점검
    • 있으면 질문? version
    • 없으면 새로 만듦.
    • 필요 파일들 복사
    • boot/grub 있는가 점검
    • 있으면 질문
    • 없으면 새로 만듦
    • stage1, stage2 복사
    • stage1, stage2 의 attribure 변경
    • make menu.lst
    • grubinstall
    • error 처리

NTFS mount succeeded
stage1(11247118)
 version=3.2
 boot_drive=0xff
 force_lba=0
 stage2_address=0x8000
 stage2_sector=11247118
 stage2_segment=0x800
stage2(11247118+215)
 214 sectors to load from sector 11247119 at 0x820
 menu '(hd0,1)/boot/menu.lst'
stage2 configured on (hd1,1).
  • cygwin
once you have cygwin installed, you need to run the "cygwin bash shell" and use that as your prompt instead of the regular dos prompt in order to get things to work.  
 
the other things are probably installed, but unless you add c:\cygwin\bin (or wherever you installed it) to your PATH environment variable (control panels -> system properties -> advanced -> environment variables) they won't work from a dos prompt (although processing won't build from a dos prompt, you have to use cygwin). 

ntfsblocklist.c:9:30: ../stage2/shared.h: No such file or directory
In file included from ntfsblocklist.c:10:
../stage2/fsys_ntfs.c:51:20: shared.h: No such file or directory
../stage2/fsys_ntfs.c:52:21: filesys.h: No such file or directory
In file included from ntfsblocklist.c:10:
../stage2/fsys_ntfs.c: In function `fixup_record':
../stage2/fsys_ntfs.c:202: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c:202: error: (Each undeclared identifier is reported only once
../stage2/fsys_ntfs.c:202: error: for each function it appears in.)
../stage2/fsys_ntfs.c: In function `get_next_run':
../stage2/fsys_ntfs.c:242: warning: use of cast expressions as lvalues is deprecated
../stage2/fsys_ntfs.c:252: warning: use of cast expressions as lvalues is deprecated
../stage2/fsys_ntfs.c: In function `init_run_list':
../stage2/fsys_ntfs.c:274: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c: In function `find_attribute':
../stage2/fsys_ntfs.c:294: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c:323: error: `print_possibilities' undeclared (first use in this function)
../stage2/fsys_ntfs.c:325: warning: implicit declaration of function `print_a_completion'
../stage2/fsys_ntfs.c: In function `get_next_attribute_list':
../stage2/fsys_ntfs.c:387: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c:411: error: `errnum' undeclared (first use in this function)
../stage2/fsys_ntfs.c:411: error: `ERR_FSYS_CORRUPT' undeclared (first use in this function)
../stage2/fsys_ntfs.c: In function `search_attribute':
../stage2/fsys_ntfs.c:440: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c: In function `read_attribute':
../stage2/fsys_ntfs.c:559: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c:577: warning: implicit declaration of function `devread'
../stage2/fsys_ntfs.c: In function `read_mft_record':
../stage2/fsys_ntfs.c:593: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c: In function `get_16_cluster':
../stage2/fsys_ntfs.c:609: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c: In function `decompress_block':
../stage2/fsys_ntfs.c:647: error: `errnum' undeclared (first use in this function)
../stage2/fsys_ntfs.c:647: error: `ERR_FSYS_CORRUPT' undeclared (first use in this function)
../stage2/fsys_ntfs.c: In function `ntfs_read':
../stage2/fsys_ntfs.c:711: error: `filepos' undeclared (first use in this function)
../stage2/fsys_ntfs.c:711: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c:719: error: `disk_read_func' undeclared (first use in this function)
../stage2/fsys_ntfs.c:719: error: `disk_read_hook' undeclared (first use in this function)
../stage2/fsys_ntfs.c:732: error: `errnum' undeclared (first use in this function)
../stage2/fsys_ntfs.c:732: error: `ERR_FSYS_CORRUPT' undeclared (first use in this function)
../stage2/fsys_ntfs.c:835: error: `filemax' undeclared (first use in this function)
../stage2/fsys_ntfs.c: In function `ntfs_mount':
../stage2/fsys_ntfs.c:849: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c:853: error: `current_drive' undeclared (first use in this function)
../stage2/fsys_ntfs.c:853: error: `current_slice' undeclared (first use in this function)
../stage2/fsys_ntfs.c: In function `ntfs_dir':
../stage2/fsys_ntfs.c:923: error: `FSYS_BUF' undeclared (first use in this function)
../stage2/fsys_ntfs.c:928: error: `errnum' undeclared (first use in this function)
../stage2/fsys_ntfs.c:928: error: `ERR_FSYS_CORRUPT' undeclared (first use in this function)
../stage2/fsys_ntfs.c:939: error: `print_possibilities' undeclared (first use in this function)
../stage2/fsys_ntfs.c:955: error: `ERR_FILE_NOT_FOUND' undeclared (first use in this function)
../stage2/fsys_ntfs.c:967: error: `ERR_BAD_FILETYPE' undeclared (first use in this function)
../stage2/fsys_ntfs.c:973: error: `filemax' undeclared (first use in this function)
../stage2/fsys_ntfs.c:944: warning: value computed is not used
ntfsblocklist.c: In function `ntfs_blocklist':
ntfsblocklist.c:22: error: `errnum' undeclared (first use in this function)
ntfsblocklist.c:26: error: `grub_scratch_mem' undeclared (first use in this function)
ntfsblocklist.c:35: error: `filepos' undeclared (first use in this function)
ntfsblocklist.c:53: error: `disk_read_func' undeclared (first use in this function)
ntfsblocklist.c:53: error: `disk_read_hook' undeclared (first use in this function)
ntfsblocklist.c:56: error: `SECTOR_SIZE' undeclared (first use in this function)
ntfsblocklist.c:57: error: `filemax' undeclared (first use in this function)
make: *** [ntfsblocklist.o] Error 1

  • boot.ini 의 rdisk 는 0 로 되어 있지만, registry 의 System/MountedDevices/DosDevices/C: 에는 hd1 으로
되어 있음.
  • 결과적으로 probe 에서는 hd1 이 돌아옴.

  • while 의 경우 안에서 설정한 것이 밖에서 없어진다?
To edit your environment variables in Windows 2000, right click on My Computer, select Properties.  Under the Advance tab, select Environment Variables.  Here you can edit the path and other environment variables or create new ones.  Note that you will always want to edit the system variables not the user variables.  When editing the PATH variable, directories are separated by the semicolon and don't worry about spaces in the directories.  Also, in order for running applications will see environment variable changes, you will need to restart them.  This includes the command prompt. 

  • mapdisk (hd0) 와 mapdisk (hd1) 을 해 볼 것
  • mapdrive -v c: 를 해 볼 것

  • kernel 을 바꿀 경우 할 일
    • base.sqfs : /boot 밑의 파일들, /lib/modules
    • LIVECD 밑의 base.sqfs
    • /boot 밑의 vmlinuz

[root@localhost usbdisk]# cat /proc/mounts
rootfs / rootfs rw 0 0
none /sys sysfs rw 0 0
/dev/sda2 /mnt/sda2 ntfs ro,noatime,nodiratime,uid=0,gid=0,fmask=0177,dmask=077,nls=default,errors=continue,mft_zone_multiplier=1 0 0
none /var tmpfs rw 0 0
/dev/loop0 /mnt/livecd squashfs ro 0 0
none /livecd unionfs rw,dirs=/var/tmp/livecd_cow=rw:/mnt/livecd=rw,debug=0,delete=all,copyup=preserve 0 0
/dev/loop2 /mnt/usr squashfs ro 0 0
none /usr unionfs rw,dirs=/var/tmp/usr_cow=rw:/mnt/usr=rw,debug=0,delete=all,copyup=preserve 0 0
/proc /proc proc rw,nodiratime 0 0
/proc/bus/usb /proc/bus/usb usbfs rw 0 0
none /dev tmpfs rw 0 0
none /dev/pts devpts rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/dev/hdb1 /mnt/hdb1 ext2 rw,nosuid,nodev 0 0
/dev/hdb2 /mnt/hdb2 ext2 rw,nosuid,nodev 0 0
/dev/sda1 /mnt/sda1 vfat rw,nodiratime,nosuid,nodev,fmask=0000,dmask=0000,codepage=cp437,iocharset=ascii 0 0
/dev/sda3 /mnt/sda3 vfat rw,nodiratime,nosuid,nodev,fmask=0000,dmask=0000,codepage=cp437,iocharset=ascii 0 0
/dev/sda5 /mnt/sda5 ext2 rw,nosuid,nodev 0 0
/dev/sdb1 /media/usbdisk vfat rw,nodiratime,nosuid,nodev,fmask=0022,dmask=0022,codepage=cp437,iocharset=ascii 0 0
[root@localhost usbdisk]# cat /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
/dev/ram0 /     ext2    defaults        1 1
none    /proc   proc    defaults        0 0
none    /sys    sysfs   noauto          0 0
none    /dev/pts        devpts  defaults        0 0
none /dev/shm tmpfs defaults 0 0
# Added by BOOYO
/dev/hdb1 /mnt/hdb1 ext2 noauto,users,exec 0 0
# Added by BOOYO
/dev/hdb2 /mnt/hdb2 ext2 noauto,users,exec 0 0
# Added by BOOYO
/dev/sda1 /mnt/sda1 vfat noauto,users,exec,umask=000 0 0
# Added by BOOYO
/dev/sda2 /mnt/sda2 ntfs noauto,users,exec,ro,umask=000 0 0
# Added by BOOYO
/dev/sda3 /mnt/sda3 vfat noauto,users,exec,umask=000 0 0
# Added by BOOYO
/dev/sda5 /mnt/sda5 ext2 noauto,users,exec 0 0
# Added by BOOYO
/dev/sda6 swap swap defaults 0 0
/dev/fd0                /media/floppy           auto    pamconsole,exec,noauto,managed 0 0
/dev/hda                /media/cdrecorder       auto    pamconsole,exec,noauto,managed 0 0
/dev/sdb1               /media/usbdisk          vfat    pamconsole,exec,noauto,managed 0 0
[root@localhost usbdisk]# cat /etc/mtab
rootfs / rootfs rw 0 0
none /sys sysfs rw 0 0
/dev/sda2 /mnt/sda2 ntfs ro,noatime,nodiratime,uid=0,gid=0,fmask=0177,dmask=077,nls=default,errors=continue,mft_zone_multiplier=1 0 0
none /var tmpfs rw 0 0
/dev/loop0 /mnt/livecd squashfs ro 0 0
none /livecd unionfs rw,dirs=/var/tmp/livecd_cow=rw:/mnt/livecd=rw,debug=0,delete=all,copyup=preserve 0 0
/dev/loop2 /mnt/usr squashfs ro 0 0
none /usr unionfs rw,dirs=/var/tmp/usr_cow=rw:/mnt/usr=rw,debug=0,delete=all,copyup=preserve 0 0
/proc /proc proc rw,nodiratime 0 0
/proc/bus/usb /proc/bus/usb usbfs rw 0 0
none /dev tmpfs rw 0 0
none /dev/pts devpts rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/dev/hdb1 /mnt/hdb1 ext2 rw,nosuid,nodev 0 0
/dev/hdb2 /mnt/hdb2 ext2 rw,nosuid,nodev 0 0
/dev/sda1 /mnt/sda1 vfat rw,nodiratime,nosuid,nodev,fmask=0000,dmask=0000,codepage=cp437,iocharset=ascii 0 0
/dev/sda3 /mnt/sda3 vfat rw,nodiratime,nosuid,nodev,fmask=0000,dmask=0000,codepage=cp437,iocharset=ascii 0 0
/dev/sdb1 /media/usbdisk vfat rw,nodiratime,nosuid,nodev,fmask=0022,dmask=0022,codepage=cp437,iocharset=ascii 0 0

  • rebuildfstab 을 손 보아야 함.
  • grubinstall.c 를 수정함.
    • sprintf(device, "(hd%d,%d)",0,1);

I've seen reference to the boot volume being the place where ntldr,
NTDETECT.COM, and boot.ini reside, and the system volume being
%SystemDrive%, or the volume containing %SystemRoot%.  Those don't seem
to be consistent with the display in Disk Management.
The Boot.ini file uses the Advanced RISC Computing (ARC) naming convention to define the path to a Windows XP Professional installation. If the contents of the Boot.ini are incorrectly changed or the file becomes corrupt, you might not be able to start Windows XP Professional. To detect and correct Boot.ini problems you need to understand ARC paths.
System Partition
The system partition refers to the disk volume that contains the hardware-specific files that are needed to start Windows, such as Ntldr, Boot.ini, and Ntdetect.com. The system partition can be, but does not have to be, the same volume as the boot partition. 
; livecdinstall.nsi
;
; This script is perhaps one of the simplest NSIs you can make. All of the
; optional settings are left to their default settings. The installer simply 
; prompts the user asking them where to install, and drops a copy of example1.nsi
; there. 

;--------------------------------

; The name of the installer
Name "LivecdInstall"

; The file to write
OutFile "livecdinstall.exe"

; The default installation directory
InstallDir c:\boot

Var SYSDRIVE
Var OLDBOOTVER
Var OLDLIVECDVER
Var OLDGRUBVER
Var NEWBOOTVER
Var NEWLIVECDVER
Var NEWGRUBVER

;--------------------------------

; Pages

Page components
Page instfiles

;--------------------------------

; The stuff to install

Section "SysdriveCheck" ;

  ReadEnvStr $SYSDRIVE SystemDrive
  IfFileExists "$SYSDRIVE\NTLDR" 0 NTLDRnotfound
  IfFileExists "$SYSDRIVE\boot.ini" checkend bootininotfound
  
  NTLDRnotfound:
  MessageBox MB_OK|MB_ICONSTOP "Can't find NTLDR"
  Abort
  bootininotfound:
  MessageBox MB_OK|MB_ICONSTOP "Can't find boot.ini"
  Abort
  checkend:
  MessageBox MB_OK|MB_ICONSTOP "Find NTLDR and boot.ini"
SectionEnd ; end the section

Function readversion
  # some commands
FunctionEnd

Section "OldFileVerCheck" ;

  IfFileExists "$SYSDRIVE\LIVECD\version" 0 checkoldbootver
    ClearErrors
    FileOpen $0 $SYSDRIVE\LIVECD\version r
    IfErrors livecdveropenerror
    FileRead $0 $OLDLIVECDVER
    DetailPrint $OLDLIVECDVER
    FileClose $0
    goto checkoldbootver
    livecdveropenerror:
      Abort
  ckeckoldbootver:
  IfFileExists "$SYSDRIVE\boot\version" 0 checkoldgrubver
    ClearErrors
    FileOpen $0 $SYSDRIVE\boot\version r
    IfErrors bootveropenerror
    FileRead $0 $OLDBOOTVER
    DetailPrint $OLDBOOTVER
    FileClose $0
    goto checkoldgrubver
    bootveropenerror:
      Abort
  checkoldgrubver:
  IfFileExists "$SYSDRIVE\boot\grub\version" 0 done
    ClearErrors
    FileOpen $0 $SYSDRIVE\boot\grub/version r
    IfErrors grubveropenerror
    FileRead $0 $OLDGRUBVER
    DetailPrint $OLDGRUBVER
    FileClose $0
    goto done
    bootveropenerror:
      Abort
  done:
SectionEnd ; end the section

Section "NewFileVerCheck" ;

  IfFileExists "$SYSDRIVE\LIVECD\version" 0 +2
  RMDir /r $SYSDRIVE\LIVECD
  IfFileExists "boot\version" 0 +2
  RMDir /r $SYSDRIVE\boot
  IfFileExists "boot\grub\version" 0 +2
  RMDir /r $SYSDRIVE\boot
  CreateDirectory $SYSDRIVE\boot
  CreateDirectory $SYSDRIVE\LIVECD

SectionEnd ; end the section
grubinstall 을 고쳐야 하는가?
문제가 생기면 그때 생각하자....
http://www.articles.lostcoders.net/computers/64/install-osx-tiger-on-intel-machines-or-usb-drives-using-only-windows-software/

NSIS (Nullsoft Scriptable Install System)

NSIS:
Bin Contrib Docs Examples Include Menu NSIS.chm NSIS.exe Plugins
Stubs license.txt livecd2win makensis.exe makensisw.exe nsisconf.nsh
uninst-nsis.exe

./Bin:
GenPat.exe LibraryLocal.exe MakeLangId.exe RegTool.bin zip2exe.exe

./Contrib:
Graphics Language files Modern UI Self-Extractor UIs zip2exe

./Contrib/Graphics:
Checks Header Icons Wizard

./Contrib/Graphics/Checks:
big.bmp classic-cross.bmp classic.bmp colorful.bmp grey-cross.bmp
grey.bmp modern.bmp red-round.bmp red.bmp simple-round.bmp 
simple-round2.bmp simple.bmp

./Contrib/Graphics/Header:
nsis-r.bmp nsis.bmp orange-nsis.bmp orange-r-nsis.bmp orange-r.bmp
orange-uninstall-nsis.bmp orange-uninstall-r-nsis.bmp 
orange-uninstall-r.bmp orange-uninstall.bmp orange.bmp win.bmp

./Contrib/Graphics/Icons:
arrow-install.ico arrow-uninstall.ico arrow2-install.ico
arrow2-uninstall.ico box-install.ico box-uninstall.ico
classic-install.ico classic-uninstall.ico llama-blue.ico
llama-grey.ico modern-install-blue-full.ico modern-install-blue.ico
modern-install-colorful.ico modern-install-full.ico modern-install.ico
modern-uninstall-blue-full.ico modern-uninstall-blue.ico
modern-uninstall-colorful.ico modern-uninstall-full.ico
modern-uninstall.ico nsis1-install.ico nsis1-uninstall.ico
orange-install-nsis.ico orange-install.ico orange-uninstall-nsis.ico
orange-uninstall.ico pixel-install.ico pixel-uninstall.ico
win-install.ico win-uninstall.ico

./Contrib/Graphics/Wizard:
arrow.bmp llama.bmp nsis.bmp nullsoft.bmp orange-nsis.bmp
orange-uninstall-nsis.bmp orange-uninstall.bmp orange.bmp win.bmp

./Contrib/Language files:
Albanian.nlf Arabic.nlf Belarusian.nlf Bosnian.nlf Breton.nlf
Bulgarian.nlf Catalan.nlf Croatian.nlf Czech.nlf Danish.nlf Dutch.nlf
English.nlf Estonian.nlf Farsi.nlf Finnish.nlf French.nlf German.nlf
Greek.nlf Hebrew.nlf Hungarian.nlf Icelandic.nlf Indonesian.nlf
Italian.nlf Japanese.nlf Korean.nlf Kurdish.nlf Latvian.nlf Lithuanian.nlf
Luxembourgish.nlf Macedonian.nlf Malay.nlf Mongolian.nlf Norwegian.nlf
Polish.nlf Portuguese.nlf PortugueseBR.nlf Romanian.nlf Russian.nlf
Serbian.nlf SerbianLatin.nlf SimpChinese.nlf Slovak.nlf Slovenian.nlf
Spanish.nlf Swedish.nlf Thai.nlf TradChinese.nlf Turkish.nlf Ukrainian.nlf

./Contrib/Modern UI:
Language files System.nsh ioSpecial.ini

./Contrib/Modern UI/Language files:
Albanian.nsh Arabic.nsh Belarusian.nsh Bosnian.nsh Breton.nsh
Bulgarian.nsh Catalan.nsh Croatian.nsh Czech.nsh Danish.nsh
Default.nsh Dutch.nsh English.nsh Estonian.nsh Farsi.nsh Finnish.nsh
French.nsh German.nsh Greek.nsh Hebrew.nsh Hungarian.nsh Icelandic.nsh
Indonesian.nsh Italian.nsh Japanese.nsh Korean.nsh Kurdish.nsh Latvian.nsh
Lithuanian.nsh Luxembourgish.nsh Macedonian.nsh Malay.nsh Mongolian.nsh
Norwegian.nsh Polish.nsh Portuguese.nsh PortugueseBR.nsh Romanian.nsh
Russian.nsh Serbian.nsh SerbianLatin.nsh SimpChinese.nsh Slovak.nsh
Slovenian.nsh Spanish.nsh Swedish.nsh Thai.nsh TradChinese.nsh
Turkish.nsh Ukrainian.nsh 

./Contrib/Self-Extractor:
Bin Example.nsi LivecdExtractor.exe Readme.html livecdextractor.nsi
self-extractor.png

./Contrib/Self-Extractor/Bin:
Add-Dir.exe Add-Dir.lst Dir-To-SE Make-List SE-Base.nsh Zip-To-SE
dlg.exe dlg_0.ini dlg_1.ini dlg_2.ini dlg_pass.ini

./Contrib/Self-Extractor/Bin/Dir-To-SE:
Dir-To-SE.exe Dir-To-SE.txt header.nsh

./Contrib/Self-Extractor/Bin/Make-List:
Make-List.exe Make-List.txt

./Contrib/Self-Extractor/Bin/Zip-To-SE:
Cache Zip-To-SE.exe Zip-To-SE.txt header.nsh

./Contrib/Self-Extractor/Bin/Zip-To-SE/Cache:
unzip.exe

./Contrib/UIs:
default.exe modern.exe modern_headerbmp.exe modern_headerbmpr.exe
modern_nodesc.exe modern_smalldesc.exe sdbarker_tiny.exe

./Contrib/zip2exe:
Base.nsh Classic.nsh Modern.nsh

./Docs:
AdvSplash Banner BgImage Dialer InstallOptions Math Modern UI
NSISdl Splash StartMenu StrFunc System VPatch makensisw nsExec

./Examples:
AdvSplash Banner BgImage FileFunc.ini FileFunc.nsi FileFuncTest.nsi
InstallOptions Library.nsi LogicLib.nsi Math Modern UI Splash
StartMenu StrFunc.nsi System TextFunc.ini TextFunc.nsi TextFuncTest.nsi
UserInfo UserVars.nsi VPatch VersionInfo.nsi WordFunc.ini WordFunc.nsi
WordFuncTest.nsi bigtest.nsi example1.nsi example2.nsi gfx.nsi
languages.nsi makensis.ini makensis.nsi nsExec one-section.nsi
primes.nsi rtest.nsi silent.nsi viewhtml.nsi waplugin.nsi

./Include:
Colors.nsh FileFunc.nsh Library.nsh LogicLib.nsh MUI.nsh SE.nsh
Sections.nsh StrFunc.nsh TextFunc.nsh UpgradeDLL.nsh VPatchLib.nsh
WinMessages.nsh WordFunc.nsh livecd2win.nsh

./Menu:
compiler.html docs.html images index.html intro.html notinstalled.html
update.html websites.html

./Menu/images:
clear.gif header.gif line.gif menu.gif menud.gif site.gif

./Plugins:
AdvSplash.dll Banner.dll BgImage.dll Dialer.dll InstallOptions.dll
LangDLL.dll Math.dll NSISdl.dll Splash.dll StartMenu.dll System.dll
TypeLib.dll UserInfo.dll VPatch.dll nsExec.dll

./Stubs:
bzip2 bzip2_solid lzma lzma_solid uninst zlib zlib_solid

./livecd2win:
LIVECD Readme.html boot flushdrv.exe grubinstall.exe livecd2win.exe
livecd2win.nsi

./livecd2win/LIVECD:
base.sqfs usr.sqfs version

./livecd2win/boot:
grub initrd.gz version vmlinuz

./livecd2win/boot/grub:
menu.lst stage1 stage2 version
  • /NSIS/include/livecd2win.nsh
!define StrStr "!insertmacro StrStr"

!macro StrStr ResultVar String SubString
  Push `${String}`
  Push `${SubString}`
  Call StrStr
  Pop `${ResultVar}`
!macroend

Function StrStr
/*After this point:
  ------------------------------------------
  $R0 = SubString (input)
  $R1 = String (input)
  $R2 = SubStringLen (temp)
  $R3 = StrLen (temp)
  $R4 = StartCharPos (temp)
  $R5 = TempStr (temp)*/

  ;Get input from user
  Exch $R0
  Exch
  Exch $R1
  Push $R2
  Push $R3
  Push $R4
  Push $R5

  ;Get "String" and "SubString" length
  StrLen $R2 $R0
  StrLen $R3 $R1
  ;Start "StartCharPos" counter
  StrCpy $R4 0

  ;Loop until "SubString" is found or "String" reaches its end
  loop:
    ;Remove everything before and after the searched part ("TempStr")
    StrCpy $R5 $R1 $R2 $R4

    ;Compare "TempStr" with "SubString"
    StrCmp $R5 $R0 done
    ;If not "SubString", this could be "String"'s end
    IntCmp $R4 $R3 done 0 done
    ;If not, continue the loop
    IntOp $R4 $R4 + 1
    Goto loop
  done:

/*After this point:
  ------------------------------------------
  $R0 = ResultVar (output)*/

  ;Remove part before "SubString" on "String" (if there has one)
  StrCpy $R0 $R1 `` $R4

  ;Return output to user
  Pop $R5
  Pop $R4
  Pop $R3
  Pop $R2
  Pop $R1
  Exch $R0
FunctionEnd

Function AdvReplaceInFile
Exch $0 ;file to replace in
Exch
Exch $1 ;number to replace after
Exch
Exch 2
Exch $2 ;replace and onwards
Exch 2
Exch 3
Exch $3 ;replace with
Exch 3
Exch 4
Exch $4 ;to replace
Exch 4
Push $5 ;minus count
Push $6 ;universal
Push $7 ;end string
Push $8 ;left string
Push $9 ;right string
Push $R0 ;file1
Push $R1 ;file2
Push $R2 ;read
Push $R3 ;universal
Push $R4 ;count (onwards)
Push $R5 ;count (after)
Push $R6 ;temp file name
;-------------------------------
GetTempFileName $R6
FileOpen $R1 $0 r ;file to search in
FileOpen $R0 $R6 w ;temp file
StrLen $R3 $4
StrCpy $R4 -1
StrCpy $R5 -1
loop_read:
ClearErrors
FileRead $R1 $R2 ;read line
IfErrors exit
StrCpy $5 0
StrCpy $7 $R2
loop_filter:
IntOp $5 $5 - 1
StrCpy $6 $7 $R3 $5 ;search
StrCmp $6 "" file_write2
StrCmp $6 $4 0 loop_filter
StrCpy $8 $7 $5 ;left part
IntOp $6 $5 + $R3
StrCpy $9 $7 "" $6 ;right part
StrLen $6 $7
StrCpy $7 $8$3$9 ;re-join
StrCmp -$6 $5 0 loop_filter
IntOp $R4 $R4 + 1
StrCmp $2 all file_write1
StrCmp $R4 $2 0 file_write2
IntOp $R4 $R4 - 1
IntOp $R5 $R5 + 1
StrCmp $1 all file_write1
StrCmp $R5 $1 0 file_write1
IntOp $R5 $R5 - 1
Goto file_write2
file_write1:
FileWrite $R0 $7 ;write modified line
Goto loop_read
file_write2:
FileWrite $R0 $7 ;write modified line
Goto loop_read
exit:
FileClose $R0
FileClose $R1
SetDetailsPrint none
Delete $0
Rename $R6 $0
Delete $R6
SetDetailsPrint both
;-------------------------------
Pop $R6
Pop $R5
Pop $R4
Pop $R3
Pop $R2
Pop $R1
Pop $R0
Pop $9
Pop $8
Pop $7
Pop $6
Pop $5
Pop $4
Pop $3
Pop $2
Pop $1
Pop $0
FunctionEnd

Function FileSearch
Exch $0 ;search for
Exch
Exch $1 ;input file
Exch
Push $2
Push $3
Push $4
Push $5
Push $6
Push $7
Push $8
Push $9
Push $R0
  FileOpen $2 $1 r
  StrLen $4 $0
  StrCpy $5 0
  StrCpy $7 no
  StrCpy $8 0
  StrCpy $9 0
loop_main:
  FileRead $2 $3
  IfErrors done
 IntOp $R0 $R0 + $9
  StrCpy $9 0
  StrCpy $5 0
filter_top:
 IntOp $5 $5 - 1
  StrCpy $6 $3 $4 $5
  StrCmp $6 "" loop_main
  StrCmp $6 $0 0 filter_top
  StrCpy $3 $3 $5
  StrCpy $5 0
 StrCpy $7 yes
 StrCpy $9 1
 IntOp $8 $8 + 1
Goto filter_top
done:
  FileClose $2
  StrCpy $0 $8
  StrCpy $1 $7
  StrCpy $2 $R0
Pop $R0
Pop $9
Pop $8
Pop $7
Pop $6
Pop $5
Pop $4
Pop $3
Exch 2
Exch $2 ;output number of lines
Exch 2
Exch
Exch $1 ;output yes/no
Exch
Exch $0 ;output count found
FunctionEnd
  • /NSIS/livecd2win/livecd2win.nsi
; livecdinstall.nsi
;
; This script is perhaps one of the simplest NSIs you can make. All of the
; optional settings are left to their default settings. The installer simply 
; prompts the user asking them where to install, and drops a copy of example1.nsi
; there. 

;--------------------------------
!include "MUI.nsh"
!include "livecd2win.nsh"

; The name of the installer
Name "Livecd2win"

; The file to write
OutFile "livecd2win.exe"

; The default installation directory
InstallDir c:\boot

!define MUI_ABORTWARNING

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "Korean"

Var SYSDRIVE
Var DEFAULT
Var PARTITION
Var RDISK
Var RESULT

;--------------------------------

; The stuff to install

Function .onInit
 ReadEnvStr $SYSDRIVE SystemDrive
 IfFileExists "$SYSDRIVE\NTLDR" 0 NTLDRnotfound
 IfFileExists "$SYSDRIVE\boot.ini" checkend bootininotfound
 NTLDRnotfound:
 MessageBox MB_OK|MB_ICONSTOP "Can't find NTLDR"
 Abort
 bootininotfound:
 MessageBox MB_OK|MB_ICONSTOP "Can't find boot.ini"
 Abort
 checkend:
FunctionEnd ; end the sectio

Function un.onInit
 ReadEnvStr $SYSDRIVE SystemDrive
 IfFileExists "$SYSDRIVE\boot.ini" checkend bootininotfound
 bootininotfound:
 MessageBox MB_OK|MB_ICONSTOP "Can't find boot.ini"
 Abort
 checkend:
FunctionEnd ; end the sectio

Section "CopyFiles" ;
  IfFileExists "$SYSDRIVE\LIVECD\version" 0 +2
  RMDir /r $SYSDRIVE\LIVECD
  IfFileExists "$SYSDRIVE\boot\version" 0 +2
  RMDir /r $SYSDRIVE\boot
  CreateDirectory $SYSDRIVE\LIVECD
  CreateDirectory $SYSDRIVE\boot
  CreateDirectory $SYSDRIVE\boot\grub
  CopyFiles LIVECD\*.* $SYSDRIVE\LIVECD
  CopyFiles boot\vmlinuz $SYSDRIVE\boot
  CopyFiles boot\initrd.gz $SYSDRIVE\boot
  CopyFiles boot\grub\stage1 $SYSDRIVE\boot\grub
  CopyFiles boot\grub\stage2 $SYSDRIVE\boot\grub
  CopyFiles boot\grub\menu.lst $SYSDRIVE\boot\grub
  WriteUninstaller "uninstall.exe"
SectionEnd ; end the section

Section "GrubInstall" ;
  ReadINIStr $DEFAULT $SYSDRIVE\boot.ini "boot loader" default
; set $PARTITION
  ${StrStr} "$RESULT" "$DEFAULT" "partition(1)"
  StrCmp $RESULT "" +3
  StrCpy $PARTITION "0"
  goto setrdisk
  ${StrStr} "$RESULT" "$DEFAULT" "partition(2)"
  StrCmp $RESULT "" +3
  StrCpy $PARTITION "1"
  goto setrdisk
  ${StrStr} "$RESULT" "$DEFAULT" "partition(3)"
  StrCmp $RESULT "" +3
  StrCpy $PARTITION "2"
  goto setrdisk
  ${StrStr} "$RESULT" "$DEFAULT" "partition(4)"
  StrCmp $RESULT "" +3
  StrCpy $PARTITION "3"
  goto setrdisk
  Abort
; set $RDISK
  setrdisk:
  ${StrStr} "$RESULT" "$DEFAULT" "rdisk(0)"
  StrCmp $RESULT "" +3
  StrCpy $RDISK "0"
  goto writemenu
  ${StrStr} "$RESULT" "$DEFAULT" "rdisk(1)"
  StrCmp $RESULT "" +3
  StrCpy $RDISK "1"
  goto writemenu
  ${StrStr} "$RESULT" "$DEFAULT" "rdisk(2)"
  StrCmp $RESULT "" +3
  StrCpy $RDISK "2"
  goto writemenu
  ${StrStr} "$RESULT" "$DEFAULT" "rdisk(3)"
  StrCmp $RESULT "" +3
  StrCpy $RDISK "3"
  goto writemenu
  Abort
  writemenu:
  StrCmp $PARTITION "0" 0 +3
  StrCmp $RDISK "0" 0 +2
  goto noneedreplace
  Push "(hd0,0)"
  Push "(hd$RDISK,$PARTITION)"
  Push all
  Push all
  Push $SYSDRIVE\boot\grub\menu.lst
  Call AdvReplaceInFile
  noneedreplace:
  ExecWait "flushdrv.exe" $0
  DetailPrint "flushdrv returned $0"
  ExecWait "grubinstall.exe \
            -d $SYSDRIVE \
            -1 $SYSDRIVE\boot\grub\stage1 \
            -2 $SYSDRIVE\boot\grub\stage2 \
            -m (hd$RDISK,$PARTITION)$SYSDRIVE\boot\grub\menu.lst" $0
  DetailPrint "grubinstall returned $0"
  ExecWait "flushdrv.exe" $0
  DetailPrint "flushdrv returned $0"
SectionEnd ; end the section

Section "EditBootini" ;
  ExecWait "attrib -r -h -s $SYSDRIVE\boot.ini" $0
  DetailPrint "attrib result $0"
  Push $SYSDRIVE\boot.ini
  Push "LiveCD on Windows Filesystem"
  Call FileSearch
  Pop $0
  Pop $1
  Pop $2
  StrCmp $1 yes resetattrib
  IfFileExists $SYSDRIVE\boot.ini.grubbak grubadd 0
  ExecWait "copy $SYSDRIVE\boot.ini $SYSDRIVE\boot.ini.grubbak" $0
  DetailPrint "copy result $0"
  ExecWait "attrib +r +h +s $SYSDRIVE\boot.ini.grubbak" $0
  DetailPrint "attrib result $0"
  grubadd:
  FileOpen $0 $SYSDRIVE\boot.ini a
  FileSeek $0 0 END #go to end
  FileWrite $0 '$SYSDRIVE\boot\grub\stage1="LIVECD on Windows Filesystem"'
  FileClose $0
  resetattrib:
  ExecWait "attrib +r +h +s $SYSDRIVE\boot.ini" $0
  DetailPrint "attrib result $0"
SectionEnd ; end the section

Section "un.RestoreBootini" ;
  IfFileExists $SYSDRIVE\boot.ini.grubbak grubbakfound 0
  MessageBox MB_OK|MB_ICONSTOP "Can't find boot.ini.grubbak"
  Abort
  grubbakfound:
  Delete $SYSDRIVE\boot.ini
  ExecWait "copy $SYSDRIVE\boot.ini.grubbak $SYSDRIVE\boot.ini" $0
  DetailPrint "copy result $0"
  ExecWait "attrib +r +h +s $SYSDRIVE\boot.ini" $0
  DetailPrint "attrib result $0"
SectionEnd ; end the section

Section "un.DeleteFiles" ;
  RMDir /r $SYSDRIVE\boot\grub
  RMDir /r $SYSDRIVE\boot
  RMDir /r $SYSDRIVE\LIVECD
SectionEnd ; end the section
  • /NSIS/Contrib/Self-Extractor/livecdextractor.nsi
; ----------------------------- ;
;      NSIS Self-Extractor      ;
;         example script        ;
; ----------------------------- ;
; Extracts NSIS Self-Extractor  ;

;- Include header
!include "SE.nsh"

SetCompress off

;- General settings
${SE-HeadingLine1} 		"Livecd2winExtractor"
${SE-HeadingLine2} 		"0.1"
${SE-Product}			"${SE-HeadingLine1} ${SE-HeadingLine2}"
${SE-OutFile}			"LivecdExtractor.exe"
${SE-ExtractDir}		"C:\livecd2win"

${SE-ExecCheckBox} "$INSTDIR\livecd2win.exe" "Install Livecd on Windows"
${SE-AutoClose}

;- Files to extract
${SE-FilesStart}

 ${SE-OutPath} "$INSTDIR"
  ${SE-File} "${NSISDIR}\livecd2win\grubinstall.exe"   "grubinstall.exe"
  ${SE-File} "${NSISDIR}\livecd2win\flushdrv.exe"	"flushdrv.exe"
  ${SE-File} "${NSISDIR}\livecd2win\livecd2win.exe"	"livecd2win.exe"
  ${SE-File} "${NSISDIR}\livecd2win\Readme.html"	"Readme.html"
  
 ${SE-OutPath} "$INSTDIR\LIVECD"
  ${SE-File} "${NSISDIR}\livecd2win\LIVECD\base.sqfs"   "base.sqfs"
  ${SE-File} "${NSISDIR}\livecd2win\LIVECD\usr.sqfs"	"usr.sqfs"
  ${SE-File} "${NSISDIR}\livecd2win\LIVECD\version"	"version"
  
 ${SE-OutPath} "$INSTDIR\boot"
  ${SE-File} "${NSISDIR}\livecd2win\boot\vmlinuz"	"vmlinuz"
  ${SE-File} "${NSISDIR}\livecd2win\boot\initrd.gz"	"initrd.gz"
  ${SE-File} "${NSISDIR}\livecd2win\boot\version"	"version"
  
 ${SE-OutPath} "$INSTDIR\boot\grub"
  ${SE-File} "${NSISDIR}\livecd2win\boot\grub\stage1" "stage1"
  ${SE-File} "${NSISDIR}\livecd2win\boot\grub\stage2" "stage2"
  ${SE-File} "${NSISDIR}\livecd2win\boot\grub\menu.lst" "menu.lst"
  ${SE-File} "${NSISDIR}\livecd2win\boot\grub\version" "version"
${SE-FilesEnd}

 HAL is an information service for devices. The HAL daemon maintains a dynamic database of connected hardware devices. In certain cases, this information can be used by specialized callout programs to maintain certain device configuration files. This is the case with removable file systems like CD-ROMs and USB card readers. HAL will invoke the fstab-sync callout program that will use HAL information to dynamically change managed entries in the fstab file. Removable devices are managed by fstab-sync with HAL information, telling fstab-sync when such disks are attached. The situation can be confusing. Callout programs perform the actual tasks, but HAL provides the device information. For example, though fstab-sync changes the fstab file, the options and mountpoints used for CD-ROM entries are specified in HAL device information files that set policies for storage management.

 Hal properties for devices are handled by device information files (fdi) in the /usr/share/hal/fdi and /etc/hal/fdi directories. The /usr/share/hal/fdi directory is used for configurations provided by the distribution, in this case, Fedora Core 4, whereas /etc/hal/fdi is used for setting user administrative configurations. In both are listed subdirectories for the different kinds of information that HAL manages, such as policy, whose subdirectories have files with policies for how to manage devices. The files, known as device information files, have rules for obtaining information about devices, as well as detecting and assigning options for removable devices. The device information files have the extension .fdi, as in storage-policy.fdi. For example, the policy directory has two subdirectories: 10osvendor and 30thirdpary. The 10osvendor holds the fdi files that have policy rules for managing removable devices on Fedora Core 4 (10osvendor replaced 90defaultpolicy, which was used in Fedora Core 3). This directory holds the 10-storage-policy.fdi policy file used for storage devices. Here you'll find the properties that specify options for removable storage devices such as CD-ROMs. The directories begin with numbers; lower numbers are read first. Unlike with udev, the last property read will override any previous property settings, so priority is given to higher-numbered directories and the fdi files they hold. This is why the default policies are in 10osvendor, whereas the user policies, which would override the defaults, would be in a higher-numbered directory like 30user, as are third-party policies, 20thirdpolicy.

There are currently three device information file directories set up in the device information file directories, each for different kinds of information: information, policy, and preprobe.

    * Information: Holds information about devices.
    * Policy: Sets policies such as storage policies. The default policies for a storage device are in a 10-storage-policy.fdi file in the policy/10osvendor directory.
    * Preprobe: Handles difficult devices such as unusual drives or drive configurations, for instance, those in preprobe/10osvendor/10-ide-drives.fdi. This contains information needed even before the device is probed. 

Within these subdirectories are still other subdirectories indicating where the device information files come from, such as vendor, thirdparty, or user, and their priority. Certain critical files are listed here:

    * information/10freedesktop: Information provided by freedesktop.org
    * policy/10osvendor: Default policies (set by system administrator and OS distribution)
    * preprobe/10osvendor: Preprobe policies for difficult devices 
usb 1-2: new full speed USB device using uhci_hcd and address 2
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
  Vendor: STORAGE   Model: [HDD]             Rev: 1026
  Type:   Direct-Access                      ANSI SCSI revision: 02
usb-storage: device scan complete
SCSI device sda: 250400 512-byte hdwr sectors (128 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 250400 512-byte hdwr sectors (128 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: assuming drive cache: write through
 sda: sda1
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0

  • fstab 이 우선하는 것 같음.
  • 위의 경우는 fstab 에 설정되어 있었던 상황임
/dev/fd0                /media/floppy1          auto    pamconsole,exec,noauto,managed 0 0
/dev/hda                /media/cdrom            auto    pamconsole,exec,noauto,managed 0 0
/dev/sda1               /media/usbdisk          vfat    pamconsole,exec,noauto,managed 0 0
usb 1-2: new full speed USB device using uhci_hcd and address 2
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
  Vendor: STORAGE   Model: [HDD]             Rev: 1026
  Type:   Direct-Access                      ANSI SCSI revision: 02
usb-storage: device scan complete
SCSI device sda: 250400 512-byte hdwr sectors (128 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 250400 512-byte hdwr sectors (128 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: assuming drive cache: write through
 sda: sda1
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
/dev/sda1 /media/usbdisk vfat rw,nodiratime,nosuid,nodev,fmask=0022,dmask=0022,codepage=cp437,iocharset=ascii 0 0

  • /etc/auto.master
  • /etc/auto.misc
    • usb -fstype=vfat,rw,iocharset=iso8859-7 :/dev/sdc1
    • 디바이스가 고정되지 않으므로 곤란함.

<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

<device>
<match key="block.is_volume" bool="true">
<match key="volume.fsusage" string="filesystem">
<match key="@block.storage_device:storage.vendor" string="FUJITSU">
<match key="@block.storage_device:storage.model" string="MHT2080AT">
<merge key="volume.policy.desired_mount_point" type="copy_property">volume.label</merge>
<!-- W95 FAT32 (LBA)-->
<match key="volume.partition.msdos_part_table_type" int="0x0c">
<merge key="volume.policy.mount_option.iocharset=utf8" type="bool">true</merge>
<merge key="volume.policy.mount_option.codepage=932" type="bool">true</merge>
</match>
</match>
</match>
</match>
</match>
</device>

15d14
<       <merge key="storage.policy.default.mount_option.iocharset=utf8" type="bool">true</merge>

Nov 24 09:08:08 localhost scsi.agent[2935]: disk at /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/host2/target2:0:0/2:0:0:0
Nov 24 09:08:09 localhost fstab-sync[2955]: added mount point /media/usbdisk for /dev/sdb1

  • messagebus restart 하면 icon 들이 나옴.
  • messgaebus 가 처리를 못 하는 것으로 생각해야 함.
  • 즉 dbus daemon 에 문제가 있는 것으로 생각됨.

  • dbus-monitor --system
signal sender=:1.1 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceAdded
 0 string "/org/freedesktop/Hal/devices/volume_label__0"

signal sender=:1.1 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceRemoved
 0 string "/org/freedesktop/Hal/devices/usb_device_1080_1_noserial_if0"
  • /usr/share/hal/fdi/policy/10osvendor/10-storage-policy.fdi
  <device>
    <match key="storage.media_check_enabled" bool="true">
      <append key="info.addons" type="strlist">hald-addon-storage</append>
    </match>
  </device>
  • /usr/share/hal/fdi/policy/10osvendor/90-fstab-sync.fdi
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

  <device>
    <match key="info.udi" string="/org/freedesktop/Hal/devices/computer">
      <append key="info.callouts.add" type="strlist">fstab-sync --clean</append>    </match>

    <match key="volume.policy.should_mount" bool="true">
      <match key="@block.storage_device:storage.policy.should_mount" bool="true">
        <append key="info.callouts.add" type="strlist">fstab-sync</append>
        <append key="info.callouts.remove" type="strlist">fstab-sync</append>
      </match>
    </match>

    <match key="storage.policy.should_mount" bool="true">
      <match key="storage.no_partitions_hint" bool="true">
        <append key="info.callouts.add" type="strlist">fstab-sync</append>
        <append key="info.callouts.remove" type="strlist">fstab-sync</append>
      </match>
    </match>
  </device>

</deviceinfo>

udi = '/org/freedesktop/Hal/devices/storage_model_LG_CD_ROM_CRD_8521B'
  info.callouts.remove = {'fstab-sync'} (string list)
  info.callouts.add = {'hald-add-selinux-mount-option', 'fstab-sync'} (string list)
  info.addons = {'hald-addon-storage'} (string list)
  storage.policy.desired_mount_point = 'cdrom'  (string)
  storage.policy.mount_filesystem = 'auto'  (string)
  storage.policy.should_mount = true  (bool)
  block.storage_device = '/org/freedesktop/Hal/devices/storage_model_LG_CD_ROM_CRD_8521B'  (string)
  info.udi = '/org/freedesktop/Hal/devices/storage_model_LG_CD_ROM_CRD_8521B'  (string)
  storage.cdrom.write_speed = 0  (0x0)  (int)
  storage.cdrom.read_speed = 9152  (0x23c0)  (int)
  storage.cdrom.support_media_changed = true  (bool)
  storage.cdrom.dvdplusrw = false  (bool)
  storage.cdrom.dvdplusr = false  (bool)
  storage.cdrom.dvdram = false  (bool)
  storage.cdrom.dvdrw = false  (bool)
  storage.cdrom.dvdr = false  (bool)
  storage.cdrom.dvd = false  (bool)
  storage.cdrom.cdrw = false  (bool)
  storage.cdrom.cdr = false  (bool)
  storage.firmware_version = '1.02'  (string)
  storage.requires_eject = true  (bool)
  storage.hotpluggable = false  (bool)
  info.capabilities = {'storage', 'block', 'storage.cdrom'} (string list)
  info.category = 'storage'  (string)
  info.product = 'LG CD-ROM CRD-8521B'  (string)
  storage.removable = true  (bool)
  storage.physical_device = '/org/freedesktop/Hal/devices/pci_8086_7111_ide_0_0'  (string)
  storage.drive_type = 'cdrom'  (string)
  storage.vendor = ''  (string)
  storage.model = 'LG CD-ROM CRD-8521B'  (string)
  storage.automount_enabled_hint = true  (bool)
  storage.media_check_enabled = true  (bool)
  storage.no_partitions_hint = true  (bool)
  storage.bus = 'ide'  (string)
  block.is_volume = false  (bool)
  block.minor = 0  (0x0)  (int)
  block.major = 3  (0x3)  (int)
  block.device = '/dev/hda'  (string)
  linux.hotplug_type = 3  (0x3)  (int)
  info.parent = '/org/freedesktop/Hal/devices/pci_8086_7111_ide_0_0'  (string)
  linux.sysfs_path_device = '/sys/block/hda'  (string)
  linux.sysfs_path = '/sys/block/hda'  (string)
  • /usr/libexec/hald-add-selinux-mount-option
  • /usr/sbin/fstab-sync
  • /usr/libexec
[root@localhost libexec]# ls hald*
hald-add-selinux-mount-option  hald-addon-usb-csr    hald-probe-smbios
hald-addon-acpi                hald-probe-hiddev     hald-probe-storage
hald-addon-hid-ups             hald-probe-input      hald-probe-volume
hald-addon-pmu                 hald-probe-pc-floppy
hald-addon-storage             hald-probe-printer

  • cat /etc/fstab
    • usbdisk 없음
  • dbus-monitor --system
  • usb 꽂음
  • dbus-monitor 에 나옴.
signal sender=:1.1 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceAdded
 0 string "/org/freedesktop/Hal/devices/usb_device_1080_1_noserial"
signal sender=:1.1 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceAdded
 0 string "/org/freedesktop/Hal/devices/usb_device_1080_1_noserial_if0"
signal sender=:1.1 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceAdded
 0 string "/org/freedesktop/Hal/devices/usb_device_1080_1_noserial_if0_scsi_host"
signal sender=:1.1 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceAdded
 0 string "/org/freedesktop/Hal/devices/usb_device_1080_1_noserial_if0_scsi_host_scsi_device_lun0"
signal sender=:1.1 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceAdded
 0 string "/org/freedesktop/Hal/devices/storage_model__HDD_"
signal sender=:1.1 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceAdded
 0 string "/org/freedesktop/Hal/devices/volume_part1_size_128172032"
  • /etc/fstab 변경됨. fstab-sync
  • 화면에는 나오지 않음
  • messagesbus restart 를 하면 화면에 나옴.
signal sender=org.freedesktop.DBus -> dest=(null destination) interface=org.freedesktop.DBus; member=NameOwnerChanged
 0 string "com.redhat.CupsDriverConfig"
 1 string ":1.0"
 2 string ""
signal sender=org.freedesktop.DBus -> dest=(null destination) interface=org.freedesktop.DBus; member=NameOwnerChanged
 0 string ":1.0"
 1 string ":1.0"
 2 string ""
signal sender=org.freedesktop.DBus -> dest=(null destination) interface=org.freedesktop.DBus; member=NameOwnerChanged
 0 string "org.freedesktop.Hal"
 1 string ":1.1"
 2 string ""
signal sender=org.freedesktop.DBus -> dest=(null destination) interface=org.freedesktop.DBus; member=NameOwnerChanged
 0 string ":1.1"
 1 string ":1.1"
 2 string ""
signal sender=org.freedesktop.DBus -> dest=(null destination) interface=org.freedesktop.DBus; member=NameOwnerChanged
 0 string ":1.2"
 1 string ":1.2"
 2 string ""
signal sender=org.freedesktop.DBus -> dest=(null destination) interface=org.freedesktop.DBus; member=NameOwnerChanged
 0 string "com.redhat.PrintDriverSelection"
 1 string ":1.3"
 2 string ""
signal sender=org.freedesktop.DBus -> dest=(null destination) interface=org.freedesktop.DBus; member=NameOwnerChanged
 0 string ":1.3"
 1 string ":1.3"
 2 string ""
signal sender=org.freedesktop.DBus -> dest=(null destination) interface=org.freedesktop.DBus; member=NameOwnerChanged
 0 string ":1.4"
 1 string ":1.4"
 2 string ""
signal sender=(null sender) -> dest=(null destination) interface=org.freedesktop.DBus.Local; member=Disconnected




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-11-25 11:19:09
Processing time 0.0455 sec