• UNIX benzeri basit bir işletim sistemi oluşturmaya yönelik bir kılavuz. Sıfırdan bir işletim sistemi nasıl yazılır?

    Er ya da geç her Linux kullanıcısı kendi dağıtımını yaratmayı düşünür. Bazıları “her şeyi kendinize göre özelleştirebileceğinizi” iddia ediyor. Diğerleri ise Vetka'da halihazırda sunulan dağıtım kitleri arasında ideal bir kit olmadığından şikayet ediyor. Ve güya kendi sistemleri için süper-kavramsal fikirleri var. Bütün bu psikolojiye neden başladım? Linux'la oynamaya yeni başlayan ve yapacak hiçbir şeyi olmayanların oksijenini hemen kesmek için. Zaten bir işletim sistemi oluşturmayı düşünüyorsanız, sonuna kadar düşünün. Bu yüzden,

    Linux tabanlı bir işletim sistemi oluşturmak istiyorum.
    Hemen uyarıyorum: Eğer 18. yüzyıl olsaydı, gelecek sistem darağacının bekleyeceği başka bir gelişmiş dağıtım (ve Allah korusun, popüler...) seçer. Gönderi sıfırdan bir sistem oluşturmakla ilgili, bu da her türlü Slax ve Linux Nane dokunmayacağız.

    1. Adım: Medyayı seçin
    Birkaç seçenek vardır: ya işletim sisteminiz bir LiveCD'den çalışır ya da sabit disk veya bir flash cihazdan. Hemen rezervasyon yapacağım: Hakkında tek kelime etmeyeceğim Sabit disk, çünkü “Her şeyi yanımda taşıyorum” serisinden esnek bir dağıtım kiti veya optik diskte kilitli bir dağıtım kiti oluşturmak çok daha uygundur. LiveCD veya LiveUSB sisteminin nasıl oluşturulacağını öğrenirseniz, sabit sürücünüze kurulumda herhangi bir sorun yaşanmayacaktır.

    Her ihtimale karşı hazırlanın flash sürücüyü temizle, CD ve son olarak Virtualbox'ı yükleyin.

    Adım 2. Çekirdeğin derlenmesi
    Üçüncü Linux çekirdeğinin piyasaya sürülmesiyle ilgili olarak, bu adım daha fazla gelişmeyi teşvik ediyor... Dolayısıyla çekirdek kaynaklarına ihtiyacımız var. Her kullanıcı bunların kernel.org web sitesinden edinilebileceğini bilir. Hiçbir durumda sizin tarafınızdan derlenmeyen yabancı bir çekirdeği sisteminize eklemeyin, duydunuz mu?

    Tembelliğim haddini aştığı için /linuxkernel klasörünü oluşturdum ve oradaki kaynakların bulunduğu arşivi açtım. Kök olarak giriş yaptım, aşağıdakileri yaptım:

    cd /linux çekirdeği
    menü yapılandırması yap

    Prensip olarak, çekirdek üç şekilde yapılandırılabilir: make config (çevrimiçi yapılandırma), make menuconfig (ncurses aracılığıyla sözde grafiksel yapılandırma) ve make xconfig (grafiksel yapılandırma). Sonuç olarak make config ruh halinizi uzun süre mahvedecektir, çünkü... tüm konuların tüm yönleriyle ilgili olası tüm soruları soracaktır. Make xconfig sorunu herkeste bulunmuyor ama ben tanıştım ve hala tanışıyorum. Eğer bunu X aracılığıyla yapmak istiyorsanız, bunu kendiniz çözün. En iyi seçenek menuconfig yapmaktır. Bu şey sizin için çekirdeği kendi yönteminizle özelleştirebileceğiniz sözde grafiksel bir arayüz açacaktır. Bu şey, kurulumu kolay olan ncurses kütüphanesini gerektiriyor.

    Prensip olarak, eğer beyniniz Linux'u anlıyorsa, konfigürasyonu da anlayacaksınız. Süreç ilginç, gerçekten çok fazla seçenek var ve yardım da var ingilizce dili, ancak yine de erişilebilirliği ve sadeliğinden memnun.

    Ancak yine de yönlendirilmeniz gerekecek. Dosya Sistemleri --->'ne gidin ve gerekli yıldız işaretlerini koyun. M harfi, belirli bir sürücüye yönelik desteğin, çekirdeğe harici bir modül bağlanarak gerçekleştirildiği anlamına gelir (onlardan nefret ediyorum!). Diskleri okumak için de isofs desteğine ihtiyacımız olacak. Dosya Sistemleri ---> CD-ROM/DVD Dosya Sistemleri ---> ISO 9660 CDROM dosya sistemi desteği. Ayrıca eski Dos sistemlerini de destekleyebilirsiniz.

    Çılgın Mandriva geliştiricileri Dosya sistemleri ---> DOS/FAT/NT Dosya Sistemleri ---> NTFS yazma desteğine izin vermeyi unuttular ve onların dağıtımlarından birinde eski Windows bölümüne erişimde zorluk yaşadım.

    İşlemci tipi ve özelliklerine bakın ---> İşlemci ailesi, Pentium-MMX'i seçmem önerildi.

    Ayrıca Aygıt Sürücülerine de bir göz atın, faydalıdır. Sırf eğlence olsun diye, oradaki her şeyi seçebilir ve > 50 MB ağırlığında bir çekirdek derleyebilirsiniz.

    Daha öte. Çekirdek kendisini yükledikten sonra sistemin kendisini yüklemelidir. Ya kendi kendine derlenen dosyalardan (gömülü sistemlerde kullanılır), ya da bir şeyle sıkıştırılmış bir CPIO arşivinden ya da Initrd'den. Bu sizin için DOS değil, burada bir diskin veya flash sürücünün kök dizinindeki bazı init "yeni dosyalara hemen başvuramayacaksınız. Aslında işe yarayacak, Annix Amca'yı dinlemeyin! biz sistemimiz için initrd'yi kullanacağız çünkü kullanışlıdır ve CPIO arşivinin aksine üçüncü taraf geliştiricilerin müstehcen ifadelerine neden olmaz.

    Ah evet, çekirdeği komutla derleyin

    X86'nız varsa, onu /linuxkernel/arch/x86/boot/bzImage adresinde bulacaksınız.

    Zorlu Chelyabinsk programcıları için Çapraz derlemeyi kullanabilirsiniz...

    Ramdisk'in oluşturulması.

    Şimdi orada basit bir kabuğun kurulu olduğu bir initrd'ye ihtiyacımız var. Meşgul kutuyu kullanacağız çünkü bu tatlı her şeyi yapabilir. Yöntemi Movix'in yaratıcısı Roberto de Leo'dan çalacağız (Perl'e olan inanılmaz sevgim olmasaydı ona saygı bile duymaya başlardım):

    dd if=/dev/zero of=/dev/ram0 bs=1k count=5000 - Bilgisayarımızın RAM'inde Ramdisk oluşturun.
    mke2fs -m0 /dev/ram0 5000 - Ext2 sisteminde Ramdisk'i biçimlendir
    mkdir /distro - Bir klasör oluşturur
    mount /dev/ram0 /distro - /distro klasörüne bağlar

    İşte bu kadar, artık elimizde 5 MB kapasiteli Ramdisk var. Daha fazlası mümkündür, ancak gerekli değildir. Thomas Matejisek'in aksine, initrd'yi Squashfs'teki LZMA sıkıştırılmış modüllerle doldurmayacağım. İhtiyaç duyulan her şey çekirdekle derlenecektir. Evet, bu pek mantıklı ve doğru değil ama yüz kat daha az zahmetli. Ve özellikle bu yaklaşımı kınayanlar için çekirdekteki modülerlik seçeneğini etkinleştirebilirsiniz: Yüklenebilir modül desteğini etkinleştirin.

    Ramdiskimizde /distro içine monte edilmiş kayıp+bulunmuş gibi bir klasör var.Bunun nedeni onu ext2 olarak formatlamamızdır.Hiçbir durumda silmemelisiniz, burada yardımcı olma ihtimali çok düşük olsa da, görüntü sabittir. önce meşgul kutuyu kurmalıyım...

    Busybox'ı yükleme
    Bu kadar harika projelerin bu kadar berbat web sitelerinin olmasının nedeni bu mu? Ancak... eğer kaynaklar indirilirse ve başarıyla /busybox klasörüne açılırsa bu artık önemli değildir.

    Meşgul kutusunu aynı şekilde yapılandırabilirsiniz:

    cd /meşgul kutusu
    menü yapılandırması yap

    Hala ne olduğunu anlamadıysanız açıklayacağım. Busybox, /bin, /sbin, /usr/bin, /usr/sbin klasörlerinde depolanan tonlarca UNIX uygulamasının yerini alır. Bunun yerine yalnızca tek bir uygulama oluşturulur: /bin/busybox ve yukarıdaki klasörlerde bu uygulamaya bir sürü bağlantı oluşturulur. Meşgul kutuyu aşağıdaki komutla yükleyin:

    make CONFIG_PREFIX=/distro kurulumu

    Busybox ayrıca /sbin/init ve bazı nedenlerden dolayı /linuxrc dosyalarını da oluşturacak, böylece sisteminiz doğru şekilde başlayacaktır. Ancak gerekli tüm klasörler oluşturulmadı. Böylece her şeyi elle bitirip şunu yaratıyoruz:

    /dağıtım/vs.
    /dağıtım/lib
    /distro/geliştirme
    /dağıtım/mnt
    dağıtım/işlem
    /dağıtım/kök
    /dağıtım/tmp
    /dağıtım/kök

    Bir şeyi unutursanız hatırlayın çünkü... Bu dizinleri unutmak zor.

    Her şey yoluna girecek, ancak meşgul kutusu, dağıtımımıza kopyalanması gereken kütüphanelerin çalışmasını gerektiriyor. Hangilerinin olduğunu bulmak çok kolaydır:

    ldd /dağıtım/bin/meşgul kutusu

    Program bize kabuğumuz için gerekli kütüphaneleri gösterecek. Hemen şunu söyleyeyim: Linux kapısı çekirdek tarafından yaratılmıştır ve kopyalanamaz.

    Kitaplıkları kopyalarken hata ayıklama bilgilerini kesebilirsiniz (Roberto'nun önerdiği gibi):

    objcopy --strip-debug nereden nereye

    Linux'u Linux'tan çıkarmak

    Birkaç sistem metin dosyası oluşturmanız gerekir:

    /etc/inittab'a ihtiyacımız var. Sizi şaşırtacağım: Yaşamının başlangıcında sistem Root'un ne olduğunu bile bilmiyor. İsimsiz bir kullanıcımız bile var, ancak sistem çapında düşük düzey özellikler (ONF) dosyasının mevcut olması gerekiyor. Dosyanın pilot içerikleri aşağıdaki gibidir:

    # Başlatılacak ilk dosya, ardından /sbin/init.
    ::sysinit:/etc/rc.d/rc.S

    # Konsolda bir kabuk başlatın.
    ::yeniden doğma:-/bin/sh

    # Kapatma ve yeniden başlatma öncesinde yürütülen komutlar.
    ::kapatma:/sbin/swapoff -a >/dev/null 2>&1
    ::kapatma:/bin/umount -a -r >/dev/null 2>&1

    Bir sonraki dosya /etc/fstab'tır. Bu, yükleme sırasında neyin ve nereye monte edileceğini açıklayan bir tablodur. Bu şey işe yaramaz! Proc'u bağlamamız gerekiyor, aksi halde hiçbir şey işe yaramayacak, bu yüzden dosyaya şunu yazıyoruz:

    yok /proc proc varsayılanları 0 0

    Montaj için ayrıca /etc/mtab dosyasına ihtiyacınız var. Oluşturun ve boş bırakın.

    Ancak mount yalnızca biz açıkça bunu yapmasını istediğimizde gereken her şeyi yapacaktır. Ve ilk önyükleme dosyasında /etc/rc.d/rc.S (rc.d - klasör) soracağız. Kibarca soruyoruz:

    /bin/mount -av -t nonfs

    Ayrıca bir profil dosyasına da ihtiyacımız var (b)(a)sh, genellikle hayal özgürlüğü vardır. Bir /etc/profile dosyası oluşturun ve onu aşağıdakilerle doldurun:

    PATH = "$PATH:/bin:/sbin:/usr/bin:/usr/sbin:"
    DAHA AZ=-MM
    DÖNEM=linux
    ANA SAYFA=/kök
    PS1 = ">"
    PS2 = ">"
    görmezden gelme=10
    dışa aktarma YOL EKRANI DAHA AZ SÜRELİ PS1 PS2 ANA SAYFA görmezden gelme

    Ayrıca bir kabuk olduğunu gösteren /etc/shell dosyasına da ihtiyacınız olacak:

    /bin/sh
    /bin/kül
    /bin/bash

    Bu kadar. Ramdiskimizi bir dosyaya yazabilirsiniz.

    mkdir /os - "hazır" klasörü.
    umount /dev/ram0 - bir RAM parçasının bağlantısını kesin.
    dd if=/dev/ram0 of=/os/initrd bs=1k count=5000 - bir dosya oluşturun.
    gzip /os/initrd - initrd dosyasını sıkıştır

    Önyüklenebilir bir USB flash sürücü oluşturma

    Küçük gelişimimizin “bitiş çizgisi”. Bir flash sürücü alıyoruz, takıyoruz, vfat olarak biçimlendiriyoruz (ext'yi de kullanabilirsiniz, ancak tüm Windows kullanıcılarının kendilerini vurmadığını unutmayın).

    Flash sürücüde bir önyükleme klasörü oluşturuyoruz, içinde initrd ve kernel klasörleri var.

    /os klasöründen sıkıştırılmış Ramdisk'i flash sürücüdeki boot/initrd klasörüne kopyalayın, buna "main.gz" adını verin. Çekirdek kaynaklarının bulunduğu klasörden bzImage'ı flash sürücüdeki boot/kernel klasörüne kopyalayın, "main.lk" olarak adlandırın. Syslinux önyükleyici dosyalarını alıyoruz (İnternette veya başka bir dağıtımdan: fark etmez), yani syslinux.bin, syslinux.boot, syslinux.cfg. Bunları flash sürücümüzün kök dizinine kopyalıyoruz. Syslinux.cfg dosyasına şöyle bir şey yazıyoruz:

    varsayılan mm
    istem 1
    zaman aşımı 100
    etiket mm
    çekirdek /boot/kernel/main.lk

    etiket mc
    çekirdek /boot/kernel/main.lk

    etiket cm
    çekirdek /boot/kernel/custom.lk
    ekleme initrd=/boot/initrd/main.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
    etiket bilgisi
    çekirdek /boot/kernel/custom.lk
    ekleme initrd=/boot/initrd/custom.gz load_ramdisk=1 ramdisk_size=5000 rw root=/dev/ram0
    etiket hd
    yerel önyükleme 0x80

    Böylece, deneme amacıyla dağıtımımıza bağlanabilecek özel initrd ve çekirdeği destekledik.

    Flash sürücümüzün sistemdeki hangi cihaz olduğunu öğrenelim (parametreler olmadan montajı çalıştırabilir ve görebilirsiniz). Bu, /dev/sdb1, /dev/sdc1 veya /dev/sdd1'dir. Kuruluma başlamadan önce flash sürücünün bağlantısını kesmeye değer.

    Syslinux'u kurun (paket sistemde değilse apt-get install syslinux):

    syslinux -d aygıt_yolu

    Ldlinux.sys dosyası, flash sürücünün kök dizininde görünmelidir. Eğer oradaysa, syslinux.bin, syslinux.boot'a artık gerek yoktur.

    BIOS'u bir flash sürücüden önyükleme yapacak şekilde nasıl yapılandıracağınızı size söylemeyeceğim - bu kolaydır. Yalnızca, daha sonra çalışmak üzere /boot/initrd/main'i bağlayabileceğiniz bir /boot/initrd/init klasörü oluşturmanın çok uygun olduğunu söyleyeceğim. Sadece sıkıştırmayı açmayı ve gzip ile sıkıştırmayı unutmayın.

    Tamam artık her şey bitti.

    Sanki az önce size sıfırdan bir Linux sisteminin nasıl oluşturulacağını anlatmış gibiyim. Kolay değil mi? Daha sonra /sbin/init betiğini düzenleyebilirsiniz çünkü hala yapacak çok işiniz var! Flash sürücüyü kök dizine bağlayacak bir komut dosyası yazmanız gerekecektir. Aksi takdirde 5 MB'lık Salt Okunur bölümüyle çalışmak zorunda kalacaksınız. Ama bu tamamen farklı bir hikaye.

    Konuya gelecek olursak...

    İşletim sistemi, çoklu görevi (genellikle) uygulayan ve kaynakların bu görevler arasında ve genel olarak dağıtımını yöneten bir şeydir. Görevlerin birbirine zarar vermemesini, hafızanın farklı alanlarında çalışmasını ve cihazlarla sırayla çalışmasını sağlamanız gerekiyor, en azından bu. Ayrıca mesajları bir görevden diğerine aktarma yeteneğini de sağlamanız gerekir.

    Varsa başka bir işletim sistemi uzun süreli hafıza, ona erişim sağlamalıdır: yani, dosya sistemiyle çalışmak için tüm işlevleri sağlamalıdır. Minimumdur.

    Hemen hemen her yerde, ilk önyükleme kodunun montaj dilinde yazılması gerekir; nerede olması gerektiği, nasıl görünmesi gerektiği, ne yapması gerektiği ve hangi boyutu aşmaması gerektiği konusunda bir sürü kural vardır.

    Bir PC için, ASMA'ya BIOS tarafından çağrılacak ve dört ve birkaç yüz baytı aşmadan bir şeyler yapması ve ana işletim sistemini başlatması gereken bir önyükleyici yazmanız gerekir - kontrolü ana koda aktarın. yakın gelecek C ile yazılabilir.

    ARM için ACMA üzerinde bir kesme tablosu oluşturup (sıfırlama, çeşitli hatalar, IRQ, FIQ kesintileri vb.) ve kontrolü ana koda aktarmanız gerekir. Bununla birlikte, birçok geliştirme ortamında bu tür kodlar hemen hemen her denetleyici için mevcuttur.

    Yani bunun için ihtiyacınız var:

    1. Hedef platformun çevirici dilini bilin.
    2. İstenilen modda çalışacak şekilde yapılandırmak için işlemci mimarisini ve her türlü hizmet komutlarını ve kayıtlarını öğrenin. Bir PC'de bu, örneğin korumalı moda veya 64 bit moduna geçiştir... ARM'de bu, çekirdeğin ve çevre birimlerinin saatinin ayarlanmasıdır.
    3. İşletim sisteminin nasıl başlayacağını, kodunuzu nereye ve nasıl aktarmanız gerektiğini tam olarak bilin.
    4. C dilini bilin - Asma'da deneyim olmadan büyük kod yazmak zordur, bakımı daha da zor olacaktır. Bu nedenle çekirdeği C dilinde yazmanız gerekir.
    5. İşletim sisteminin nasıl çalıştığını bilin. Bu konuyla ilgili Rusça pek çok kitap var, ancak hepsinin iyi olup olmadığını bilmiyorum.
    6. Çok ama çok sabrınız ve azminiz olsun. Hatalar olacak ve bunların bulunup düzeltilmesi gerekecek. Ayrıca çok okumanız gerekecek.
    7. Çok ama çok zamanınız olsun.

    Daha öte. Diyelim ki bir şeyler yazdınız. Bu şeyi test etmemiz gerekiyor. Ya deneylerin gerçekleştirileceği fiziksel bir cihaza (hata ayıklama panosu, ikinci bilgisayar) ya da bunun için bir emülatöre ihtiyacınız var. İkincisinin kullanımı genellikle daha kolay ve hızlıdır. PC için örneğin VMWare.

    Ayrıca internette iyi araştırırsanız bu konuyla ilgili birçok makale mevcut. Kaynak kodlu hazır işletim sistemlerinin de pek çok örneği bulunmaktadır.

    Gerçekten istiyorsanız, NT sistemlerinin eski çekirdeğinin (Windows) kaynak koduna, hem ayrı ayrı (Microsoft tarafından yorumlar ve çeşitli referans materyalleriyle birlikte yayınlanmıştır) hem de eski sürümle birlikte bakabilirsiniz. İşletim Sistemi (sızdırıldı).

    Öncelikle programlamayı öğrenin. Montajcı bilgisi gereklidir; Diğer konular hakkında da bilgi sahibi olmanız şiddetle tavsiye edilir. Ek diller daha düşük seviyeli programlama, örneğin C.

    İşletim sistemini hangi cihaza yüklemek istediğinize karar verin. Bu bir CD, DVD, flash bellek aygıtı, sabit sürücü veya başka bir bilgisayar olabilir.

    İşletim sisteminizin nasıl görünmesini istediğinize karar verin. Bu işletim sisteminin tam sürümü mü olmalı? GUI kullanıcı arayüzü (GUI) veya belki daha minimalist bir şey? İşleme başlamadan önce hangi yöne gitmeniz gerektiğini bilmeniz gerekir.

    İşletim sisteminizin hangi işlemci platformunu destekleyeceğini kontrol edin. AI-32 ve x86_64, kişisel bilgisayarlar için en yaygın iki versiyondur, dolayısıyla en iyi seçim olarak kabul edilebilirler.

    Her şeyi sıfırdan kendiniz yapmayı mı tercih edeceğinize veya sistem üzerinde temel alarak temel oluşturmak istediğiniz çekirdeklerin olup olmadığına karar verin. Sıfırdan Linux, örneğin kendi Linux dağıtımını oluşturmak isteyenler için bir projedir.

    Kendi önyükleyicinizi mi yoksa önceden oluşturulmuş Büyük Birleşik Önyükleyiciyi (GRUB) mi kullanacağınızı seçin. Kodladığınızdan beri kendi programıÖnyükleme, bilgisayar donanımı ve BIOS hakkında kapsamlı bilgi gerektirir; bu da gerçek çekirdeğin programlama zamanlamasını geriye itebilir.

    Kullanacağınız programlama diline karar verin. Elbette Pascal veya BASIC gibi bir dilde işletim sistemi geliştirmek oldukça mümkün ancak C veya Assembly dilinde yazmak tercih edilir. İşletim sisteminin bazı önemli kısımları bu özel dilin bilinmesini gerektirdiğinden, Assembly dili kesinlikle gereklidir. Öte yandan C++ şunları içerir: anahtar kelimelerİşletim sisteminin tam sürümünü çalıştırmak için gereklidir.

    • C veya C++ kodunu kullanarak bir işletim sistemi oluşturmak için elbette bir derleyici veya diğerini kullanacaksınız. Bu, yazılımla birlikte gelen veya distribütörün web sitesinde bulunan seçilen C/C++ derleyicisine ait kılavuzu/talimatları/belgeleri okumanız gerektiği anlamına gelir. Derleyici hakkında birçok karmaşık şeyi öğrenmeniz gerekecek ve ayrıca C++'ı geliştirmek için derleyicinin tasarımını ve ABI'sini de öğrenmeniz gerekecek. Anlamanız bekleniyor çeşitli formatlar yürütme görevlerini (ELF, PE, COFF, normal ikili dosyalar vb.) ve yerel Windows PE biçiminin (.exe) telif hakkıyla korunduğunu unutmayın.
  • Uygulama Programlama Arayüzünü (API) seçin.İyi API'lerden biri, iyi belgelenmiş olduğu için POSIX'tir. Tüm Unix sistemleri POSIX için en azından kısmi desteğe sahip olduğunuzdan, Unix programlarını işletim sisteminize yerleştirmeniz önemsiz olacaktır.

    Bir tasarıma karar verin. Monolitik çekirdekler ve mikro çekirdekler vardır. Monolitik çekirdekler, çekirdekteki tüm hizmetleri çalıştırırken, mikro çekirdekler, hizmetlerin özel bir uygulamasıyla birleştirilmiş küçük bir çekirdeğe sahiptir. Genel olarak monolitik çekirdekler daha hızlıdır ancak mikro çekirdekler daha iyi izolasyona ve olası hatalara karşı korumaya sahiptir.

    Gelişimi ve ekip çalışmasını düşünün. Bu şekilde çözmek için daha az zamana ihtiyacınız olacak büyük problemler Bu da daha kısa sürede daha kaliteli bir işletim sistemi oluşturmanıza olanak sağlayacaktır.

    Sabit sürücünüzü tamamen silmeyin. Diski biçimlendirmenin tüm verilerinizi kalıcı olarak temizleyeceğini unutmayın! Sürümünüz tamamen işlevsel olarak hazır olana kadar bilgisayarınızı başka bir işletim sisteminden çoğaltmak için GRUB veya başka bir yönetici kullanın.

    Küçük başla. Bellek yönetimi ve çoklu görev gibi karmaşık öğelere geçmeden önce, metin görüntüleme ve kesintiler gibi küçük şeylere dikkat edin.

    Kaydetmek yedek kopya en son çalışan sürüm. Bu, bir şeylerin tamamen ters gitmesi durumunda biraz gönül rahatlığı sağlar. şimdiki versiyonu işletim sisteminiz veya sonraki eklemeler. Bilgisayarınız bozulursa ve önyükleme yapamıyorsa, sizin de anladığınız gibi, çalışmak için ikinci bir kopyaya sahip olmak mükemmel bir fırsat olacaktır, böylece mevcut sorunları çözebilirsiniz.

    Yeni işletim sisteminizi sanal makinede test edin. Her değişiklik yaptığınızda veya üretim bilgisayarınızdan test makinesine dosya aktardığınızda bilgisayarınızı yeniden başlatmak yerine, mevcut işletim sisteminiz çalışmaya devam ederken işletim sistemini sanal bir makinede çalıştırmak için bir uygulama kullanabilirsiniz. VM uygulamaları arasında VMWare (ücretsiz olarak kullanılabilen bir sunucuya da sahiptir), alternatif açık kaynak, Bochs, Microsoft Virtual PC (Linux ile uyumlu değildir) ve XVM VirtualBox bulunur.

    Bir yayın sürümünü yayınlayın. Bu, kullanıcıların işletim sisteminizdeki olası kusurlar hakkında size bilgi vermelerine olanak tanır.

  • İşletim sistemi aynı zamanda kullanıcı dostu olmalıdır, bu yüzden şunu eklemeyi unutmayın: kullanışlı özellikler Tasarımınızın ayrılmaz bir parçası olacak.

    • Geliştirme tamamlandığında, kodu herkese açık mı yoksa özel mi yapmak istediğinizi düşünün.
    • Sisteminizin uygulanabilir olmasını istiyorsanız güvenlik özelliklerini en büyük önceliğiniz haline getirdiğinizden emin olun.
    • Programlamayı öğrenme hedefiyle bir işletim sistemi geliştirme projesine başlamayın. C, C++, Pascal veya işaretçi türleri, düşük seviyeli bit işlemleri, bit değiştirme, satır içi birleştirici vb. dahil olmak üzere diğer ilgili dil ve özelliklerden herhangi birini bilmiyorsanız, o zaman henüz hazır değilsiniz işletim sistemi oluşturmak için.
    • Kendi işletim sisteminizi geliştirmenize yardımcı olacak OSDev ve OSDever gibi portallara göz atın. Çoğu sorun için OSDev.org topluluğunun bir foruma katılmak yerine site içeriğine bizzat başvurmanızı tercih ettiğini lütfen unutmayın. Yine de forum üyeleri arasına katılmaya karar verirseniz bunun için bazı ön koşulların olması gerekir. C veya C++ ve x86 montaj dili hakkında kapsamlı bilgiye sahip olmanız gerekir. Ayrıca programlamadaki Bağlantılı Listeler, Kuyruklar vb. gibi genel ve karmaşık kavramları da anlamalısınız. OSDev topluluğu, kurallarında hiç kimsenin yeni programcılara bakıcılık yapmayacağını açıkça belirtiyor. Bir işletim sistemi geliştirmeye çalışıyorsanız, programlama tanrısı olduğunuzu söylemeye gerek yok. Ayrıca seçtiğiniz işlemci mimarisine ait işlemci kılavuzunu da okumanız gerekmektedir; örneğin x86 (Intel), ARM, MIPS, PPC, vb. İşlemci yapısına ilişkin böyle bir referans kitabı Google'da (“Intel Kılavuzları”, “ARM kılavuzları” vb.) arama yaparak kolayca bulunabilir. Açık sorular sormak için OSDev.org forumuna katılmayın. Bu sadece "Kahrolası Kılavuzu okuyun" gibi yanıtlarla sonuçlanacaktır. Öncelikle kullanacağınız çeşitli araçların Vikipedi kılavuzlarını okumayı denemelisiniz.
    • Potansiyel ölü noktaları ve diğer hataları kontrol edin. Boşluklar, çıkmaz noktalar ve diğer sorunlar işletim sisteminizin tasarımını etkileyebilir.
    • Daha basit bir yöntem istiyorsanız Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS mklivecd veya SUSE Studio ve SUSE KIWI gibi Linux dağıtımlarını düşünün. Ancak oluşturulan işletim sistemi, bu hizmeti ilk tanıtan şirkete aittir (ancak GPL kapsamında onu istediğiniz gibi özgürce dağıtma, değiştirme ve çalıştırma haklarına sahipsiniz).
    • İyi bir çözüm, geliştirilmekte olan işletim sistemi için tamamen yeni bir bölüm oluşturmak olacaktır.

    Uyarılar

    • İşletim sisteminin dikkatsizce sabit sürücüye kopyalanması tamamen zarar verebilir. dikkat olmak
    • Tamamen başarılı olamayacaksın hazır sistemİki haftadır. Önyüklenebilir bir işletim sistemiyle başlayın ve ardından daha ilginç şeylere geçin.
    • Rastgele G/Ç bağlantı noktalarına rastgele baytlar yazmak gibi dikkatsiz bir şey yaparsanız, işletim sisteminizi yok edersiniz ve (teoride) donanımınızı yakabilirsiniz.
    • Kaliteli bir işletim sistemi oluşturmanın kolay olmasını beklemeyin. Pek çok karmaşık karşılıklı bağımlılık vardır. Örneğin, işletim sisteminin birden fazla işlemciyi yönetebilmesi için bellek yöneticinizin, fazladan işlemcilerin aynı anda aynı kaynağa erişmesini önleyecek "kilitleme" mekanizmalarına sahip olması gerekir. Kullanılan "bloklar", herhangi bir zamanda yalnızca bir işlemcinin kritik bir kaynağa erişmesini, diğerlerinin ise boşta kalmasını sağlamak için bir zamanlayıcı içerir. Ancak zamanlayıcının çalışması bellek yöneticisinin varlığına bağlıdır. Bu, kilitlenme bağımlılığının bir örneğidir. HAYIR standart yol bu tür sorunları çözmek; Her işletim sistemi yaratıcısının kendi çözümünü bulabilecek kadar becerikli olması beklenir.

    Kaynaklar

    Neye ihtiyacınız olacak?

    • Bilgisayar
    • Üzerine kuracağınız işlemci
    • Yeterli Veri deposu(RAM) sanal makine için
    • Birincil işletim sistemi (derleme kaynak kodu geliştirme (vb.) ve işin ilk aşamalarında birleştirme ve paketleme için kullanılır; sonunda kendi işletim sisteminiz birincil hale gelir)
    • Sözdizimi renk kodu düzenleyicisi (Entegre Geliştirme Ortamının yokluğunda kullanılır)
    • Derleyici
    • CD/DVD sürücüsü
  • İlya Aleksandrov

    Linux tabanlı kendi işletim sistemimizi yaratıyoruz

    Yüzlerce Linux dağıtımı var ve daha kaçının ortaya çıkacağını kimse bilmiyor. Düzinelerce şirket ve binlerce programcı en iyi Linux projesini oluşturmak için yarışıyor ve deneyimli herhangi bir kullanıcı, BT endüstrisi devlerinin ürünlerinden daha aşağı olmayan bir ev bilgisayarı sisteminin yazarı olabilir.

    Uzun yıllar boyunca Linux'la çalıştım ve çok sayıda farklı dağıtım kullandım: Mandriva, Fedora, SlackWare, Debian, Ubuntu ve diğerleri. Bazı projeleri daha çok beğendim, bazılarını ise daha az. Ancak tüm dağıtımlarda kaçınılmaz olarak işi çok zorlaştıran ciddi eksikliklerle uğraşmak zorunda kaldık. Biri kaynak konusunda çok talepkar, diğeri her şeyi desteklemiyor gerekli ekipmanüçüncüsü çeşitli yazılımlardan yoksundur. İşte o zaman meşhur Doğu bilgeliğini hatırladım: Bir şeyi iyi yapman gerekiyorsa, kendin yap.

    Sıfırdan Linux

    Kendi Linux versiyonumu oluşturmaya karar veren tek kişi ben değilim - sistemin temel kısmının ve çekirdeğin temel alınacağı, ancak geliştiriciden tek bir ekstra kilobaytın olmayacağı bir işletim sistemi yani senden. Kullanıcı gereksinimlerini karşılamayan çok sayıda Linux dağıtımı, Gerard Beekmans'ı herkesin yalnızca ihtiyaç duyduğu bileşen ve işlevlerle bir sistem kurmasına olanak tanıyacak bir dağıtım yaratmaya yöneltti.

    Yetenekli bir programcının arzusu, LFS olarak kısaltılan Scratch'ten Linux projesiyle (www.linuxfromscratch.org) sonuçlandı. Bu proje, kendi Linux tabanlı işletim sisteminizi sıfırdan, kaynak kodlarından tasarlamanıza olanak tanır. LFS derlemesi, Linux sisteminin önceden kurulu olduğu bir bilgisayarda gerçekleşir, ancak "gelişmiş" bir Live-CD, örneğin Knoppix de uygundur.

    Bu durumda, montaj için kullanılan Linux sistemi herhangi biri olabilir - yalnızca bir derleyicinin varlığı ve sistem kütüphaneleri. Linux From Scratch'e kelimenin alışılagelmiş anlamında bir dağıtım denemez - bu, işletim sisteminin temel kısmıyla birlikte kendi benzersiz işletim sistemi sürümünüzü oluşturmanıza izin verecek yardımcı yazılım gibi bir şeydir.

    Bildiğiniz gibi Linus Torvalds, işletim sistemini “Sadece eğlence için!” sloganıyla geliştirdi. - yani sadece zevk uğruna. LFS'nin sunucularda pek sık bulunmadığını kabul etmek gerekir, bu sistem kural olarak bilgisayar meraklıları tarafından kullanılır. Linux'u Scratch'ten kurmak ve onunla çalışmak, işletim sistemi bileşenleri arasındaki ilişkiyi anlamanıza yardımcı olacaktır; bu, yalnızca LFS'ye dayalı değil, kendi Linux dağıtımınızı geliştirirken de yararlı olacaktır. Bu nedenle, LFS büyük ölçüde kendi dağıtımlarını oluşturma sürecinin heyecan verici ve ilginç olduğu kişiler için tasarlanmıştır - ve inanın bana, bu tür birçok insan var.

    Bu nedenle, bir sistemi tasarlamak için bütün bir günü (veya daha fazlasını) harcamaya hazırsanız, siteden (2) LFS-packages-6.0, LFS-kitabını indirmenizi ve bu makaleyi okumaya devam etmenizi öneririm.

    Diski bölümleme ve dizin ağacı oluşturma

    Malzemenin daha iyi anlaşılması için tüm süreci genel hatlarıyla anlatacağız (bkz. Şekil 1).

    İlk aşamada, önceden kurulmuş bir dağıtım kiti veya LiveCD kullanılarak disk bölünür. Yeni sistem için sabit diskte bir bölüm ayrılmıştır. Bundan sonra, gerekli tüm programları ve sistem çekirdeğini bu bölümde statik olarak derlemeniz gerekecektir. Daha sonra kök dizin, yeni işletim sistemimiz için ayrılan sabit disk bölümüyle değiştirilir. Derlemeyi tekrarlamanız gerekecektir ancak bu sefer yazılımın dinamik olarak oluşturulması gerekir (dinamik ve statik derleme arasındaki fark aşağıda anlatılacaktır). Son aşama, çok önemli glibc kütüphanesinin oluşturulmasını ve kurulu işletim sisteminin yapılandırılmasını içerir. Gördüğünüz gibi özellikle zor bir şey yapmanıza gerek yok.

    Tüm süreç boyunca asıl yardımcınız, Rusça çevirisini burada bulabileceğiniz LFS-kitap paketindeki belgelerdir: http://multilinux.sakh.com/download/lfsbook.tar.bz2. Kitap, bir işletim sistemi oluşturmanın her adımını ayrıntılı olarak açıklamaktadır; bu nedenle sorun yaşarsanız bu kılavuza başvurduğunuzdan emin olun (bu makalenin bu tür kapsamlı belgelerin yerini alması amaçlanmamıştır).

    Biz yaratırız yeni Kısım– benim durumumda bu /dev/hda5'tir, çünkü /dev/hda1 bölümü zaten sabit diskte yüklüdür Linux diski Slackware. Olasılığı sıfıra yakın olsa da, hasar durumunda geri yüklenebilmesi için öncelikle sistemin yedeğini almanız önerilir. Ve burada bence her şey açık: kök dizin için gerekli miktarı (23 GB yeterli) ayırıyoruz, takas bölümü için RAM miktarının iki katı kadar alan, istenirse ev için ayrı bölümler oluşturabilirsiniz dizin (/home) ve /boot için. Bununla birlikte, çoğu kişi tarafından tercih edilen bölümleme seçeneği (takas hariç tüm kullanılabilir alanın kök dizine tahsis edilmesi ve ardından takasın kendisinin oluşturulması) LFS oluşturulurken de oldukça kabul edilebilir. Yazarın bilgisayarında hem ana işletim sistemi olan Linux Slackware hem de LFS bir sabit disk kullanıyor ancak LFS'yi başka bir sabit diske kurmak da zor değil.

    Dosya sistemini kendi takdirinize göre seçin: LFS kapsamında Ext3 veya ReiserFS ile herhangi bir sorun yaşanmadı. Ancak XFS hayranlarının hayal kırıklığına uğraması gerekecek; Linux From Scratch'in bu FS ile çalışmasını sağlama girişimleri başarılı olmadı.

    Şimdi yeni işletim sistemi için ayrılan bölümü monte ediyoruz:

    $ montaj /dev/hda5 /mnt/mylin

    Kolaylık sağlamak için MYLIN değişkenini tanımlayalım:

    $ ihracat MYLIN=/mnt/mylin

    Harika, daha fazla çalışma için yaratmak daha iyi bireysel kullanıcı Monte edilen bölümün sahibi olarak atayacağımız mylin.

    $ useradd mylin

    $ chown –R mylin $MYLIN

    Yeni bölümün kökünde bir dizin ağacı oluşturmanız gerekir:

    $cd$MYLIN

    $ mkdir –p bin boot dev vb home lib mnt opt ​​​​root sbin usr/(X11R6,local) var

    Usr, usr/X11R6, usr/local dizinlerinde gerekli yapıyı oluşturuyoruz: alt dizinler bin vb., lib, sbin, paylaşım, src'yi içerir.

    Daha sonra aynısını gelecekteki sistemin /var ve /opt dizinleri için yapacağız:

    $ mkdir var/(önbellek,lib,yerel,kilit,günlük,seçenek,çalıştır,biriktir)

    $ mkdir opt/(bin,doc,include,info,lib,man)

    Daha derin hiyerarşilerin olduğunu unutmayalım, örneğin /usr/share/man/man1. Ancak makalenin kapsamı, dosya ağacının yapısı hakkındaki tüm bilgileri burada vermemize izin vermiyor, bu nedenle Dosya Sistemi Hiyerarşi Standardı belgesini kullanmanız gerekir (şu adreste bulunabilir: http://linux-ve.net) /MyLDP/file-sys/fhs-2.2-rus) veya önceden kurduğunuz Linux işletim sisteminin yapısını dikkatlice inceleyin. Sabit sürücüyü hazırladıktan sonra statik montaja geçiyoruz.

    Statik yapı

    Neden statik montaj kullanıyoruz? Statik derleme ile kütüphanenin kaynak kodu uygulama koduna eklenir, bu da boyutunun artmasına neden olur, ancak aynı zamanda bütünlüğü de korunur. Dinamik derlemede kitaplık, gerektiğinde uygulamalar tarafından erişilebilen ayrı bir dosyada bulunur. Sonuç olarak tüm programlar kütüphanenin aynı sürümüyle çalışır.

    Ancak yeni toplanan sistemin kök dizinini ayarlamak için chroot komutunu kullandığımızda, “ana” kütüphane, kurulu sistem/lib, /usr/lib ve diğerlerinde bulunan , artık erişilemeyecek, bu nedenle dinamik olarak derlenen programlar çalışmayı reddedecek, ayrıca sürümlerin uyumluluğu hiç kimse tarafından garanti edilmiyor.

    Bunu önlemek için ihtiyacınız olan her şey yazılım Gelecekteki sistemimiz için öncelikle onu statik olarak birleştireceğiz. Bash komut yorumlayıcısıyla başlayalım. (ZSH veya TCSH hayranları, sistemi kurduktan sonra en sevdikleri tercümanları kurabilirler, ancak yapım aşamasında bunların kullanımı LFS'nin yazarı tarafından sağlanmaz). /usr/lib/libcurses.a dosyasının olup olmadığını kontrol etmeli, yoksa nсursesdev paketini kurmalısınız. Tüm paketler statik derleme bayraklarıyla oluşturulmalıdır: "--enable-static-link", "--disable-shared" veya "--static". Her biri için hangisi uygun özel durum, belirli bir paketin belgelerinden veya “--help” seçeneğiyle çalıştırılan bir yapılandırma komut dosyasının çıktısından bulunabilir.

    $ ./configure --yardım

    Daha sonra statik olarak derlenmiş programları “dinamik” olanlarla karıştırmamak için onlara özel bir dizin oluşturalım:

    $ mkdir $MYLIN/stat

    Paketleri oluştururken ve kurarken, dosyaları bu dizine taşımak için “--prefix=$MYLIN/stat” parametresini eklemeyi unutmayın. Ve son olarak bash'ı yükleyin:

    $ ./configure –-enable-static-link --prefix=$MYLIN/stat

    $ yapmak

    $ kurulum yap

    Aynı şemayı kullanarak kalan gerekli paketleri topluyoruz : binutils, bzip2, textutils, texinfo, tar, sh-utils, gcc, grep, gzip, gawk, diffutils, fileutils, make, patch, sed, ve aslında linux çekirdeği.

    Evet, çekirdeği derlerken, eski çekirdek sürümleri için (2.2.x-2.4.x) gcc 2.95 kullanmanız gerektiğini ve mevcut 2.6.x sürümü için gcc 3.x kullanmanızın önerildiğini unutmayın. sorunlardan kaçının.

    LFS kitabının ilgili bölümlerine bakmayı unutmayın, bundan ve diğer birçok nüanstan bahsediyor. Genel olarak, bir çekirdeğin LFS'de derlenmesi, HDD'ye kurulu bir dağıtım kullanıldığında gerçekleştirilen benzer prosedürden farklı değildir. Çekirdek kaynaklarını $MYLIN/usr/src/linux-2.6.xx dosyasına açalım ve ardından aşağıdakileri çalıştırarak yapılandıralım:

    $ menuconfig yap

    Çekirdek parametrelerini ayarlama süreci internette birçok kez anlatılmıştır (6), bunun üzerinde daha ayrıntılı durmaya pek gerek yoktur. Daha sonra Linux çekirdeği kaynaklarının bulunduğu klasörde aşağıdaki komutları veriyoruz:

    $ make bzImage

    $ modül yap

    $MYLIN/usr/src/linux-2.6.xx/arch/i386/boot/bzImage adresindeki her şey yeni çekirdektir.

    Daha sonra $MYLIN/etc/passwd ve $MYLIN/etc/group'u oluşturuyoruz. İlkinde şimdilik tek bir kullanıcıyı kaydediyoruz - herhangi bir şifreyle root ve ikincisinde kullanıcı grupları (yeni başlayanlar için bir kök grup da yeterli olacaktır).

    Bu noktada bir sonraki adım için hazırlıklarımız bitti ve daha incelikli, dinamik bir montaja geçiyoruz.

    Dinamik montaj

    Şimdi kök dizini /mnt/mylin olarak değiştirmemiz gerekiyor, burada yalnızca statik olarak birleştirilmiş yardımcı programları kullanacağız - artık "ana" işletim sistemindeki araçların yardımına başvuramayacağız. Komutu konsolda veriyoruz:

    $ chroot $MYLIN/usr/bin/env –i

    >HOME=/root TERM=$TERM PS1=’u:w$’

    >YOL=/bin: /usr/bin: /sbin: /usr/sbin: /stat/sbin

    >/stat/bin/bash --giriş

    Bu komutla yolları belirttik. yürütülebilir dosyalar, terminal türü, yorumlayıcı ve komut satırı istemi türü.

    Bazı programların çalışmasını sağlamak için yüklemeniz gerekir dosya sistemi yeni sistemde proc.

    $ montaj işlemi /proc -t işlem

    En önemli an geldi. Glibc kütüphanesini oluşturmak. En sorumlu kişi o çünkü çoğu insan onsuz çalışıyor gerekli programlar olmayacak ve Linux'u ana kütüphane olmadan kullanmanın bir anlamı yok. Glibc oluşturmak çoğu zaman birçok soruna neden olur.

    Derleme sırasında “--prefix=$MYLIN/stat” parametresini belirttik, böylece kökü değiştirirken, statik olarak oluşturulmuş tüm paketler yeni işletim sistemi bölümünün /stat dizininde yer alacaktır.

    Bu nedenle, glibc-2.x.x.tar.gz arşivini paketinden çıkarın (örneğin, /usr/src/ dizinine) ve glibclinuxthreads dizinine gidin. Bu aşamada sistemde bir kullanıcıyı ismine göre tanımlamanın imkansız olması (tam olarak glibc ve diğer kütüphanelerin bulunmaması nedeniyle) ve glibc'yi kurmanız gerektiği için kaynak kodunu biraz düzeltmemiz gerekecek. bizde olmayan bir Perl yorumlayıcısına ihtiyacımız var.

    İsmin değiştirilmesi kök kullanıcı Login/Makefile dosyasındaki kullanıcı kimliği, yani 0'dır ve malloc/Makefile dosyasındaki $PERL değişkeni, yorumlayıcının yolu - /usr/bin/Perl - ile değiştirilmelidir ve işlem sırasında göz ardı edilecektir. konfigürasyon.

    $ /usr/src/glibc-2.x.x/configure --prefix=/usr --enable-add-ons --libexecdir=/usr/bin &&

    & yapmak

    & kurulumu yap

    $ localedata/install-locales yap

    $ /stat/bash --giriş

    Her şeyi doğru yaptıysanız, glibc derlenecek, sonunda komut isteminde "root" görünecek ve tüm programları dinamik olarak yeniden derleyebilirsiniz.

    Çekirdek kurulumunu tamamlayalım:

    $ make module_install

    $ kurulum yap

    Yeni çekirdeği /boot dizinine taşımak için başka bir komut çalıştırın:

    $ kaldırma işlemi yap

    Tüm yüklü programları ve bazı yeni programları artık statik derleme bayrakları olmadan topluyoruz. İhtiyacımız olacak (bu aşamada aşağıda listelenen her şeyi derlemeyi unutmamak çok önemlidir) (bkz. Tablo 1).

    Tablo 1. Montaj için gerekli paket seti

    otomatik konf

    grep

    perl

    otomatik yapım

    Groff

    darbe

    gzip

    Procinfo

    bin86

    işlemler

    binutils

    az

    psmisc

    bzip2

    reiserfs-progs

    diffutils

    kitap aracı

    e2fsprogs

    lilo

    sh-utils

    gölge

    dosya

    yapmak

    sistem günlüğü

    dosya araçları

    makedev

    sistemvinit

    Bulgular

    adam sayfaları

    esnek

    modüller

    texinfo

    aval aval bakmak

    lanetler

    metinler

    netkitbase

    Linux kullanımı

    bizon

    net araçları

    metni al

    yama

    Dinamik yeniden derlemeyi gerçekleştirdikten sonra, statik olarak oluşturulmuş paketlerin bulunduğu dizini silebilirsiniz:

    $ rm -rf /stat

    Rahat bir nefes alabilir ve kahve içebilirsiniz; en zor, rutin şeyler geride kalır. Konusuna geçelim Sonraki etap– sistemimizin ilk konfigürasyonu.

    İlk Sistem Yapılandırması

    Kuruluma başlamadan önce, tüm değişikliklerin yeni işletim sisteminin dizin dosyalarında yapılması gerektiğini ve ebeveyn sistemi.

    Sistem saatini ayarlamak için yalnızca bir satır içeren bir /etc/sysconfig/clock dosyası oluşturun:

    UTC=0

    Artık bilgisayar saati, BIOS'taki zaman değerinin doğru ayarlanması koşuluyla, saat diliminizdeki saati gösterecektir.

    Bilgisayara bir isim verelim:

    echo "HOSTNAME=my_linux" > /etc/sysconfig/network

    Şimdi sistemin açılışta monte etmesi gereken bölümleri /etc/fstab dosyasında belirtiyoruz:

    # dosya sistemi bağlama noktası fs türü seçenekleri fsck sırasını dökümü

    /dev/hda5/ext3 varsayılanlar 1 1

    /dev/hda3 takas takas pri=1 0 0

    işlem /proc işlem varsayılanları 0 0

    /dev/hda3 ve /dev/hda5 yerine bölümlerinizi yazın (kök ve takas), gerekirse sabit sürücünün ve CD-ROM'un diğer bölümleri için bağlama noktalarını ekleyerek dosyayı tamamlayın.

    Şimdi sistemimizi önyüklenebilir hale getirelim.

    LFS'ye ek olarak başkalarını kullanıyorsanız Linux dağıtımları, o zaman şimdi girmeniz gerekiyor eski sistem– bunu yapmak için şu komutu çalıştırıyoruz:

    $ çıkış

    Zaten ana işletim sisteminde, /etc/lilo.conf dosyasına aşağıdakini ekleyin:

    #LFS

    resim=/boot/bzImage

    Etiket=lf'ler

    Kök=

    Sadece oku

    “/boot/bzImage”ın derlediğiniz sistem çekirdeğinin yolu olduğu ve “partition”ın kök dizinin bulunduğu disk bölümü olduğu açıktır.

    Diğer işletim sistemlerini ve Linux dağıtımlarını kullanmayı planlamıyorsanız doğrudan LFS'de LILO kurulumuna geçin.

    Bu durumda lilo.conf şunun gibi görünecektir:

    önyükleme=/dev/hda

    Gecikme=40

    Kompakt

    VGA=normal

    Kök=/dev/hda1

    Sadece oku

    Image=/boot/zImage-2.6.12

    Etiket=Linux

    Yapılandırmanıza bağlı olarak gerekli değişiklikleri yapın. Önyükleyiciyi şu komutla güncelliyoruz:

    $ /sbin/lilo –v

    Ve önceki adımların tümü doğru bir şekilde tamamlanırsa kendimizi yeni sistemin içinde bulacağız. Bununla birlikte, uzun bir "ince" ayar aşaması (yeni sistemin güvenliğine özel dikkat gösterilmelidir, çünkü LFS, yeni kurulan herhangi bir işletim sistemi gibi varsayılan olarak oldukça korumasız görünmektedir) hala ileridedir. Ama kendi ellerimle topladım Linux sürümü Zaten sahipsin.

    Not:

    Kendi Linux'unu yaratmayı düşünen tek kişi Gerard Beekmans değildi. Jonathan Thorpe liderliğindeki başka bir proje olan BYOLinux, geliştirmeyi durdurdu, ancak yazdığı belgeler bugün de geçerliliğini koruyor ancak LFS kitabı kadar ayrıntılı değil ve Rusçaya tercüme edilmedi. John'un yöntemi arasındaki temel fark, glibc kütüphanesinin ana sistemden çocuğa yeniden derleme olmadan aktarılmasıdır; bu o kadar verimli değildir, ancak montaj sırasında birçok sorunu önler. Bazı FreeBSD kullanıcıları aynı zamanda bir işletim sistemi tasarımcısı gibi hissetmek ister.

    Artık bu oldukça mümkün - http://ezine.daemonnews.org/200302/fbsdscratch.html adresinde FreeBSD'yi tamamen kaynaklardan - dağıtımlardan bağlantı noktalarına kadar ve olağan "yeniden oluşturma" yöntemine benzemeyen bir yöntemle oluşturmaya ilişkin bir makale var. sistemin yöntemi, ancak Gerard Beekman'ın yöntemine benzer. Artık Linux üzerine kurulmuş kişisel, benzersiz bir sisteminiz var. Sorun ortaya çıkarsa, çözümlerini LFS kitabında arayın, orada her şey ayrıntılı olarak açıklanmaktadır. Ayrıca kılavuzu http://www.tldp.org portalından indirmenizi de tavsiye ederim. Linux Ağı Yönetici Kılavuzu, doğrudan LFS ile ilgili olmasa da sistem kurulumu aşamasında faydalıdır. Her programın ayrıca Linux kullanıcılarının hayatını kolaylaştırmak için tasarlanmış çeşitli man ve bilgi sayfaları ile birlikte geldiğini unutmayın.

    1. Rusça LFS kitabı - http://multilinux.sakh.com/lfs.
    2. LFS projesinin resmi portalı http://www.linuxfromscratch.org'dur.
    3. ByoLinux Portalı - http://www.byolinux.org.
    4. FreeBSD hakkında sıfırdan makale - http://ezine.daemonnews.org/200302/fbsdscratch.html.
    5. Linux çekirdeğinin derlenmesiyle ilgili bir makale - http://vikos.lrn.ru/MyLDP/kernel/kompil-2-6.html.
    6. Bayrak A. Knoppix 3.7 Rusça Sürümünün İncelenmesi. – “Sistem Yöneticisi” Dergisi, Sayı 3, Mart 2005 – 4-6 s. ().

    Herhangi bir aktivitede zamandan tasarruf etmenin en iyi yollarından biri buna göre bir sistem oluşturmaktır. Avantajı, işinizi otomatikleştirip optimize ederek daha üretken olmanız ve sizin için önemli olan diğer görevlere daha fazla zaman ayırmanızdır.

    Sistem, bir strateji kullanarak tekrarlanan bir aktiviteyi gerçekleştirmek için oluşturulan bir yöntem, prosedür veya rutindir. Sistemler işinizi ve yaşamınızı daha verimli yönetmenizi sağlar.

    İşte yaratabileceğiniz birkaç yaşam alanı kendi sistemi:

    • Sistemleştirme.
    • Sistemleştirme.
    • Bloglama için görevlerin sistemleştirilmesi.
    • Ev temizliğinin sistemleştirilmesi.
    • Sabah ve akşam rutinlerinin sistemleştirilmesi.
    • E-posta işlemenin sistemleştirilmesi.
    • İş görevlerinin sistemleştirilmesi.

    Aşağıdaki beş adım, hemen hemen her etkinlik için kendi sisteminizi oluşturmanıza olanak sağlayacaktır.

    Envanter al

    Hem evde hem de işte düzenli olarak gerçekleştirdiğiniz eylemleri tanımlayarak başlayın. Gününüzü analiz edin ve günlük programınızı oluşturan tüm aktivitelere bakın. Örneğin: sabah işe/okula hazırlık, çocukları okula hazırlama, işe seyahat etme, soruları yanıtlama e-postalar ve telefon görüşmeleri yapmak, rapor yazmak, akşam koşusuna çıkmak, akşam yemeği pişirmek, blog yazısı yazmak, kitabınızı pazarlamak vb.

    Seçilen öğeye özel yapılacaklar listesine gidin ve kendinize aşağıdakileri sorun:

    • Şimdi bunu nasıl yapıyorsun?
    • Bunu olabildiğince verimli bir şekilde yaptığınızı düşünüyor musunuz?
    • Nerede çok zaman harcıyorsunuz?
    • Nerede para kaybediyorsun?
    • Sizi en çok hangi eylemler üzdü?
    • Şu anda mümkün olduğu kadar hızlı bir şekilde yapılmayan şey nedir?
    • Neyin optimize edilmesi gerekiyor?

    Envanterinize göre organize edilecek bir aktivite seçin.

    Şu anda ne yaptığınızı analiz edin

    Düzenlemek istediğiniz eylemleri normal prosedürü kullanarak gerçekleştirin (yani her zamanki gibi davranın). Aşağıdakilerin tümünü kaydederek süreci belgeleyin:

    • Hangi adımları atıyorsunuz?
    • Hangi araçları kullanıyorsun?
    • Darboğazlar nerede (zaman kaybı, sürekli gecikmeler, bir şeylerin ters gitmesi)?
    • Seni hayal kırıklığına uğratan ne?
    • Bu aktiviteyi tamamlamak ne kadar sürer?
    • Fiyatı ne kadar?
    • Hangi sonuçları alıyorsunuz?

    Bundan sonra alınan belgeyi inceleyin ve inceleyin.

    Yeni bir süreç planlayın

    Daha önce de belirttiğimiz gibi sistem, görevleri kolaylaştırmak ve verimliliği artırmak için oluşturduğunuz bir süreçtir. Belgenize ve optimize etmek istediğiniz etkinliğe bir göz atın ve kendinize aşağıdaki soruları sorun:

    • Bu aktiviteyi yaparak hangi sonuca ulaşmak istiyorsunuz? Hangi hedefe ulaşmaya çalışıyorsunuz? İdeal sonuç nedir?
    • Attığınız tüm adımlar gerekli mi? Bunlardan bazıları ortadan kaldırılabilir mi?
    • Adımları en verimli sırayla mı gerçekleştiriyorsunuz? Adımların sırasını değiştirseniz sonuçlar farklı olur mu?
    • Bütün bunlar nasıl daha hızlı yapılabilir?
    • Bu aktivite için bir kontrol listesi, diyagram, zihin haritası veya senaryo oluşturabilir misiniz?
    • Bazı adımları veya tüm süreci otomatikleştirmek mümkün mü? Bunun için kullanılabilecek bir program var mı?
    • Bazı adımlar veya sürecin tamamı devredilebilir mi?
    • Kullandığınız araçların güncellenmesi gerekiyor mu?

    Şimdi şunu yaz yeni sistem, her adımı ayrıntılı olarak listeliyor.

    Planı uygula

    Bir planınız olduğunda hemen uygulamaya koymalısınız. Önce başkalarının yardımına ihtiyacınız olabilir veya yazılım veya yükseltme araçları satın almanız gerekebilir.

    Süreci çalıştırmanın ve çalışmasını test etmenin zamanı geldi. Bunu yapın ve sonuçlarına dikkat edin. Kendinize aşağıdaki soruları sorun:

    • İstediğiniz sonuçları aldınız mı?
    • Ne çalışıyor?
    • Ne çalışmıyor?
    • Ne kadar zaman kazandınız?
    • Bütün bunların maliyeti ne kadar? Sonuçlara bakıldığında sistem etkili midir?
    • Hedefinize en kolay yoldan mı ulaşıyorsunuz?
    • Süreçte boşluklar var mı?
    • Süreci daha da optimize etmek mümkün mü?

    Gerekli ayarlamaları ve değişiklikleri yapın. İstediğiniz sonuçları elde edene kadar sisteminizi güncelleyin.

    Sistemi sürekli iyileştirmek

    Sisteminizi sürekli izlemeye değer çünkü hızla değişen bir dünyada, aynı hızla güncelliğini yitirebilir. İyileştirmelere ihtiyaç olup olmadığını her zaman kendinize sorun.

    • Sistem olması gerektiği gibi çalışıyor mu?
    • Sistemin maliyetini düşürebilir misiniz?
    • Sistemi daha da verimli hale getirebilir misiniz?
    • Daha iyi sonuçlar elde etmek için sistemi basitleştirebilir misiniz?

    Bir sistem kurmak her zaman zaman yatırımı gerektirir. Ancak başlangıçta normalde harcadığınızdan daha fazlasını harcayarak, önemli ölçüde tasarruf etmiş olursunuz. Operasyonel stresin etkisini en aza indirin.

    Size iyi şanslar diliyoruz!