Bin, sbin, usr/bin, usr/sbin хоёрын ялгаа

30 оны 2010-р сарын XNUMX-нд Дэвид Коллиер бичсэн:

Busybox-д холбоосууд нь эдгээр дөрвөн лавлах руу хуваагдаж байгааг би анзаарсан.
Холбоосуудын аль нь байх ёстойг тодорхойлох энгийн дүрэм бий юу?
Жишээ нь kill /bin дотор, killall нь /usr/bin дотор байна... Энэ хуваагдлаас би ямар ч логик олж харахгүй байна.

Кен Томпсон, Деннис Ричи нар 7 онд PDP-1969 дээр Unix-ийг бүтээснийг та мэдэх байх. Тиймээс 1971 онд тэд хос RK11 дисктэй (тус бүр нь 05 мегабайт) PDP-1,5 болгон шинэчилсэн.

Үйлдлийн систем томорч, эхний диск дээр (үндэс FS байрладаг) багтахаа больсон үед тэд гэрийн лавлахууд байрладаг хоёр дахь хэсэгт шилжсэн (тиймээс холбох цэгийг / usr гэж нэрлэсэн - үгнээс авсан. хэрэглэгч). Тэд тэнд шаардлагатай бүх үйлдлийн системийн лавлах сангуудыг (/bin, /sbin, /lib, /tmp ...) хуулбарлаж, хуучин нь зайгүй болсон тул файлуудыг шинэ дискэн дээр байрлуулсан. Дараа нь тэд гурав дахь дисктэй болж, үүнийг /home директорт суулгаж, хэрэглэгчдийн гэрийн лавлахыг нүүлгэсэн бөгөөд ингэснээр үйлдлийн систем нь хоёр дискний үлдсэн бүх зайг эзэлнэ. гурван мегабайт хүртэл (хөөх!).

Мэдээжийн хэрэг, тэд "Үйлдлийн систем ачаалагдах үед энэ нь хоёр дахь дискийг /usr-д холбох боломжтой байх ёстой, тиймээс mount гэх мэт програмуудыг /usr-д хоёр дахь диск дээр бүү суулгаарай. тахиа, өндөгний асуудал." Ийм энгийн. Энэ нь 6 жилийн өмнө Unix V35 дээр байсан.

/bin болон /usr/bin (болон ийм бүх лавлах)-г хуваах нь эдгээр үйл явдлуудын өв залгамжлал бөгөөд 70-аад оны хэрэгжилтийн нарийн ширийн зүйлийг хүнд сурталтнууд олон арван жилийн турш хуулж ирсэн. Тэд хэзээ ч асуулт асуугаагүй яагаадтэд зүгээр л хийсэн. Энэ хуваагдал нь хэд хэдэн шалтгааны улмаас Линуксийг бүтээхээс өмнө утга учиргүй болсон:

  1. Ачаалах үед initrd эсвэл initramfs ашигладаг бөгөөд энэ нь "энэ файлаас өмнө бидэнд хэрэгтэй байна" гэх мэт асуудлуудыг шийддэг. Тиймээс бидэнд байна аль хэдийн бусад бүх зүйлийг ачаалахад ашигладаг түр зуурын файлын систем.
  2. Хуваалцсан номын сангууд (Бэрклигийн залуус Unix-д нэмсэн) танд /lib болон /usr/lib-ийн агуулгыг бие даан өөрчлөхийг зөвшөөрдөггүй. Эдгээр хоёр хэсэг нь таарч байх ёстой, эс тэгвээс ажиллахгүй. 1974 онд ийм зүйл болоогүй, учир нь тэд статик холболтын улмаас бие даасан байдалтай байсан.
  3. Хямд үнэтэй хатуу дискүүд 100 онд 1990 мегабайтын саадыг эвдэж, яг тэр үед хуваалтын хэмжээг өөрчлөх програм хангамж гарч ирэв (partition magic 3.0 1997 онд гарсан).

Мэдээж хуваагдал байгаа учраас зарим хүмүүс үүнийг зөвтгөх дүрэм гаргаж ирсэн. Үүний нэгэн адил үндсэн хуваалт нь бүх төрлийн үйлдлийн системийн ерөнхий функцүүдэд шаардлагатай бөгөөд та локал файлуудаа / usr-д оруулах хэрэгтэй. Эсвэл AT&T юу түгээдэг, /usr-д таны түгээлт, IBM AIX эсвэл Dec Ultrix, эсвэл SGI Irix нэмсэн болон /usr/local-д таны системд зориулагдсан файлуудыг агуулна. Дараа нь хэн нэгэн /usr/local-ийг шинэ программ хангамж суулгахад тохирох газар биш гэж үзсэн тул /opt! /opt/local мөн гарч ирвэл би гайхахгүй...

Мэдээжийн хэрэг, 30 жилийн хугацаанд энэ тусгаарлалтаас болж янз бүрийн сонирхолтой хуваарилалттай холбоотой дүрэм журам гарч ирсэн. Жишээ нь, "/tmp дахин ачаалах үед устгагдсан, гэхдээ /usr/tmp үгүй." (Мөн Ubuntu-д зарчмын хувьд /usr/tmp байдаггүй бөгөөд Gentoo-д /usr/tmp нь /var/tmp-ын бэлгэдлийн холбоос бөгөөд одоо энэ дүрэмд хамаарах бөгөөд дахин ачаалахад энэ нь арилдаггүй. Тиймээ, энэ Өмнө нь бүгд байсан FS үндэс нь зөвхөн уншигдах боломжтой бөгөөд дараа нь та /usr руу юу ч бичих шаардлагагүй, гэхдээ та /var руу бичих хэрэгтэй. ихэнхдээ Заримдаа /var руу шилжүүлэхийг оролдсон /etc-ээс бусад тохиолдолд бичих боломжгүй.)

Линукс сан зэрэг хүнд сурталтнууд (хэдэн жилийн өмнө Чөлөөт стандартын бүлгийг өргөжүүлэхдээ залгисан) эдгээр дүрмийг яагаад тэнд байсныг олж мэдэхийг оролдолгүйгээр баримтжуулж, төвөгтэй болгож байгаадаа баяртай байдаг. Кен, Деннис нар PDP-05 дээрх RK11 диск хэтэрхий жижиг байсан тул үйлдлийн системийнхээ нэг хэсгийг гэрийн лавлах руу шилжүүлсэн гэдгийг тэд анзаардаггүй.

Busybox нь өмнөх шигээ файлуудыг байрлуулдаг гэдэгт би итгэлтэй байна. Одоог хүртэл ийм зүйл хийх бодит шалтгаан байхгүй. Би хувьдаа /usr дахь ижил төстэй лавлахууд руу /bin, /sbin болон /lib холбоосыг л хийдэг. Эцсийн эцэст, суулгагдсан програм хангамжтай ажилладаг хүмүүс ойлгож, хялбарчлахыг хичээдэг ...

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх