2013년 7월 31일 수요일

pogoplug mobile 대용량 hard 에 Archlinux 설치 하기

pogoplug 에 대용량 hdd 이용해 Archlinux 설치 하였음.
기본적으로 3TB 정도 되는 대용량이면 파티션 테이블을 GPT 로 구성되느데..
문제는 pogoplug 의 부트로더인 uboot 에서 GPT 를 인식 하지 못 하는듯...
다행히 GPT 는 MBR 영역은 비워 두므로 gptsync 를 이용해 파티션 정보를 MBR 에 적어 줄 수 있음.
이렇게 되면 MBR 만 인식 하는 시스템에서는 MBR 파티션이 있는 하드로 인식 될거고, GPT 를 인식 하는 시스템에서는 GPT 파티션이 온전히 인식 됨.
이때 MBR 에서 인식 할 수 없는 2TB 이상 파티션은 MBR 에는 기록 되지 않음.
그러므로 MBR 로 인식 되는 파티션에다가 Archlinux 를 설치 해야 함.
(정확히는 pogoplug series4 용 Archlinux 의 kernel image 인 uImage 가 위치할 장소만 해당 됨. 하지만 pogoplug series4 용 Archlinux 는 root file system 과 kernel image 를 동일 파티션에다가 때려 박아놨기 때문에 결국 그게 그거임..)

파티션 작업은 우분투 live CD 로 부팅 해서 작업 하였음.
원래 통으로 ntfs 로 쓰던 하드인데 원래의 ntfs partition 은 크기를 줄이고 ext3 partition 추가후 자료 옮기고 이전 ntfs partition 은 지우고... 등등 작업으로 파티션 구조가 복잡해 진 상태임.
파티션 1 : 없음... (-_-)
파티션 2 : linux 는 여기 설치 할 거임. (ext3)
파티션 3 : data 영역으로 쓸 거임.      (ext3)
파티션 4 : swap 영역으로 쓸 거임.      (swap)

1. 파티션 준비
일단 GPT 의 상태를 보면,
# parted /dev/sda unit s print  (GPT 테이블)
Current GPT partition table:
 #      Start LBA      End LBA  Type
Number  Start      End          Size         File system     Name  Flags
 2      264192s    33818623s    33554432s    ext3
 4      33818624s  38012927s    4194304s     linux-swap(v1)
 3      38012928s  5860532223s  5822519296s  ext3            Ba
 ==> GPT 를 인식하는 kernel 입장에서 봤을 때 2번째 partition 이 linux boot files system 이 위치할 장소 임.

# gptsync /dev/sda
실행 해서 MBR 테이블 생성 후 MBR 의 상태를 보면,

# fdisk -l /dev/sdg   (MBR 테이블)
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      264191      132095+  ee  GPT
Partition 1 does not start on physical sector boundary.
/dev/sdb2   *      264192    33818623    16777216   83  Linux
/dev/sdb3        33818624    38012927     2097152   82  Linux swap / Solaris
==> MBR 만 인식 하는 uboot 입장에서 봤을 때 2번째 partition 이 uImage 가 위치 한 장소임.

2. pogoplug series4 용 Archlinux 설치 (pogoplug mobile 도 동일하게 사용 가능)
http://archlinuxarm.org/platforms/armv5/pogoplug-series-4
에 있는 installation 대로 설치 하되 ppv4-install.sh 에서 아래 부분 수정.
usb 0:1usb 0:2 으로 수정
ide 0:1ide 0:2 으로 수정
==> uboot 에서 uImage 위치 장소는 0번 device 의 1번 파티션 에서 2번 파티션으로 변경.
/dev/sda1 /dev/sda2 으로 수정
==> kernel 의 boot file system 은 1번 파티션에서 2번 파티션으로 변경.
!! 주의 : 하드 디스크의 구성 상황에 따라 잘 맞춰 줘야 함
          결국 pogoplug 의 firmware 를 변경 하는 risky 한 작업은 순전히
 ppv4-install.sh 를 실행 할 때 발 생 하는 거고 이렇게 uboot script 수정 부분은
 잘못 하면 벽돌이 될 수 있지...
 다만 alarm_revert 부분만 살아 있게 잘 수정 하면 설령 실패 하더라도
 usb (fat32 포맷에 revert 디렉토리) 꼽는 걸로 복원이 가능 함.



