리눅스 인터페이스 설정 리눅스에서 인터페이스만 살리고 설정을 하지 않을 때는 manual 이란 키워드을 이용한다. auto eth0 # iface eth0 inet manual # up ifconfig $IFACE 0.0.0.0 up # up ip link set $IFACE promisc on # down ip link set $IFACE promisc off # down ifconfig $IFACE down iPhone 에서 작성된 글입니다. R&D/OS 2011.02.21
ssh 자동 접속 ssh 에서 비밀번호를 묻지않고 바로 접속하게 하는 방법 - 되는 이유는 ssh는 인증서로 접속이 가능하기 때문이다 가정: - A = 클라이언트 - B = 접속하고하는 ssh 서버 작업: 1) A에서 자신의 ssh 인증서를 생성한다. ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user1/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user1/.ssh/id_rsa. Your publi.. R&D/OS 2011.01.24
현재 Linux 운영체제의 파일 시스템(/proc/mounts) 현재 리눅스 운영체제의 파일 시스템을 알아보기 위한 명령어 /proc/mounts 파일을 읽어보면 된다. 예제) rootfs / rootfs rw 0 0 none /sys sysfs rw,nosuid,nodev,noexec 0 0 none /proc proc rw,nosuid,nodev,noexec 0 0 udev /dev tmpfs rw,relatime 0 0 fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0 /dev/disk/by-uuid/859eabc3-f1ac-4f64-bcc2-55e2209f6b87 / ext3 rw,relatime,errors=remount-ro,data=ordered 0 0 /dev/disk/by-uuid/859eabc3-f.. R&D/OS 2011.01.05
KVM/QEMU에서 가상머신 NIC 번호 eth0, eth1, ... 증가 할 때 KVM/QEMU를 실행하면 부팅할 때마다 nic 번호가 증가하는 문제점이 있다. 이를 때는 가상머신 이미지(리눅스)에서 /etc/udev/rules.d/NN-persistent-net.rules 파일을 삭제하면 eth0로 잡힌다. http://www.macfreek.nl/memory/Logical_Interface_Names Use a specific network interface for kickstartWhen your system has more than one network interface anaconda asks you which one you'd like to use for the kickstart process. This decision can be made at boot time by a.. R&D/OS 2010.11.02
64 bit CPU 체크 하기 64bit CPU에서는 long 타입이 8 bytes 이다. (c.f. 32bit CPU에서는 4 bytes) #if defined(__x86_64__) ... #endif 이렇게 체크해서 64bit에서 처리해야 할 일들을 하면 된다 R&D/OS 2010.09.05
dynamips에서 TCP socket 연결 코드 static ssize_t netio_tcp_send(netio_inet_desc_t *nid,void *pkt,size_t pkt_len) { u_long l = htonl(pkt_len); if (write(nid->fd,&l,sizeof(l)) == -1) return(-1); return(write(nid->fd,pkt,pkt_len)); } static ssize_t netio_tcp_recv(netio_inet_desc_t *nid,void *pkt,size_t max_len) { u_long l; if (read(nid->fd,&l,sizeof(l)) != sizeof(l)) return(-1); if (ntohl(l) > max_len) return(-1); return(read(nid->.. R&D/OS 2010.09.03
sk_buff 분석 skb->pkt_type 값들 /* Packet types */ #define PACKET_HOST 0 /* To us */ #define PACKET_BROADCAST 1 /* To all */ #define PACKET_MULTICAST 2 /* To group */ #define PACKET_OTHERHOST 3 /* To someone else */ #define PACKET_OUTGOING 4 /* Outgoing of any type */ /* These ones are invisible by user level */ #define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */ #define PACKET_FASTROUTE 6 /* Fastrouted f.. R&D/OS 2010.08.31
Live USB (save data) https://help.ubuntu.com/community/LiveCD/Persistence http://www.howtogeek.com/howto/14912/create-a-persistent-bootable-ubuntu-usb-flash-drive/ R&D/OS 2010.08.30
리눅스 디바이스 드라이버 제작 (2/5) 개요 ~ 이번 장에서는 리눅스 디바이스의 기본 동작을 위한 함수에 대해서 이해한다. ~ 디바이스 드라이버를 초기화, 제거하는 함수에 대해서 이해한다. Event 유저 함수 커널 함수 Load module insmod module_init() Open device Close device Read device Write device Remove module rmmod module_exit() 디바이스의 동작 ~ 디바이스는 유저모드의 함수가 불려지면 해당 함수에 해당하는 커널모드의 함수가 동작함으로써 실제 하드웨어를 제어하게 된다. ~ 예를 들어 디바이스 드라이버를 처음 로드하는 유저모드에서 insmod라는 명령어를 입력한다. 이는 해당 디바이스 드라이버에서 module_init() 함수를 콜하게 되고 디바이.. R&D/OS 2010.06.06