'UUID'에 해당되는 글 2건

  1. 2010.10.04 CLSID - CLaSs ID 2
  2. 2010.09.18 grub.cfg 설정 + VFS 패닉 4
Microsoft/Visual Studio2010. 10. 4. 13:09
간간히 보이는 CLSID가 무엇인지 찾아보니, 일단 ID 의 일종이고 128bit 값을 지닌다.
이 값은 MS windows에서는 Visual Studio의 유틸리티나 특정함수를 통해 생성이 가능하며
리눅스에서는 uuid 관련 함수들로 생성이 가능하다.

CLSID는 클래스 식별자의 약어이고 GUID는 고유한 전역 식별자의 약어입니다. 두 약어는 모두 컴퓨터와 네트워크에서 고유 식별자로 사용될 수 있도록 통계적으로 중복 가능성이 적은 128비트 정수를 참조합니다. 일반적으로 이 식별자는 16멤버의 바이트 배열이나 16진수의 특별한 형식이 지정된 문자열로 표현됩니다. 여기서 a-f 또는 A-F 문자는 10-15의 10진수를 나타냅니다. 이 문자열 표현은 32개의 연속적인 16진수하이픈으로 구분된 8개, 4개, 4개, 4개, 12개의 16진수 그룹으로 구성됩니다. 하이픈으로 구분된 문자열 표현은 선택적으로 괄호나 중괄호({})로 묶을 수 있습니다.