이후 Archlinux 설정들...


  • 사용자 계정 추가
useradd -d /home/[name] -s /bin/bash -m -k /etc/skel [name]
passwd [name]

  • 시간
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

  • sudo 권한
pacman -Sy sudo
visudo 실행
# %sudo ALL=(ALL) ALL
부분의 주석 처리 해제
groupadd sudo
vi /etc/group
sudo:x:1001:[name]

  • samba
pacman -Sy smbd nmbd
vi /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = pogo
netbios name = pogo
security = user
null passwords = yes
map to guest = bad user
log file = /var/log/samba/%m.log
max log size = 50
dns proxy = no
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072 SO_KEEPALIVE
disable netbios = yes
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
[homes]
browseable = yes
read only = no
valid users = %S

기존에 samba user 추가 하던 smbpasswd 가 deprecated 된것 같음.
대신 아래 명령어로 samba user 추가.
pbdedit -a -u [name]

systemctl start smbd nmbd
systemctl enable smbd nmbd
이제 pogoplug 의 주소로 접근해 보면 [name] 디렉토리 보이고 접근 될 거임.

  • ftp
pacman -Sy vsftpd
vi /etc/vsftpd
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
passwd_chroot_enable=YES
vi /etc/passwd
[name]:x:1000:1000::/home/./[name]:/bin/bash
// 저기 . 찍힌 위치가 해당 id 로 ftp 접속 했을 때 root directory 가 됨.
systemctl start vsftpd
systemctl enable vsftpd

  • hdd 절전
pacman -Sy hd-idle
vi /etc/conf.d/hd-idle
START_HD_IDLE=true
HD_IDLE_OPTS="-a sda -i 300 -l /var/log/hd-idle.log"
systemctl start hd-idle
systemctl enable hd-idle

  • torrent
pacman -Sy transmission-cli
systemctl start transmission
systemctl stop transmission
vi /var/lib/transmission/.config/transmission-daemon/settings.json
"download-dir": "/mnt/data/torrent",
"incomplete-dir": "/mnt/data/torrent",
"rpc-whitelist": "127.0.0.1, 192.168.*.*",
"rpc-whitelist-enabled": true,
"watch-dir": "/mnt/data/torrent",
"watch-dir-enabled": true
systemctl start transmission
systemctl enable transmission
==> 이제 /mnt/data/torrent 에 torrent 파일 넣으면 자동으로 받아 질 거임.

webui 접속
1) browser 에서 "http://pogoplug's ip:9091/transmission" 으로 접속
2) 409: conflict 에러 하면 나올 거임.
화면 최하단에 X-Transmission-Session-Id: SwnfFIUTEE12DLmAKwEo7qjaX92Je67bxg1akevokYdfI14H 같은게 나옴.
3) 이제 "http://pogoplug's ip:9091/SwnfFIUTEE12DLmAKwEo7qjaX92Je67bxg1akevokYdfI14H" 로 접속하면
web ui 가 나옴.

  • pogoplug 원 서비스 이용 하기
참고 : http://archlinuxarm.org/forum/viewtopic.php?t=3343
1) pacman -U http://dl.dropbox.com/u/15043728/pogoplug-3.3.0-1-arm.pkg.tar.xz
2) vi /etc/pogoplug.conf
vfsdir0=plugdata,/mnt/data
3) systemctl start pogoplug.service
4) http://my.pogoplug.com --> 활성화
5) cp /usr/local/cloudengines/bin/hbplug.conf /etc/pogoplug.conf
6) cat /etc/pogoplug.conf 해서 마지막 줄에 svcid 가 있는 것 확인 해야 함.

  • static ip 설정
vi /etc/network.d/wired-eth0
CONNECTION='ethernet'
DESCRIPTION='A basic static ethernet connection using iproute'
INTERFACE='eth0'
IP='static'
ADDR='192.168.219.11'
NETMASK='255.255.255.0'
GATEWAY='192.168.219.1'
DNS=('1.214.68.2 61.41.153.2')

  • fstab
