Տարբերությունը bin, sbin, usr/bin, usr/sbin

30 թվականի նոյեմբերի 2010-ին Դեյվիդ Քոլիերը գրել է.

Ես նկատեցի, որ busybox-ում հղումները բաժանված են այս չորս դիրեկտորիաների:
Կա՞ ինչ-որ պարզ կանոն՝ որոշելու համար, թե որ գրացուցակում պետք է լինի հղումները…
Օրինակ, kill-ը /bin-ում է, իսկ killall-ը /usr/bin-ում... Ես տրամաբանություն չեմ տեսնում այս բաժանման մեջ:

Դուք հավանաբար գիտեք, որ Քեն Թոմփսոնը և Դենիս Ռիչին ստեղծել են Unix-ը PDP-7-ի վրա 1969 թվականին: Այսպիսով, մոտ 1971 թվականին նրանք արդիականացրին PDP-11-ի մի զույգ RK05 սկավառակներով (յուրաքանչյուրը 1,5 մեգաբայթ):

Երբ օպերացիոն համակարգը մեծացավ և այլևս չէր տեղավորվում առաջին սկավառակի վրա (որի վրա գտնվում էր FS արմատը), նրանք մի մասը տեղափոխեցին երկրորդ, որտեղ գտնվում էին տնային դիրեկտորիաները (հետևաբար, ամրացման կետը կոչվում էր /usr - բառից օգտագործող): Այնտեղ կրկնօրինակեցին ՕՀ-ի բոլոր անհրաժեշտ դիրեկտորիաները (/bin, /sbin, /lib, /tmp ...) և ֆայլերը դրեցին նոր սկավառակի վրա, քանի որ հինի տարածքը վերջացավ։ Այնուհետև նրանք ունեին երրորդ սկավառակ, նրանք տեղադրեցին այն /home գրացուցակում և տեղափոխեցին օգտատերերի տնային գրացուցակները այնտեղ, որպեսզի ՕՀ-ն կարողանա վերցնել մնացած բոլոր տարածքը երկու սկավառակի վրա, և դրանք երեք մեգաբայթ (վայ!):

Իհարկե, նրանք պետք է կանոն սահմանեին, որ «երբ օպերացիոն համակարգը բեռնվում է, այն պետք է կարողանա երկրորդ սկավառակը տեղադրել /usr-ում, այնպես որ մի տեղադրեք այնպիսի ծրագրեր, ինչպիսին է mount-ը երկրորդ սկավառակի վրա /usr-ում, այլապես կունենաք: հավի ու ձվի խնդիր». Դա այնքան պարզ է: Եվ դա եղել է Unix V6-ում 35 տարի առաջ:

/bin-ի և /usr/bin-ի (և նման բոլոր գրացուցակների) բաժանումը այդ իրադարձությունների ժառանգությունն է, 70-ականների իրագործման դետալ, որը կրկնօրինակվել է բյուրոկրատների կողմից տասնամյակներ շարունակ: Նրանք երբեք հարց չեն տվել ինչունրանք պարզապես դա արեցին: Այս բաժանումը դադարել է իմաստ ունենալ նույնիսկ նախքան Linux-ի ստեղծումը, մի քանի պատճառներով.

  1. Բեռնելիս օգտագործվում է initrd կամ initramfs, որը լուծում է այնպիսի խնդիրներ, ինչպիսիք են «մեզ պետք է այս ֆայլը դրանից առաջ»: Այսպիսով, մենք ունենք արդեն ունի ժամանակավոր ֆայլային համակարգ, որն օգտագործվում է մնացած ամեն ինչ բեռնելու համար:
  2. Համօգտագործվող գրադարանները (որոնք Unix-ին ավելացրել են Berkley-ի տղաները) թույլ չեն տալիս ինքնուրույն փոխել /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-ում: հիմնականում չի կարող գրվել, բացառությամբ /etc-ով, որը երբեմն փորձել են տեղափոխել /var ...)

Linux Foundation-ի նման բյուրոկրատները (որը տարիներ առաջ կուլ տվեց Free Standards Group-ը իր ընդլայնման ընթացքում) ուրախ են փաստագրել և բարդացնել այս կանոնները՝ երբեք չփորձելով պարզել, թե ինչու են դրանք այնտեղ: Այն, ինչ նրանք չեն գիտակցում, այն է, որ Քենն ու Դենիսը պարզապես ՕՀ-ի մի մասը տեղափոխել են իրենց տնային գրացուցակ, քանի որ PDP-05-ի RK11 սկավառակը չափազանց փոքր էր:

Ես բավականին վստահ եմ, որ busybox-ը պարզապես ֆայլեր է դնում այնպես, ինչպես դա եղել է պատմականորեն: Մինչ այժմ դա անելու իրական պատճառ չկա: Անձամբ ես ուղղակի կապում եմ /bin, /sbin և /lib-ը նմանատիպ դիրեկտորիաներին /usr-ում: Ի վերջո, մարդիկ, ովքեր աշխատում են ներկառուցված ծրագրերով, փորձում են հասկանալ և պարզեցնել ...

Source: www.habr.com

Добавить комментарий