[링크 : http://msdn.microsoft.com/ko-kr/library/microsoft.aspnet.snapin.clsid%28VS.80%29.aspx]

...\Microsoft Visual Studio\Common\Tools\GUIDGEN.EXE
If you need to generate GUID's at runtime, you can use UUIDCreate().
[링크 : http://www.codeguru.com/forum/archive/index.php/t-92976.html]

RPC_STATUS RPC_ENTRY UuidCreate(
    UUID __RPC_FAR *Uuid
);

[링크 : http://msdn.microsoft.com/en-us/library/aa379205%28VS.85%29.aspx]

---

#include <uuid/uuid.h>

void uuid_generate(uuid_t out);
void uuid_generate_random(uuid_t out);
void uuid_generate_time(uuid_t out);

The UUID is 16 bytes (128 bits) long, which gives approximately 3.4x10^38 unique values (there are approximately 10^80 elemntary particles in the universe according to Carl Sagan's Cosmos). The new UUID can reasonably be considered unique among all UUIDs created on the local system, and among UUIDs created on other systems in the past and in the future.

[링크 : http://linux.die.net/man/3/uuid]
    [링크 : http://linux.die.net/man/3/uuid_generate]
[링크 : ]
[링크 : ]
[링크 : ]
[링크 : ]
[링크 : ]

Posted by 구차니
Linux/Ubuntu2010. 9. 18. 11:24
저번에 yaffs2 넣는다고 컴파일 했다가 시스템 날려먹고
겨우겨우 grub 메뉴로 들어가 복구는 했는데.. 이유를 오늘에서야 찾아보게 되었다.
(아.. 직딩의 한이란 ㅠ.ㅠ)

Shift 누르고 GRUB2 메뉴로 들어가서 기존의 커널로 부팅!
아마 update-grub시 1번 메뉴(=기본 선택 부팅)은 시간을 비교해서 최신의 것으로 바뀌는 것으로 추측된다.

안전모드로 부팅해서 죽을때의 메시지.
0.618952 초에 나온 이후의 메시지가 관건이다. sda1 응? "root=" boot option?

그래서 다른 부팅메시지와 비교를 해봤더니
커널 설정 부분의 root= 뒤에 UUID가 들어가냐, 아니면 device 이름이 들어가냐의 차이로 부팅이 안된게 아닐까 추측이 된다.
그리고, initrd가 빠져있었는데 음.. 귀찮은데 다른 버전의 것을 그냥 써줘도 되려나?
menuentry 'Ubuntu, 그리고 Linux 2.6.32.15+drm33.5' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod ext2
        set root='(hd0,1)'
        search --no-floppy --fs-uuid --set 1e3d003c-6547-40c8-8f7f-32c0156b7ac8
        linux   /boot/vmlinuz-2.6.32.15+drm33.5 root=/dev/sda1 ro   quiet splash
}
}
menuentry 'Ubuntu, 그리고 Linux 2.6.32-24-generic' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod ext2
        set root='(hd0,1)'
        search --no-floppy --fs-uuid --set 1e3d003c-6547-40c8-8f7f-32c0156b7ac8
        linux   /boot/vmlinuz-2.6.32-24-generic root=UUID=1e3d003c-6547-40c8-8f7f-32c0156b7ac8 ro   quiet splash
        initrd  /boot/initrd.img-2.6.32-24-generic


UUID는 전세계적으로 유일한 확인자 라는 의미라고 한다.
 Universally unique identifier
[링크 : http://en.wikipedia.org/wiki/Universally_unique_identifier]

귀찮아서 initrd 를 2.6.32.24 걸로 끌어다 썻더니 부팅은 시도하지만
커널과 관련된 파일들이 없어서 부팅이 진행되지는 않는다.

그래서 검색을 해보니, make modules_install 을 해주거나 depmod 를 해주면 되는 것으로 추측된다.
cd linux-2.6.30/drivers/gpu/drm/i915/
patch i915_drv.c /tmp/patch # make any modification you need here
make -C /usr/src/linux-headers-`uname -r` M=`pwd` modules
sudo make -C /usr/src/linux-headers-`uname -r` M=`pwd` modules_install
sudo depmod -a

[링크 : https://wiki.ubuntu.com/KernelCustomBuild]
[링크 : http://linux.die.net/man/8/depmod]

$ make modules_install
  ...
  INSTALL /lib/firmware/yam/9600.bin
  DEPMOD  2.6.32.15+drm33.5


여전히 initramfs 에서 못넘어 간다. 이래저래 initrd.img를 생성해야 할듯 하다.

머 생성해도 달라지는건 별로 없군 ㄱ- busybox 에서 못 넘어 간다 (안해!!!! ㅆㅂ)


다른것들 보다는.. 도대체 왜
 FATAL: Could not load /lib/modules/... : No such file or directory
라는 에러가 발생을 하는지 모르겠다.


---
/dev/sda1 대신 /dev/hda1을 바꾸면 될까 했는데.. 역시나 안되고 -_-
(sda1은 SATA 하드 hda1은 IDE용 하드의 식별자이다)

혹시나 해서 initrd의 내용을 열어보니
conf/conf.d/resume 파일의 내용중 UUID의 값이 /boot/grub/grub.cfg 의 내용과 다르게 들어있었다.
그리고 이 내용은
/etc/initramfs-tools/conf.d/resume에 들어있던 내용이고
mkinitramfs 에 의해 이 내용이 들어간 것으로 보인다.

Extracting initrd image
Initrd image is just cpio-gzip archive. So to extract it:

$ mkdir initrd
$ cd initrd
$ gzip -dc /boot/initrd-2.6.16-026test014.4-smp.cpio | cpio

[링크 : http://wiki.openvz.org/Modifying_initrd_image]

바꾸어서 해보니 안되는건 차이가 없다.
그래서 위의 방법대로 되는 버전의 initrd 와 내가 만든 initrd를 비교해보니
initrd 내부의 /lib/modules/ 에 modules.dep 파일이 빠져있었다 ㄱ-
미네랄!



2010.09.19
문서를 찾아봐도 mkinitramfs 라는 녀석이 끝판왕인데
나의 경우에는 우분투에서 받은 소스의 설치 경로가 달라서인지 제대로 된 initrd.img가 생성되지 않았다.

아무튼 이러한 경로를 참조해서 생성하도록 [version] 값을 넣어주어야 한다.
(-o 옵션 뒤의 값은 생성할 파일의 이름이고, 그 뒤의 이름은 /lib/modules에 존재하는 디렉토리의 이름이다)
 $ ls -al /lib/modules/[version]
 $ mkinitramfs -o initrd.img-[version] [version]


Posted by 구차니