vi /etc/fstab
사용 하드의 3번 파티션이 결국 주 data 저장 장소가 됨.
이것을 부팅 할 때 mount 시키기 위한 거임.
추가한 사용자 [name] 의 home directory 에도 동일 하게 mount 시키기 위해 아래와 같이 함.
swap 파티션 역시 부팅 때 자동으로 swap 장소로 사용 되게 하기위해 역시 fstab 에 추가 함.
# <file system> <dir>              <type>       <options>       <dump>  <pass>
/dev/sda4       none               swap         defaults        0       0
/dev/sda3       /mnt/data          ext3         defaults        0       2
/mnt/data       /home/[name]/data  none         bind

  • S.M.A.R.T
참고 : https://wiki.archlinux.org/index.php/S.M.A.R.T.
pacman -Sy smartmontools
sudo smartctl -a /dev/sda

  • 기타 짜지부리 한 것들...
vi .bashrc
alias ls='ls --color=auto'
alias ll='ls -al'
alias vi='vim'
PATH=$PATH:$HOME/bin

pacman -Sy vim
pacman -Sy htop
pacman -Sy mc
pacman -Sy gcc
pacman -Sy make

2012년 5월 13일 일요일

spin lock

  1. spin lock 의 정의 보면 SMP 에서만 사용함을 알 수 있다.
    • 구현에 있어 memory 관련 내용은 memory-barriers.txt 참조.
  2. 결국 이것은 SMP 에서 새로이 나타난 동기화를 해결 하기 위한 solution 이라는 관점으로 접근 하는것이 이해하기 좋다. 간단히 mutex 를 생각해 보면...

  • mutex
  1. semaphore 의 특수한 경우이지만 따로 보통 분리해서 다룬다.
    • 효율성 때문 mutex-design.txt 참조
  2. Rule
    • only one task can hold the mutex at a time
    • only the owner can unlock the mutex
    • multiple unlocks are not permitted
    • recursive locking is not permitted
    • a mutex object must be initialized via the API
    • a mutex object must not be initialized via memset or copying
    • task may not exit with mutex held
    • memory areas where held locks reside must not be freed
    • held mutexes must not be reinitialized
    • mutexes may not be used in hardware or software interrupt contexts such as tasklets and timers
  3. APIs
    •  DEFINE_MUTEX(name);
    •  mutex_init(mutex);
    •  void mutex_lock(struct mutex *lock);
    •  int  mutex_lock_interruptible(struct mutex *lock);
    •  int  mutex_trylock(struct mutex *lock);
    •  void mutex_unlock(struct mutex *lock);
    •  int  mutex_is_locked(struct mutex *lock);
    •  void mutex_lock_nested(struct mutex *lock, unsigned int subclass);
    •  int  mutex_lock_interruptible_nested(struct mutex *lock, unsigned int subclass);
    •  int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock);

UP 에서 mutex 를 구현 한다는 것은 결국 atomic 하게 exchange 를 할 수 있으면 되는 거다.
보통 관련한 instruction 이 있지.
SMP 환경이라면, 아무리 atomic exchange instruction 이 있어도 다른 코어 가 동시에 접근 하는 것을 막을 수는 없지.
즉, mutex 의 구현안에 spin lock 을 이용한 SMP 보호 구역이 있어야 겠지.
물론 실제로도 그러하다.

spinlock 사용 되는 경우 보면...

code sample 1>

static DEFINE_SPINLOCK(xxx_lock);

unsigned long flags;

spin_lock_irqsave(&xxx_lock, flags);
... critical section here ..
spin_unlock_irqrestore(&xxx_lock, flags);

언제나 안전하다. irq 를 막기 때문에 아무도 침범 불가.

code sample 2>


   rwlock_t xxx_lock = __RW_LOCK_UNLOCKED(xxx_lock);


unsigned long flags;

read_lock_irqsave(&xxx_lock, flags);
.. critical section that only reads the info ...
read_unlock_irqrestore(&xxx_lock, flags);

