İçeriğe geç

Kategori: Linux

Linux konsoldan assembly derleme

Micro işlemci dersine gittiğimde bu işin linuxta bu kadar zor olduğunu düşünmemiştim ve aldığımız micro dersinin de yetersiz olduğun gördüm günün ilerleyen saatlerinde, idelerimde de böyle birşey olmayınca bende biraz araştırmayla konsoldan assembly derlemek için kodları araştırdım.

Başlamadan önce assembly derlemek için nasm paketini kumamız gerekiyor:

sudo apt-get install nasm

 

hello world yazan bir assembly örneğini derleyeceğiz. Öncelikle hello.asm adında bir belge oluşturalım:

hello asm
hello asm

Daha sonra içerisine assembly kodlarımızı yerleştirelim

section .data
hello: db 'Hello world!',10 ; 'Hello world!' plus a linefeed character
helloLen: equ $-hello ; Length of the 'Hello world!' string
; (I'll explain soon)

section .text
global _start

_start:
mov eax,4 ; The system call for write (sys_write)
mov ebx,1 ; File descriptor 1 - standard output
mov ecx,hello ; Put the offset of hello in ecx
mov edx,helloLen ; helloLen is a constant, so we don't need to say
; mov edx,[helloLen] to get it's actual value
int 80h ; Call the kernel

mov eax,1 ; The system call for exit (sys_exit)
mov ebx,0 ; Exit with return code of 0 (no error)
int 80h

 

Bu kısmdan sonra

nasm -f elf hello.asm

ikinci olarak

ld -s -o hello hello.o

bu komutu kullanıdğımda şu hata ile karşılaştım galiba nasm paketi uyumlu değil

ld: i386 architecture of input file `hello.o' is incompatible with i386:x86-64 output

bu hatayıda şu komutla çözdüm:

ld -m elf_i386 -s -o hello hello.o

 

oluşturdu dosyalar bu şekilde olacak:

 

assemly dosyaları
assembly dosyaları

 

Bu komuttan sonra bize hello adında bir çalıştıralabilir dosya oluşturacak konsoldan

./hello

Dediğinizde programınız çalışacaktır.

 

program çıktısı
program çıktısı

 

Linux Arduino kullanımı.

 

Bu gün arduino ile ilk kez çalışma fırsatım oldu. Tabi bazı problemlerle karşılaştım linux kullanan ve bu konuda çok fazla deneyimi olmayan kullanıcılar için arduino kullanımı hakkında bazı işlemleri anlatacağım.ubuntu kullanıyoru bunun üstünde göstereceğim.

Öncelikle arduino sayfasından gerekli tar.gz dosyasını indiriyoruz bu linkten Just Download diyerek (isterseniz bağış yapabilirsiniz.) kurulum dosyamızı indiriyoruz. Daha sonra tar.gz dosyasından çıkardığımız dosyları bir dizine koyalım. Benmiki masaüstünde sonra komut satırını açıyoruz sırası ile

Cd komutu ile bulunduğu dizine girelim:
cd Desktop/arduino-1.6.6
Daha sonra install.sh betiğine çalışma izni verelim
sudo chmod +x install.sh
Betiği çalıştırmak için komut satırına
./install.sh
Daha sonra masaüstüne icon oluşturulduğuna dair bir çıktı alacaksınız  dosyanız masaüstüne oluşturulmuş olacak. Şu şekilde:

arduino

Sonra çalışması için sağ tıklayarak Uygulama olarak çalıştır seçeneğini işaretletin ve .desktop uzantısı etkin hale gelecek bundan sorna programı buradan açabilirsiniz.

arduino

Execute kısmını işaretledikten osnra aktif oalcak ve

arduino
arduino

 

Wifi kısmında çalışırken sorun olmuyor ancak usb ile çalışacaksanız port izin ayarlarını vermeniz gerkiyor bunun içinde konsola:
$sudo usermod -a -G dialout <username>
$sudo chmod a+rw /dev/ttyACM0

Bu komutlardan sonra çalışabilirsiniz ancak her bilgisayarı yendien açtığınızda cihazı taktığınızda bu komutu kullanmanız gerekiyor.

Ubuntu virtual host oluşturma

Virtual Host (sanal host) birden fazla domaine kapalı olna IP adresleri için kullanılırlar. Genel olarak Virtual private server lerde farklı siteler çalıştırmak içni kullanılırlar. VPS lere Virtual host ekleme konusunda herhangi bir limit yoktur.

 

Başlamadan önce apachenin yüklü olması gerekiyor. Zaten yüklü ise bu adımı yapmanıza gerek yok

Yüklemek için komut :

sudo apt-get install apache2

Adım bir – Dizin oluşturma

Öncelikle sitemiz için bir dizin oluşturmamız gerek:

sudo mkdir -p /var/www/example.com/public_html

Adım iki – Yetkilendirme

Daha sonra dizinleri kullanmak için bazı yetkiler vermeliyiz.

 sudo chown -R $USER:$USER /var/www/example.com/public_html

Diyerek dizine yetki verdik. Şimdi /var/www dizininde oynama yapmak içni izinleriyle oynamamız gerekiyor.

 sudo chmod -R 755 /var/www

Adım üç – SAyfa hazırlama

Yaptığımız site dizininne bir html sayfası koyalım:

sudo nano /var/www/example.com/public_html/index.html

Açılan boş dosyanın içne :

<html>
  <head>
    <title>www.example.com</title>
  </head>
  <body>
    <h1>Success: Bu benim ilk Virtual Host um! :)</h1>
  </body>
</html>

Kodunu yapıştıralım (terminalde yapıştırmak için ctrl + shift + v) çıkarken bizden değişiklik için onay isteyecek onaylayıp dosyadan çıkalım.

Adım dört- Virtual Host file oluşturma

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

eğer

/etc/apache2/sites-available/

dizinindeki .conf dosyası ismi değişkse ona bakabilirsiniz.

 

Adım beş- Virtual Host file düzenleme

Bu adımda virtual host konfigurasyon dosyamızı oluşturacağız.

sudo nano /etc/apache2/sites-available/example.com.conf

açılan dosyada

<VirtualHost *:80>
        ServerAdmin webmaster@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/public_html
[...]

Kısımlarını yukarıda olduğu gibi ayarlayın.

 

Son olarak bu komutu uygulayacağız:

 sudo a2ensite example.com

Adım altı- Apache yeniden başlatma

Yaptığımız ayarların etkin olabilmesi için apache servisiniz yeniden başlatmamız gerek. Bunun için :

 sudo service apache2 restart

Adım yedi – Local hostu ayarlama

Orjinalinde son satırı eklemiş ve IP yi yazınca geliyor

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost

#Virtual Hosts 
12.34.56.789    example.com

Bu bende işe yaramadı bende şu şekilde düzenledim ve

virtual host
virtual host

 

Yazdığımda karşıma gelen bu :

Screenshot from 2015-10-02 01:15:30
virtual host sayfa

Daemon nedir? Linux

Türkçe manası şeytan ama Linux sistemlerde kullnaılan bir terimdir.

Çoklu görevli işletim sistemlerinde, dğrudan interaktif kullanıcıyla etkileşimli olmaktan ziyade arka planda çalışan programlardır. Geleneksel olarak daemon isimleri “d” ile biter. Öğrneğin, “syslogd” sistem loglama yeteneğine sahip bir daemondur , sshd SSH bağlantısı ile gelen bir daemondur.

Linux daemon
Linux daemon

Unix ortamında, daemon sık sık ana işlem olabilir ama her zaman değil, ya da başlangıç işlem olabilir. Bir daemon ı genellikle ya bir işlem çocuk işlem olarak oluşturur ve hemen çıkar, böylece başlangıç işlemine çocuk işllem olarak benimsenmesi sağlanır, ya da başlangıç işlemi tarafından doğrudan oluşturulur.

Sistem genellikle daemonları boot zamanında çalıştırır ve ağ isteklerine cevap veren, donanım aktiviteleri, veya başka programlar tarafından gerçekleştirilen bazı görevlerin fonksiyonlarını servis eder.Daemon lar ayrıca şunlarıda yapabilir donanımda configure ederler(udevd bazı Lİnux sistemlerde), zamanlanmış görevleri çalıştırmak ve başka çeşitli görevleri yerine getirmek gibi.

Systemd Nedir? Dost mu Düşman mı ?

Systemd Nedir? Dost mu Düşman mı ?

systemd
systemd

Systemd Linux sistem için temel blokları inşa eden bir pakettir. Bir sistem ve servis yöneticisi sağlar, PID 1 olarak çalışır ve sistemin geri kalanını başlatır. Systemd: agresif paralelleştirme yetenekleri, soket kullanımı ve D-Bus aktiviteleri için servisler başlatma, daemons ları başlancıta çalıştırma, Linux control gruplarının işlemlerini izleme, ekran görüntüsü ve Linux sistemin surumunu düzenlemeyi destekler, bağlama ve otobağlama noktlarını gerçekleştirir. Systemd SysV ve LSB başlatma scriptlerini destekler ve sysvinit için bir yedek olarak çalışır. Diğer parçaları log deomonları, temel sistem atarlarını kontrol etmek hostname, tarih, lokasyon, giriş yapan kullanıcılar, çalışan konteynırlar ve sanal makineler, sistem hesapları, çalışma dizinleri ve ayarlar ve ağ ayarları, ağ sati senkronizasyonu, isim çözümleme gibi.

 

Aslında çok fazla özelliklere sahip bir yapı sisteme çok fazla hakim ve suistimal edilmeye açık. Ne kadar açık kaynak felsefesine uyduğu tartışılır bir konu çünkü çok fazla  kontrol gücüne sahip.