본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

리눅스: 두 판 사이의 차이

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
편집 요약 없음
→주요 쉘 명령어들: 쉘 명령어 리스트 추가(busybox 기준)
25번째 줄: 25번째 줄:
* poll: 장치와의 통신에서 응답을 감시
* poll: 장치와의 통신에서 응답을 감시
=== 주요 쉘 명령어들 ===
=== 주요 쉘 명령어들 ===
<!-- 추가 예정 -->
 
<!-- 주로 bash를 CUI 쉘로 채택하는 리눅스에서 주로 사용하는 명령어들이 있다. -->
다음은 busybox<ref>임베디드 리눅스를 위해 필수 유닉스 유틸리티들을 단일 실행 파일로 줄인 유틸리티 프로그램</ref>에서 지원하는 기본적인 쉘 명령어들이다. [https://busybox.net/downloads/BusyBox.html 출처]
 
acpid, addgroup, adduser, adjtimex, ar, arp, arping, ash,
awk, basename, beep, blkid, brctl, bunzip2, bzcat, bzip2, cal, cat,
catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,
chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab,
cryptpw, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod,
devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname,
dos2unix, dpkg, du, dumpkmap, dumpleases, echo, ed, egrep, eject,
env, envdir, envuidgid, expand, expr, fakeidentd, false, fbset,
fbsplash, fdflush, fdformat, fdisk, fgrep, find, findfs, flash_lock,
flash_unlock, fold, free, freeramdisk, fsck, fsck.minix, fsync,
ftpd, ftpget, ftpput, fuser, getopt, getty, grep, gunzip, gzip, hd,
hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id,
ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, inotifyd,
insmod, install, ionice, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink,
iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd,
last, length, less, linux32, linux64, linuxrc, ln, loadfont,
loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr,
ls, lsattr, lsmod, lzmacat, lzop, lzopcat, makemime, man, md5sum,
mdev, mesg, microcom, mkdir, mkdosfs, mkfifo, mkfs.minix, mkfs.vfat,
mknod, mkpasswd, mkswap, mktemp, modprobe, more, mount, mountpoint,
mt, mv, nameif, nc, netstat, nice, nmeter, nohup, nslookup, od,
openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress,
pivot_root, pkill, popmaildir, printenv, printf, ps, pscan, pwd,
raidautorun, rdate, rdev, readlink, readprofile, realpath,
reformime, renice, reset, resize, rm, rmdir, rmmod, route, rpm,
rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script,
scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont,
setkeycodes, setlogcons, setsid, setuidgid, sh, sha1sum, sha256sum,
sha512sum, showkey, slattach, sleep, softlimit, sort, split,
start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv,
svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac,
tail, tar, taskset, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd,
time, timeout, top, touch, tr, traceroute, true, tty, ttysize,
udhcpc, udhcpd, udpsvd, umount, uname, uncompress, unexpand, uniq,
unix2dos, unlzma, unlzop, unzip, uptime, usleep, uudecode, uuencode,
vconfig, vi, vlock, volname, watch, watchdog, wc, wget, which, who,
whoami, xargs, yes, zcat, zcip


=== 지원 CPU ===
=== 지원 CPU ===


== 기타 ==
== 기타 ==

2023년 8월 24일 (목) 19:24 판

리눅스(Linux)는 리누스 토르발즈에 의해 1991년부터 개발되는 운영체제의 커널 소프트웨어이다.

이 커널을 사용해 개발된 운영체제를 리눅스 계열 운영체제라고 부르며, GNU에서 개발한 각종 OS 차원 프로그램과 결합한 경우 GNU/Linux라고 한다.

역사

1991년 핀란드 헬싱키 공대에 재학 중이던 리누스 토르발즈가 i386 미닉스 컴퓨터를 이용해 제작했다. 초기부터 오픈 소스 프로젝트로 진행하며 기여자들을 명시하는 등 회사가 아닌 개별 개발자에 친근하게 다가간 결과 기여자가 많아지며 성장세가 빨랐고, 리처드 스톨먼이 주도하는 GNU가 이 프로젝트에 주목하여 Hurd를 사실상 버리고 리눅스에 GNU 유틸리티를 붙이면서 오늘날과 같은 규모가 되었다.[1]

구조

리눅스는 기본적으로 모놀리식 커널로 분류되어 커널 자체에 핵심적인 프로세스 스위칭 및 메모리 관리, 시스템 콜, 장치 통신 기능에 더해 장치(디바이스) 드라이버, 네트워킹 기능 등의 추가 기능까지 모조리 합친 구조이다. GNU는 Hurd라는 프로세스 스위칭 및 메모리 관리, 장치 통신 기능만 구현하는 마이크로커널 구조의 커널 개발이 지연되자 Linux를 대용으로 쓰려다가 이 조합이 아예 본진이 되어버렸다(Hurd는 현재 개발이 명목 상으로만 이어지며 Debian 적용 버전을 제외하고 사실상 프로젝트 중단 상태에 가깝다).

리눅스는 원래 태스크라 하여 프로세스에 해당하는 프로그램 실행 흐름 단위만 있었다가 추후에 스레드에 대응하는 경량 프로세스(Lightweight Process) 개념이 이식되었다. 다만 스레드 개념을 적극적으로 쓰는 Windows와 달리 리눅스는 대부분의 응용 소프트웨어가 프로세스 개념만 쓰는 경우가 많다. 리눅스는 PID 숫자로 이들 프로세스를 구분한다. 프로세스 간 데이터를 주고 받을 때에는 IPC(Inter-Process Communication) 기능으로 시그널(OS 차원의 신호, CPU 연산 과정에서 발생한 에러 등을 소프트웨어에게 보낸다), 파이프(부모-자식 종속이 걸린 프로세스들에서 하는 단방향 데이터 통신), FIFO 파이프(종속 없는 프로세스 간의 양방향 데이터 통신), 세마포어(Semaphore)를 걸은 공유 메모리, 메세지 큐 등을 사용하며 서로 다른 컴퓨터 간의 프로세스들과 한 컴퓨터 내의 프로세스들 사이의 통신을 모두 지원하는 POSIX 호환 소켓 통신도 있다.

리눅스의 장치 드라이버는 dev 폴더 안에 있다. 하나의 파일이 하나의 장치 제어에 쓰인다. 응용 소프트웨어는 sys 폴더의 장치 정보 및 설정 파일을 이용해 장치를 제어한다. 커널의 각종 핵심 동작(CPU 정보, 프로세스 스케줄링 정보, 메모리 관리 상태 등 각종 시스템 정보)은 proc 폴더에서 확인/처리할 수 있다.

다른 모놀리식 커널처럼 리눅스도 최하위에 아키텍처 의존 코드(리눅스 소스 코드의 arch 폴더나 include 폴더의 asm 폴더의 내용물 같은 특정 CPU 아키텍처의 어셈블리 코드)를 두고 그 위의 커널 코드로 하드웨어를 제어하며 응용 소프트웨어와 시스템 콜 인터페이스에 따라 기능을 넘겨준다.

POSIX의 영향을 받아 파일 입출력이나 장치 제어를 위한 데이터 통신 시에 다음과 같은 함수를 호출한다.

  • open: 파일은 열기, 장치 통신은 초기화
  • close: 파일은 닫기, 장치 통신은 종료
  • read: 파일/장치에서 데이터 읽어오기
  • write: 파일/장치에 데이터 쓰기
  • ioctl: 장치와의 통신에서 메타데이터가 되는 정보에 접근/조작하는 식으로 장치 동작 제어
  • poll: 장치와의 통신에서 응답을 감시

주요 쉘 명령어들

다음은 busybox[2]에서 지원하는 기본적인 쉘 명령어들이다. 출처

acpid, addgroup, adduser, adjtimex, ar, arp, arping, ash,
awk, basename, beep, blkid, brctl, bunzip2, bzcat, bzip2, cal, cat,
catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,
chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab,
cryptpw, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod,
devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname,
dos2unix, dpkg, du, dumpkmap, dumpleases, echo, ed, egrep, eject,
env, envdir, envuidgid, expand, expr, fakeidentd, false, fbset,
fbsplash, fdflush, fdformat, fdisk, fgrep, find, findfs, flash_lock,
flash_unlock, fold, free, freeramdisk, fsck, fsck.minix, fsync,
ftpd, ftpget, ftpput, fuser, getopt, getty, grep, gunzip, gzip, hd,
hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id,
ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, inotifyd,
insmod, install, ionice, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink,
iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd,
last, length, less, linux32, linux64, linuxrc, ln, loadfont,
loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr,
ls, lsattr, lsmod, lzmacat, lzop, lzopcat, makemime, man, md5sum,
mdev, mesg, microcom, mkdir, mkdosfs, mkfifo, mkfs.minix, mkfs.vfat,
mknod, mkpasswd, mkswap, mktemp, modprobe, more, mount, mountpoint,
mt, mv, nameif, nc, netstat, nice, nmeter, nohup, nslookup, od,
openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress,
pivot_root, pkill, popmaildir, printenv, printf, ps, pscan, pwd,
raidautorun, rdate, rdev, readlink, readprofile, realpath,
reformime, renice, reset, resize, rm, rmdir, rmmod, route, rpm,
rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script,
scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont,
setkeycodes, setlogcons, setsid, setuidgid, sh, sha1sum, sha256sum,
sha512sum, showkey, slattach, sleep, softlimit, sort, split,
start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv,
svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac,
tail, tar, taskset, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd,
time, timeout, top, touch, tr, traceroute, true, tty, ttysize,
udhcpc, udhcpd, udpsvd, umount, uname, uncompress, unexpand, uniq,
unix2dos, unlzma, unlzop, unzip, uptime, usleep, uudecode, uuencode,
vconfig, vi, vlock, volname, watch, watchdog, wc, wget, which, who,
whoami, xargs, yes, zcat, zcip

지원 CPU

기타

  1. ↑ 동시기 경쟁작이자 정통 UNIX를 표방한 BSD 계열 프로젝트들은 UNIX를 개발한 벨 연구소 담당 회사인 AT&T와의 소송전 힘겨루기 과정에서 시간과 인력을 소모해버렸고, NEXTSTEP이 맥 OS X가 된 이후 애플과의 공생을 통해 LLVM 프로젝트 등을 지원 받으며 활력을 되찾을 때까지 암흑기를 보내야 했다.
  2. ↑ 임베디드 리눅스를 위해 필수 유닉스 유틸리티들을 단일 실행 파일로 줄인 유틸리티 프로그램