write_lock_irqsave(&xxx_lock, flags);
.. read and write exclusive access to the info ...
write_unlock_irqrestore(&xxx_lock, flags);
이것은 RCU 로 대체 되었고, 제거 중이다.
- 참조 rcu.txt, listRCU.txt

code sample 3>

spin_lock(&lock);
...
spin_unlock(&lock)

irq 안막았기 때문에 아래와 같은 deadlock 가능.
spin_lock(&lock);
...
<- interrupt comes in:
spin_lock(&lock);

같은 걸 동일 cpu 에서 lock 해 버리면 deadlock 이 된다.



spinlock 의 사용시 irq 도 막을지 말지는 보호하려는 critical section 이 ISR 에서 참조 하는지 유무에 따라 결정 하면 된다.



2011년 12월 21일 수요일

mac CD image 추출 하기 (iso 만들기)


디스크 유틸 -> 새로운 이미지 -> CD/DVD 마스터 선택 하면 .cbr 파일이 생성 됨.
터미널 에서 
$ hdiutil makehybrid -iso -joliet -o Master.iso Master.cdr
근데 이거 옵션 주고 하는 것이 쫌 껄끄러움..



또는
그냥 터미널에서 dd 로 아래와 같이 뜨면 됨.
$ drutil status
 Vendor   Product           Rev 
 TSSTcorp CDDVDW TS-L633C   BU00

           Type: CD-ROM               Name: /dev/disk1
       Sessions: 1                  Tracks: 1 
   Overwritable:   00:00:00         blocks:        0 /   0.00MB /   0.00MiB
     Space Free:   00:00:00         blocks:        0 /   0.00MB /   0.00MiB
     Space Used:   73:22:27         blocks:   330177 / 676.20MB / 644.88MiB
    Writability: 

$ diskutil unmountDisk disk1
$ dd if=/dev/disk1 of=MyCD.iso
$ diskutil mountDisk disk1


덤프 뜨는 것이니 가장 확실 할 듯하고,
여러장 추출 할 거면 이렇게 동작 하는 쉘스크립트 하나 짜서 쓰면 되겠지.

2010년 12월 15일 수요일

Nujabes









Nujabes
본명 세바 준 (Seba Jun) 을 꺼꾸로한 이름으로 활동.
2010년 2월 36세 젊은 나이에 교통사고로 요절.

mac 네트워크 공유폴더에 .DS_Store 파일 남기지 않기

mac 내에서 finder 가 자동으로 .DS_Store 파일을 폴더 마다 남겨 둔다.
이 기능은 disable 할 수 없다.
그러나 네트워크 폴더에서는 이것을 막을 수 있는 방법을 제공한다.

터미널에서 아래와 같이 명령 실행 하고,

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

재시작 하면 됨.

2010년 12월 9일 목요일

정치성향 자가진단

정치성향 자가진단

헐.. 스스로 생각하던 정치성향과 똑같이 진단되어서 깜짝놀람.



블런델-고스초크 모델


보수주의적
(conservative)
신자유주의적인 것으로 시장의 자유에 찬성하지만 가족, 마약, 낙태와 같은 쟁점에서는 강력한 국가 통제를 원함
자유지상주의적
(libertarians)
모든 방면에서 개인주의와 낮은 수준의 국가 관여를 원함
사민주의적
(socialists : 진보.개혁주의적)
보수주의자들과 반대로 경제 생활에서 더 많은 국가 관여를 바라고 시장을 불신하고 있으나 도덕적 쟁점에 관한 한 정부관여에 회의적
권위주의적
(authoritarian : 국가주의적)
경제적인 것과 도덕적인 것 양자를 포함하여 모든 영역에서 정부가 강력한 통제를 유지하기를 희망함

2010년 12월 8일 수요일

mac 단축키 정리

Mac OS X 10.0, Mac OS X 10.3, Mac OS X 10.2, Mac OS X 10.1, Mac OS X 10.4, Mac OS X 10.6, Mac OS X 10.5
키보드 단축키 또는 키 조합을 사용하려면 문자 키와 조합 키를 함께 누릅니다. 예를 들어 command 키( 기호가 표시된 키)와 "C" 키를 동시에 누르면 현재 선택한 항목(예: 텍스트, 그래픽 등)이 무엇이든 간에 해당 항목을 클립보드로 복사합니다. 이러한 조합 키를 command-C 키 조합 또는 키보드 단축키라고 합니다.
조합 키는 여러 키 조합의 일부입니다. 조합 키는 Mac OS X에서 다른 키누름 또는 마우스 클릭을 해석하는 방식을 변경합니다. 조합 키에는 command, control, option, shift, caps lock 및 fn 키(키보드에 있는 경우)가 있습니다.
다음은 Mac OS X 메뉴에서 볼 수 있는 조합 키 기호입니다.
command 키 아이콘(command 키) - 일부 Apple 키보드의 경우 이 키에도 Apple 로고(Apple 로고)가 있습니다.
control 키 아이콘(control 키)
option 또는 alt 키 아이콘(option 키) - 이 키에도 "alt"가 이 표시되어 있습니다.
shift 아이콘(shift 키)
caps lock 아이콘(caps lock) - caps lock 켜기 또는 끄기 간에 토글
fn(기능 키) 
시동 키보드 단축키
원하는 기능이 작동하거나 나타날 때까지 키 또는 키 조합을 누릅니다. 예를 들어 시동 관리자가 나타날 때까지 option 키를 누르거나 "안전한 시동"이 나타날 때까지 shift 키를 누릅니다. 정보: 시동 기능이 작동하지 않거나 타사 키보드를 사용하는 경우 Apple 키보드를 연결한 다음 다시 시도하십시오.
option부팅 가능한 모든 볼륨 표시(시동 관리자)
shift안전한 시동 수행(안전 모드에서 시동)
C부팅 가능한 디스크에서 시동(DVD, CD)
TFireWire 대상 디스크 모드에서 시동
NNetBoot 서버에서 시동
XMac OS X 강제 시동(Mac OS X 이외의 다른 시동 볼륨이 있는 경우)
command-V상세 모드에서 시동
command-S단일 사용자 모드에서 시동

Finder 키보드 단축키
command-A전면에 있는 Finder 윈도우(윈도우가 열려 있지 않은 경우 데스크탑)에서 모든 항목 선택
option-command-A모든 항목을 선택 해제
shift-command-A응용 프로그램 폴더 열기
command-C선택한 항목/텍스트 클립보드로 복사
shift-command-C컴퓨터 윈도우 열기
command-D선택한 항목 복제
shift-command-D데스크탑 폴더 열기
command-E추출
command-F일치하는 모든 Spotlight 속성 찾기
shift-command-FSpotlight 파일 이름 일치 항목 찾기
option-command-F이미 열려 있는 Spotlight 윈도우에서 검색 필드로 이동
shift-command-G폴더로 이동
shift-command-H현재 로그인된 사용자 계정 홈 폴더 열기
command-I정보 입수
option-command-I속성 보기
control-command-I요약 정보 입수
shift-command-IiDisk 열기
command-J보기 옵션
command-K서버에 연결
shift-command-K네트워크 윈도우 열기
command-L선택한 항목의 가상본 만들기
command-M윈도우 축소
option-command-M모든 윈도우 축소
command-N새로운 Finder 윈도우
shift-command-N새로운 폴더
option-command-N새로운 스마트 폴더
command-O선택한 항목 열기
shift-command-Q로그아웃
option-shift-command-Q즉시 로그아웃
command-R가상본의 원본 보기
command-T사이드바에 추가
shift-command-T즐겨찾기에 추가
option-command-TFinder 윈도우에서 도구 막대 가리기/도구 막대 보기
shift-command-UUtilities 폴더 열기
command-V붙이기
command-W윈도우 닫기
option-command-W모든 윈도우 닫기
command-X자르기
option-command-Y슬라이드쇼(Mac OS X 10.5 이상)
command-Z복귀/취소
command-1아이콘으로 보기
command-2목록으로 보기
command-3열로 보기
command-4Cover Flow로 보기(Mac OS X 10.5 이상)
command-,(command 및 쉼표 키)Finder 환경설정 열기
command-`(억음 악센트 키-- 미국 영어 키보드 레이아웃에서 tab 키 위에 있음)열려 있는 Finder 윈도우 순환
command-shift-?Mac 도움말 열기
option-shift-command-esc(3초간 누름) - Mac OS X v10.5, v10.6 이상만가장 앞에 있는 응용 프로그램 강제 종료
command-[뒤로
command-]앞으로
command-위쪽 화살표포함된 폴더 열기
control-command-위쪽 화살표포함된 폴더를 새 윈도우에서 열기
command-아래쪽 화살표선택된 항목 열기
command-tab응용 프로그램 전환--앞으로 반복
shift-command-tab응용 프로그램 전환--뒤로 반복
command-delete휴지통으로 이동
shift-command-delete휴지통 비우기
option-shift-command-delete확인 대화상자를 표시하지 않고 휴지통 비우기
스페이스 바(또는 command-Y)훑어보기(Mac OS X 10.5 이상)
드래그 중 command 키다른 볼륨/위치로 드래그한 항목 이동(키를 누르고 있는 동안 포인터 아이콘이 변경됨--이 문서 참조)
드래그 중 option 키드래그한 항목 복사(키를 누르고 있는 동안 포인터 아이콘이 변경됨--이 문서 참조)
드래그 중 option-command 키 조합드래그한 항목의 가상본 만들기(키를 누르고 있는 동안 포인터 아이콘이 변경됨--이 문서 참조)

응용 프로그램 및 다른 Mac OS X 키보드 명령 
참고: 일부 응용 프로그램에서는 아래 응용 프로그램 키 조합의 일부를 지원하지 않을 수 있습니다.
command-스페이스 바Spotlight 검색 필드 보기 또는 가리기(여러 언어가 설치된 경우 활성화된 스크립트 시스템 간에 회전할 수 있음)
control-A현재 줄/단락의 처음으로 이동
control-B한 문자 뒤로 이동
control-D커서 앞에 있는 문자 삭제
control-E현재 줄/단락의 끝으로 이동
control-F한 문자 앞으로 이동
control-H커서 뒤에 있는 문자 삭제
control-K커서 앞에 있는 문자부터 줄/문단 끝까지 삭제
control-L커서/선택 영역을 눈에 보이는 영역의 중앙에 위치
control-N한 줄 아래로 이동
control-O커서 뒤로 새 줄 삽입
control-P한 줄 위로 이동
control-T커서 뒤에 있는 문자와 커서 앞에 있는 문자를 조변경
control-V한 페이지 아래로 이동
option-command-스페이스 바Spotlight 검색 결과 윈도우 표시(여러 언어가 설치된 경우 키보드 레이아웃과 스크립트 내의 입력기 간에 회전할 수 있음)
command-tab열려 있는 응용 프로그램 목록에서 다음으로 최근에 사용된 응용 프로그램으로 순방향 이동
shift-command-tab열려 있는 응용 프로그램 목록에서 역방향 이동(최근에 사용된 순서대로 정렬)
shift-tab컨트롤 간에 역방향으로 이동
control-tab대화상자의 다음 컨트롤 그룹으로 또는 tab이 다음 셀로 이동할 때에는 다음 테이블로 초점 이동
shift-control-tab이전 컨트롤 그룹으로 초점 이동
command-escFront Row 열기(설치된 경우)
option-eject보조 광학 미디어 드라이브에서 추출(설치된 경우)
control-eject종료 대화상자 표시
option-command-eject컴퓨터를 잠자기 상태로 전환
control-command-eject열려 있는 도큐멘트에 대한 변경 사항을 저장할 수 있는 옵션 표시 후 모든 응용 프로그램을 종료한 다음 컴퓨터 재시동
control option-command-eject열려 있는 도큐멘트에 대한 변경 사항을 저장할 수 있는 옵션 표시 후 모든 응용 프로그램을 종료한 다음 컴퓨터 종료
fn-delete앞으로 삭제(Mac 휴대용 컴퓨터의 내장 키보드에 있음)
control-F1전체 키보드 접근 켜기 또는 끄기 간에 토글
Control-F2메뉴 막대로 초점 이동
Control-F3Dock으로 초점 이동
Control-F4활성화된(또는 다음) 윈도우로 초점 이동
shift-control-F4이전에 활성화된 윈도우로 초점 이동
control-F5도구 막대로 초점 이동
control-F6첫 번째(또는 다음) 패널로 초점 이동
shift-control-F6이전 패널로 초점 이동
control-F7윈도우 및 대화상자에서 현재 키보드 액세스 모드를 일시적으로 무시
F9열려 있는 모든 윈도우 타일링 또는 타일링 취소
F10현재 활성 응용 프로그램에 열려 있는 모든 윈도우 타일링 또는 타일링 취소
F11열려 있는 모든 윈도우 가리기 또는 표시
F12Dashboard 가리기 또는 표시
command-`전면에 있는 응용 프로그램에서 다음에 열려 있는 윈도우 활성화
shift-command-`전면에 있는 응용 프로그램에서 이전에 열린 윈도우 활성화
option-command-`윈도우 상자로 초점 이동
command- -(빼기)선택한 항목의 크기 축소
command-{선택 항목 왼쪽 정렬
command-}선택 항목 오른쪽 정렬
command-|선택 항목 중앙 정렬
command-:영문 철자 검사 윈도우 표시
command-;도큐멘트에서 철자가 틀린 단어 찾기
command-,전면에 있는 응용 프로그램의 환경설정 윈도우 열기(해당 응용 프로그램에서 키보드 단축키를 지원하는 경우)
option-control-command-,화면 대비 감소
option-control-command-.화면 대비 증가
command-?도움말 보기에 응용 프로그램의 도움말 열기
option-command-/서체 부드럽게 처리 켜기 또는 크기
shift-command-=선택한 항목의 크기 확대
shift-command-3화면을 파일로 캡처
shift-control-command-3화면을 클립보드로 캡처
shift-command-4선택 항목을 파일로 캡처
shift-control-command-4선택 항목을 클립보드로 캡처
command-A도큐멘트 또는 윈도우의 모든 항목이나 텍스트 필드의 모든 문자 선택
command-B선택한 텍스트를 굵게 표시하거나 텍스트를 굵게 표시 켜기 또는 끄기 간에 토글
command-C선택한 데이터를 클립보드로 복사
shift-command-C색상 윈도우 표시
option-command-C선택한 텍스트의 스타일 복사
control-command-C선택 항목의 형식 설정을 복사하여 클립보드에 저장
option-command-DDock 보기 또는 가리기
command-control-D사전 응용 프로그램에 선택한 단어의 정의 표시
command-E찾기에 선택 항목 사용
command-F찾기 윈도우 열기
option-command-F검색 필드 조절로 이동
command-G선택 항목의 다음 내용 찾기
shift-command-G선택 항목의 이전 내용 찾기
command-H현재 실행 중인 응용 프로그램의 윈도우 가리기
option-command-H실행 중인 다른 모든 응용 프로그램의 윈도우 가리기
command-I선택한 텍스트를 이탤릭체로 표시하거나 이탤릭체 텍스트 켜기 또는 끄기 간에 토글
option-command-I속성 윈도우 표시
command-J선택 항목으로 스크롤
command-M활성 윈도우를 Dock으로 최소화
option-command-M활성 응용 프로그램의 모든 윈도우를 Dock로 최소화
command-N전면에 있는 응용 프로그램에 새 도큐멘트 생성
command-O전면에 있는 응용 프로그램에서 열려는 도큐멘트를 선택할 수 있는 대화상자 표시
command-P프린트 대화상자 표시
shift-command-P프린트 매개변수를 지정할 수 있는 대화상자 표시(페이지 설정)
command-Q전면에 있는 응용 프로그램 종료
command-S활성 도큐멘트 저장
shift-command-S별도 저장 대화상자 표시
command-T서체 윈도우 표시
option-command-T도구 막대 보기 또는 가리기
command-U선택한 텍스트에 밑줄을 긋거나 밑줄 긋기 켜기 또는 끄기
command-V삽입 지점에 클립보드 내용 붙이기
option-command-V한 대상체의 스타일을 선택한 대상체에 적용(스타일 붙이기)
option-shift-command-V주변 텍스트의 스타일을 삽입한 대상체에 적용(스타일 붙이기 및 일치)
control-command-V선택한 대상체에 형식 설정 적용(눈금자 붙이기 명령)
command-W전면 윈도우 닫기
shift-command-W파일 및 해당 파일과 관련된 윈도우 닫기
option-command-W응용 프로그램을 종료하지 않고 해당 응용 프로그램에서 모든 윈도우 닫기
command-X선택 항목을 제거하여 클립보드에 저장
command-Z이전 명령 복귀(일부 응용 프로그램에서는 다양한 복귀 기능 허용)
shift-command-Z이전 명령 취소(일부 응용 프로그램에서는 다양한 취소 기능 허용)
control-오른쪽 화살표보기(예: 테이블) 내에서 다른 값 또는 셀로 초점 이동
control-왼쪽 화살표보기(예: 테이블) 내에서 다른 값 또는 셀로 초점 이동
control–아래쪽 화살표보기(예: 테이블) 내에서 다른 값 또는 셀로 초점 이동
control–위쪽 화살표보기(예: 테이블) 내에서 다른 값 또는 셀로 초점 이동
command-오른쪽 화살표텍스트 삽입 지점을 현재 줄 끝으로 이동
command-왼쪽 화살표텍스트 삽입 지점을 현재 줄 처음으로 이동
command-아래쪽 화살표텍스트 삽입 지점을 현재 도큐멘트 끝으로 이동
command-위쪽 화살표텍스트 삽입 지점을 현재 도큐멘트 처음으로 이동
shift-command-오른쪽 화살표
삽입 지점과 현재 행의 끝 부분 사이에서 텍스트 선택(*)
shift-command-왼쪽 화살표삽입 지점과 현재 행의 처음 부분 사이에서 텍스트 선택(*)
shift-오른쪽 화살표한 문자씩 오른쪽으로 텍스트 선택 부분 확장(*)
shift-왼쪽 화살표한 문자씩 왼쪽으로 텍스트 선택 부분 확장(*)
shift-command-위쪽 화살표삽입 지점과 도큐멘트의 처음 부분 사이에서 텍스트 선택(*)
shift-command-아래쪽 화살표삽입 지점과 도큐멘트의 끝 부분 사이에서 텍스트 선택(*)
shift-위쪽 화살표텍스트 선택 부분을 행 위의 동일한 수평 위치에서 가장 가까이 있는 문자 경계로 확장(*)
shift-아래쪽 화살표텍스트 선택 부분을 행 아래의 동일한 수평 위치에서 가장 가까이 있는 문자 경계로 확장(*)
shift-option-오른쪽 화살표텍스트 선택 부분을 현재 단어의 끝 부분으로 확장한 후 다시 누를 수 있는 경우 다음 단어의 끝 부분으로 확장(*)
shift-option-왼쪽 화살표텍스트 선택 부분을 현재 단어의 시작 부분으로 확장한 후 다시 누를 수 있는 경우 다음 단어의 시작 부분으로 확장(*)
shift-option-아래쪽 화살표텍스트 선택 부분을 현재 단락의 끝 부분으로 확장한 후 다시 누를 수 있는 경우 다음 단락의 끝 부분으로 확장(*)
shift-option-위쪽 화살표텍스트 선택 부분을 현재 단락의 시작 부분으로 확장한 후 다시 누를 수 있는 경우 다음 단락의 시작 부분으로 확장(*)
control-스페이스 바현재와 이전 입력 소스 간에 토글
option-control-스페이스 바활성화된 모든 입력 소스 간에 토글
option-command-esc강제 종료
(*) 참고: 텍스트를 선택하지 않으면 삽입 지점에서 확장이 시작됩니다. 드래그하여 텍스트를 선택하면 선택 부분 경계에서 확장이 시작됩니다. 선택 부분의 방향을 반전하면 해당 항목의 선택이 해제됩니다