Kategori: Linux

  • Linux’ta less çıktısını renklendirme

    Linux yöneticilerinin çoğunlukla tercih ettiği içerik görüntüleme uygulaması less genellikle text dosya içeriğini görüntüleme ve içerik içinde arama yapma için kullanılabilen hızlı ve hafif bir görüntüleyicidir.

    lessin en büyük eksikliği nano gibi dahili bir içerik renklendiricinin bulunmamasıdır. nano editöründe renklendirme işini bir iki ayar ile halledebilirsiniz. Fakar nano bir editör olduğu için her zaman dosya görüntülemek amacıyla kullanılamıyor. Özellikle çok büyük dosyalarda aşırı hantal kalıyor.

    Ancak aşağıdaki adımları takip ederek less‘te de içerik renklendirme yapabilirsiniz.

    Dikkat: Aşağıdaki adımlar Debian ve türevlerinde iş görmektedir.

    Python kütüphanesi olarak repoda bulunan ve metin renklendirme işleri için kullanılan python-pygments‘i kurarak işe başlıyoruz. Eğer repoda bu ugulama yoksa http://pygments.org/download/ adresinden edinebilirsiniz.

    python-pygments‘i kurmanın iki yolu var birisi repo’dan diğeri pip aracılığı ile. Ben sistem çapında yapılacak değişiklikler için stabiliteyi bozmamak adına repodakini kullanmayı tercih ediyorum.

    # apt install python-pygments

    Kullanıcının less uygulamasını çalıştırdığında dosya uzantılarını tanıyabilmesi için aşağıdaki betiği kullanıcı kök klasöründe oluşturun.

    # nano ~/.lessfilter

    #!/bin/sh
    case "$1" in
        *.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
        *.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
        *.lsp|*.l|*.pas|*.p|*.[xy]ml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
        *.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass|*.ini)
            pygmentize -f 256 "$1";;
    
        .bashrc|.bash_aliases|.bash_environment)
            pygmentize -f 256 -l sh "$1";;
    
        *)
            if grep -q "#\!/bin/bash" "$1" 2> /dev/null; then
                pygmentize -f 256 -l sh "$1"
            else
                exit 1
            fi
    esac
    
    exit 0

    Bu dosyayı aşağıdaki komut ile çalıştırılabilir hale getiriyoruz:

    # chmod u+x ~/.lessfilter

    Daha sonra kullanıcı kök dizinindeki .bashrc dosyasının en altına aşağıdaki satırları ekliyoruz.

    # nano ~/.bashrc

    export LESS='-R'
    export LESSOPEN='|~/.lessfilter %s'
    alias less='less -r'

    Dosyayı kaydettikten sonra değişikliklerin etkili olması için shell oturumunu yeniden açmanız gerekli. Bu dakikadan sonra açacağınız her yeni shell’de less uygulaması alakalı uzantılara denk geldiği takdirde içeriği renklendirerek gösterecektir.

  • PostgreSQL 10’u 12’ye güncelleme

    postgresql

    Notebook’umda kullandığım PostgreSQL 10 sürümü veritabanıdağıtımını sonunda 12 sürümüne çekme kararı verdim. Daha önce kullandığım işletim sistemi emrivaki yapıp 12 sürümünü yükledikten sonra güncellemeyi de kendin yap diyince, acil işim olduğundan kurulan 12 sürümünü pruge edip 10 sürümünden devam etmiştim. Ama artık Corona sağolsun evde tıkılı kaldığım şu zamanda sallamadığım güncelleme işine girişebilirim.

    Öncelikle purge ile kaldırdığım paketi yeniden kurarak işe başladım:

    # apt install postgresql-12

    Daha sonra postgres.conf ve pg_hba.conf ayarlarını 10’dan 12’ye aktarıyoruz. Bunun için iki sürümün dosyalarındaki farklara aşağıdaki gibi bakabilirsiniz:

    # diff /etc/postgresql/10/main/postgresql.conf /etc/postgresql/12/main/postgresql.conf
    # diff /etc/postgresql/10/main/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf

    Ayarları aktarma işleminden sonra çalışan postgresql servisini durdurun

    # sudo systemctl stop postgresql.service

    Servisi durdurduktan sonra yükseltme işlemini “postgres” kullanıcısı ile yapmaya başlayacağız. Bunun için “postgres” kullanıcısına geçin:

    # sudo su postgress

    Yükseltme işlemine geçmeden önce son olarak cluster’ları kontrol edelim:

    # /usr/lib/postgresql/12/bin/pg_upgrade \
    --old-datadir=/var/lib/postgresql/10/main \
    --new-datadir=/var/lib/postgresql/12/main \
    --old-bindir=/usr/lib/postgresql/10/bin \
    --new-bindir=/usr/lib/postgresql/12/bin \
    --old-options '-c config_file=/etc/postgresql/10/main/postgresql.conf' \
    --new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf' \
    --check

    Yukarıdaki komutun sonundaki “–check” anahtarı size yapılacak işlemi herhangi bir değişiklik yapmadan çalıştırıp (dry run) herhangi bir sorun olup olmayacağını gösterecektir. Eğer bir sorun görünmezse aynı komutu “–check” anahtarını silip tekrar çalıştıracağız:

    # /usr/lib/postgresql/12/bin/pg_upgrade \
    --old-datadir=/var/lib/postgresql/10/main \
    --new-datadir=/var/lib/postgresql/12/main \
    --old-bindir=/usr/lib/postgresql/10/bin \
    --new-bindir=/usr/lib/postgresql/12/bin \
    --old-options '-c config_file=/etc/postgresql/10/main/postgresql.conf' \
    --new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf'

    Bu işlemin süresi, veri tabnaının barındığı medyanın hızı, veritabanı sayısı ve boyutuna göre değişiklik gösterecektir. HDD üzerindeki ~90GB boyutundaki veritabanını aktardığımda süre tutmadım ama en az 2 saat sürdüğünü söyleyebilirim. Yükseltme işlemi bittikten sonra “postgres” kullnıcısını terk edip yeni PostgreSQL sunucu ayarlarındaki portu olması gerekn port haline getiriyoruz. Tabi eski sunucunun port ayarını da değiştirmemiz gerekiyor:

    # sudo nano /etc/postgresql/12/main/postgresql.conf

    "port = 5433" satırını "port = 5432" olarak değiştirin.

    # sudo nano /etc/postgresql/10/main/postgresql.conf

    "port = 5432" satırını "port = 5433" olarak değiştirin.

    Ve PostgreSQL servisini yenidne başlatın:

    # sudo systemctl start postgresql.service

    Şu andan itibaren sürüm 10, 5433 portundan, sürüm 12 ise standart 5432 portundan yayın yapmaya başladı. unutmayın halen 10 sürümüne geri dönebilir durumdasınız. Sadece port numaralarını değiştirerek eskiv eri tabnına erişebilirsiniz. Ya da mevcut port üzerinden bir client ile erişilebilir. Öntanımlı portta çalışan veritabanı sunucu sürümünü öğrenmek için aşağdaki komutu girebilirsiniz:

    # sudo su postgres
    # psql -c "SELECT version();"

    Yeni veritabanı için bir takım optimizasyonlar yapmak maksadıyla aşağıdaki komutu çalıştıracağız.

    # ./analyze_new_cluster.sh
    # exit

    Tebrikler. Güncellenmiş PostgreSQL ve yükseltilmiş veritabnınız kullanıma hazır.

    Bu adımdan sonra yapılacaklar eski veritabanının ve sunucusunun sistemden kaldırılması adımlarıdır. Eğer birşeylerden emin değilseniz bu adımlara geçiş yapmayın!

    # apt list --installed | grep postgresql
    # sudo apt-get remove postgresql-10 postgresql-server-dev-10
    # sudo rm -rf /etc/postgresql/10/
    # sudo su postgres
    # ./delete_old_cluster.sh
  • Linux Mint’te ikincil wireless ile HotSpot oluşturmak

    Linux mint hotspot

    Linux Mint Mate desktop’ta system tray’deki network manager’dan “Edit Connections”a tıkla.

    Gelen pencerede “+”ya tıklayıp “Hardware” başlığı altından “WiFi” seçin ve “Create”e tıkla.

    Yeni pencerede:

    • General Sekmesinde: “auto connect this network when available” seçili olmalı
    • Wifi Sekmesinde
      SSID alanına oluşturacağınız HotSpot’un adını gir
      Mode’u HotSpot yapın
      Device kısmından ikincil Wifi adaptörünü seç
    • Wifi Security sekmesinde:
      Security kısmından güvenlik seviyesini belirle (Tercihen WPA & WPA2 Personal)
      Password kısmına wifi parolası gir.
    • IPV4 Sekmesinde “Method” kısmı “Shared to other computers” olmalı

    Pencerenin en üstündeki “Connection Name”i de istersen değiştirip daha belirgin bir bağlantı adı verebilirsin.

    “Save” tuşuna tıkladığında otomatik olarak HotSpot alanı oluşacaktır.
    Başka bir cihaz ile bu bağlantıyı kullanabilirsin.

  • LVM’e yeni disk eklemek

    LVM Logical Volume Manager

    LVM (Logical Volume Manager) sisteminin en büyük artısı normal disk bölümlemeye göre dinamik bölümleme yapılabilmesidir. Aynı zamanda bir disk bölümünü birden fazla diske yayabilmek gibi güzel bir özelliğe de sahiptir. Kısaca “/” (root) bölümünü sadece bir disk kapasitesi ile sınırlamanıza gerek kalmaz. Bilgisayar bağlayacağınız fiziksel disklerin tüm kapasitesinin tamamını “/” bölümü altında toplayabilirsiniz. Elimde boşta duran 160GB genişliğindeki diski kullanıma sokmak amacıyla, mevcut LVM yöntemi ile bölümlenmiş sistemime eklemeye karar verdim. Eğer sizinde sisteminiz LVM üzerine kuruluysa ve disk alanınızı genişletmek istiyorsanız aşağıdaki örneklerde bu işlemi nasıl yapıldığını görebilirsiniz.

    (daha&helliip;)

  • Nasıl: Ubuntu sunucuda network ayarları

    Bu yazımda Ubuntu 16.04 LTS Sunucu sürümünde network ayarlarının nasıl yapılacağını aşağıdaki komut örnekleri ile göstereceğim, bu örnekte sunucuda wireless kart olduğunu varsayıyorum, zaten Ethernet bağlantısı pek sorun olmadığından sunucular için en çok wireless kartı üzerinden bağlantı nasıl yapılır sorusunun cevabı aranmakta.

    # sudo -s

    komutu ile root olduktan sonra aşağıdaki komut ile sistemimizdeki wireless kartlarını bulacağız.

    # iwconfig

    lo        no wireless extensions.

    wlan0     IEEE 802.11bg  ESSID:off/any
    Mode:Managed  Access Point: Not-Associated   Tx-Power=off
    Retry short limit:7   RTS thr:off   Fragment thr:off
    Power Management:off

    eth0      no wireless extensions.

    Görüldüğü üzere sistemimizde “wlan0” olarak tanımlanmış bir wireless kartı mevcut.

    Bu kart için “/etc/network” altında tanımlamalarımızı yapacağız, ama önce “wpa” anahtarını oluşturmamız gerek. Bunun için önce “/etc/network/interfaces.d/” klasörüne geçin.

    # cd /etc/network/interfaces.d

    Ardından şu komutu çalıştırın, SSID yerine bağlanmak istediğiniz kablosuz ağın adını yazın:

    # wpa_passphrase SSID >> wlan0.cfg

    Komutu çalıştırdığınızda alt satıra geçip beklemeye başlayacak. Bu durumda wireless parolanızı girip “enter”a basmanız gerekmekte. Bu işlemden sonra wifi key’ini wlan0.cfg dosyası içinde görebilirsiniz.

    # cat wlan0.cfg

    network={
    ssid=”SSID”
    #psk=”wifiparolasi”
    psk=8ada1f8dbea59704af379538b4d9191f6a713905d1b4cd7a72864cea685b1a7f
    }

    Bu işlemden sonra “wlan0.cfg” dosyasını düzenlemek için “nano” ile açıp  bu interface için ağ bağlantı ayarlarını yapmaya başlıyoruz:

    # nano wlan0.cfg

    Yukarıda gördüğümüz içeriğin üstü çizili olan satırlarını silmekle işe başlayacağız:

    network={
    ssid=”SSID”
    #psk=”wifiparolasi”
    psk=8ada1f8dbea59704af379538b4d9191f6a713905d1b4cd7a72864cea685b1a7f
    }

    Yukarıda gördüğümüz içeriğin üstü çizili olan satırlarını silin. Kalan satırın başını değiştirin ve şu hale getirin.

    wpa-psk 8ada1f8dbea59704af379538b4d9191f6a713905d1b4cd7a72864cea685b1a7f

    Daha sonra bu satırın üstüne aşağıdaki satırları ekleyin:

    auto wlan0
    iface wlan0 inet static
    address 192.168.1.2 #kullanılmayan bir IP adresi olmalı.
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.4.4 8.8.8.8
    wpa-ssid SSID
    wpa-psk 8ada1f8dbea59704af379538b4d9191f6a713905d1b4cd7a72864cea685b1a7f

    Dosyayı bu şekilde kaydettikten sonra aşağıdaki komut el ile çalıştırarak ağ bağlantısını sağlayabilirsiniz.

    # ifup wlan0

    Bu yöntem ile sunucuyu yeniden başlatsanız dahi boot esnasında otomatik olarak ağ bağlantısı sağlanmış olacaktır. Ayrıca eğer kablolu bağlantı kullanacaksanız “wpa” ile başlayan satırları silip “wlan0” olan interface adını ethernet interface adı ile (Örneğin eth0) değiştirmeniz yeterli olacaktır.

  • Debian 8’e sudo özelliği eklemek

    Neden Debian’da “sudo” kurulu gelmez?

    Aslında Debian’da “sudo” kurulu gelir. ancak dikkat edilmeyen bir husus var ki bu sebeple “sudo” öntanımlı olarak kurulmuyor. Bu yüzden işlerinizi “su” ile halletmeniz gerekiyor. Bu durumun önüne geçmek için “Debian” kurulumu sırasında sizden istenen “root” kullancısına parola tanımlama bölümünde “root” kullanıcısına parola tanımlamadan, parola alanını boş bırakarak o adımı geçmeniz gerekmektedir. Böylelikle sistem kurulumu tamamlandığında “sudo” özelliğine haiz bir sisteme sahip olursunuz.

    Neden “su” yerine “sudo” kullanılmalı?

    “su” kullanmanız gerekiyorsa, bu, yapılacak tüm sistem çapındaki işlemler için “root” kullanıcı “shell”ine ulaşmak için aktif bir “root” kullanıcısının olmasını gerektirir. Bu da ister istemez sistem açıklarına sebep olabilir. Aktif bir “root” hesabı hiç beklemediğiniz bir anda sisteminizde oluşan bir açıktan faydalanılmasını sağlayabilir. Bu yüzden “su” yerine “sudo” kullamanız sisteminizin güvenliği için iyi bir adımdır. Böylelikle aktif bir “root” kullanıcısı olmasa bile sistem çağında işlem yapabilmenize olanak sağlanır.

    Yüksek güvenli parolası olan bir “root” kullanıcısı olması yerine “root” işlemlerini yapabilecek başka bir kullanıcı olmasının ne gibi bir avantajı olabileceğine gelirsek;

    Her sistemde standart olarak bir “root” kullanıcısı bulunduğundan açık hedeftir. Bu yüzden saldırganlar başka kullanıcı aramakla uğraşmaz doğrudan “root” kullanıcısını hedef gözetirler, ve yapmaları gereken sadece şifresini ele geçirmektir. Aktif bir “root” kullanıcısı yoksa, saldırgan önce “root” haklarına sahip olabilen bir kullanıcı tespit etmelidir. bu da demek oluyor ki sistemdeki kullanıcı isimlerini bilmelidir (düşük bir ihtimal). Bu kullanıcıyı bulduktan sonra şifresini ele geçirmeye çalışmak zorundadır. Aktif bir “root” kullanıcısına saldırmaktan çooook daha meşakatli bir durum söz konusu olduğunu anlamışsınızdır.

    Debian 8’de “sudo” kurulumu ve “root” kullanıcısının kullanılmaz hale getirilmesi:

    Gerekli bilgileri aldığınıza ve kafadaki soru işareti bulutlarını dağıttığımıza göre bu işlemlerin nasıl yapılacağına geçebiliriz.

    En başta anlattığım gibi, eğer Debian kurulumunda “root” kullanıcısına parola tanımlamadıysanız zaten “sudo”ya sahip bir sisteminizin olması gerekmektedir. Eğer kurulum esnasında “root “kullanıcısına parola tanımladıysanız önce “sudo” komutunu kurmamız gerekmektedir. bunun için önce “root” kullanıcısı olmamız gerekmektedir.

    LocalHost$ su –
    Password:

    Daha sonra gerekli paketi kurmak gerekli:

    root@LocalHost# apt-get install sudo
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    The following NEW packages will be installed:
    sudo
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 855 kB of archives.
    After this operation, 2,390 kB of additional disk space will be used.
    Get:1 http://ftp.tr.debian.org/debian/ jessie/main sudo amd64 1.8.10p3-1+deb8u3 [855 kB]
    Fetched 855 kB in 0s (1,753 kB/s)
    Selecting previously unselected package sudo.
    (Reading database … 90343 files and directories currently installed.)
    Preparing to unpack …/sudo_1.8.10p3-1+deb8u3_amd64.deb …
    Unpacking sudo (1.8.10p3-1+deb8u3) …
    Processing triggers for man-db (2.7.0.2-5) …
    Processing triggers for systemd (215-17+deb8u4) …
    Setting up sudo (1.8.10p3-1+deb8u3) …
    Processing triggers for systemd (215-17+deb8u4) …

    Paket kurulumu tamamlandıktan sonra kendi kullanıcımızı “sudoers” listesine yani “sudo” grubuna eklememiz gerekmektedir.

    root@LocalHost# adduser kullanı_adı sudo

    Bu işlemden sonra kullanıcımızın “sudo” ile “root” haklarına sahip olabilmesi için, bu kullanıcı ile yeniden oturum açmanız gerekmektedir. Çünkü her kullanıcının grup bilgileri oturum açtığında bir kereye mahsus okunmaktadır ve oturum kapatılıp yeniden açılıncaya kadar değişiklikler etkin olmaz. Yeniden oturum açtıktan sonra aşağıdaki komut ile “sudo” komutunu kullanıp kullanamadığınızı kontrol edin:

    LocalHost$ sudo -s
    [sudo] password for kullanıcı_adı:
    root@LocalHost#

    Kullanıcınız artık “sudo” ile root yetkileri alabilecek konuma geldi. Bundan sonra aktif “root” kullanıcısını tecrit etmemiz lazım. bunun için aşağıdaki komutu kullanmanız yeterlidir:

    LocalHost$ sudo passwd -l root
    passwd: password expiry information changed.

    Eğer daha sıkı bir “root” kullanıcısı güvenliği istiyorsanız “/etc/passwd” dosyasında aşağıdaki satırda değişik yapmanız gerekmektedir.

    root:x:0:0:root:/root:/bin/bash

    Bu satırda “/bin/bash” kısmında kullanıcının login olduğu zaman hangi “shell”i kullanacağı belirtilmiş. bu “shell”i “/usr/sbin/nologin” ya da “/bin/false” ile değiştirdiğiniz takdirde kullanıcı aktif olsa bile sisteme bu kullanıcı hesabı ile giriş yapılamaz. Böylece “root” kullanıcısına ikinci bir güvenlik adımı eklemiş olduk.

     

    Bu yapılandırmadan sonra “root” kullanıcısı olmayan sisteminizde kendi kullanıcınız ile “root” işlemleri yapabilir hale gelmiş bulunmaktasınız.

  • Ubuntu linux sunucu fan kontrolü

    Ubuntu sunucu sisteminizde kafa şişiren, gereksiz hızlı dönen fanlarınızı kontrol altına mı almak istiyorsunuz? Belki de ortam sıcaklığı arttığı halde pısırık bir fanınızı var ve işini yapmıyor mu? Sisteminiz üzerinde omlet yapmadan ve kafanız daha fazla şişmeden önce bu duruma müdahale etmek ve fan kontrolü için depodan “fancontrol” paketini kuruyoruz

    # apt-get install fancontrol

    Kurulumdan sonra “pwmconfig” komutu ile “/etc/fancontrol” konfigürasyon dosyasını canlı olarak yapılandırmaya başlıyoruz.

    # pwmconfig
    # pwmconfig revision 6166 (2013-05-01)
    This program will search your sensors for pulse width modulation (pwm)
    controls, and test each one to see if it controls a fan on
    your motherboard. Note that many motherboards do not have pwm
    circuitry installed, even if your sensor chip supports pwm.

    We will attempt to briefly stop each fan using the pwm controls.
    The program will attempt to restore each fan to full speed
    after testing. However, it is ** very important ** that you
    physically verify that the fans have been to full speed
    after the program has completed.

    Found the following devices:
    hwmon0/device is coretemp
    hwmon1/device is w83627thf

    Found the following PWM controls:
    hwmon1/device/pwm1 current value: 240
    hwmon1/device/pwm2 current value: 240
    hwmon1/device/pwm3 current value: 240

    Giving the fans some time to reach full speed…
    Found the following fan sensors:
    hwmon1/device/fan1_input current speed: 2343 RPM
    hwmon1/device/fan2_input current speed: 0 … skipping!
    hwmon1/device/fan3_input current speed: 0 … skipping!

    Warning!!! This program will stop your fans, one at a time,
    for approximately 5 seconds each!!!
    This may cause your processor temperature to rise!!!
    If you do not want to do this hit control-C now!!!
    Hit return to continue:

    Fan kontrol programı kısa bir testpitten sonra bulduğu aygıtları, PWM kontrolcülerini ve Fan kontrol sensörlerini listeliyor. Listeden hemen sonra program ayar sırasında her bir fanı 5 saniyeliğine durduracağını söylüyor. Bu durum çok yük binen bazı sistemlerde krize yol açabilir. O yüzden, sisteminizin fanların durdurulması sırasındaki stresi kaldırıp kaldıramayacağından emin değilseniz bundan sonraki adımlara geçmeyiniz. Biz sıradan ev kullanıcıları için çok da dert olmasa gerek 🙂

    Enter tuşuna basıp devam ettiğinizde, hangi fanın hangi voltaj kontrolörü tarafından kontrol edildiği tespiti otomatik olarak yapılıyor ve sonrasında detaylı korelasyon ayarlarını çıkartmak isteyip istemediğinizi soruyor. Bu işlem PWM kontrolcüsüne ne emredilirse Fan kaç RPM’de dönecek bilgisini toplamaya yarıyor.

    Testing pwm control hwmon1/device/pwm1 …
    hwmon1/device/fan1_input … speed was 2343 now 1028
    It appears that fan hwmon1/device/fan1_input
    is controlled by pwm hwmon1/device/pwm1
    Would you like to generate a detailed correlation (y)?

    Evet dediğinizde fanınız değişen (düşürülen) PWM değerleri ile birlikte yavaşlamaya başlıyor:

    PWM 255 FAN 2343
    PWM 240 FAN 2220
    PWM 225 FAN 2343
    PWM 210 FAN 2109
    PWM 195 FAN 2008
    PWM 180 FAN 1757
    PWM 165 FAN 1622
    PWM 150 FAN 1360
    PWM 135 FAN 1081
    PWM 120 FAN 1004
    PWM 105 FAN 1004
    PWM 90 FAN 1004
    PWM 75 FAN 981
    PWM 60 FAN 1004
    PWM 45 FAN 1004
    PWM 30 FAN 1004
    PWM 28 FAN 1004
    PWM 26 FAN 1004
    PWM 24 FAN 1004
    PWM 22 FAN 1004
    PWM 20 FAN 1004
    PWM 18 FAN 1028
    PWM 16 FAN 1004
    PWM 14 FAN 1004
    PWM 12 FAN 1004
    PWM 10 FAN 1004
    PWM 8 FAN 1004
    PWM 6 FAN 1004
    PWM 4 FAN 1028
    PWM 2 FAN 1028
    PWM 0 FAN 1004

    Testing pwm control hwmon1/device/pwm2 …
    hwmon1/device/fan1_input … speed was 2343 now 2343
    no correlation

    No correlations were detected.
    There is either no fan connected to the output of hwmon1/device/pwm2,
    or the connected fan has no rpm-signal connected to one of
    the tested fan sensors. (Note: not all motherboards have
    the pwm outputs connected to the fan connectors,
    check out the hardware database on http://www.almico.com/forumindex.php)

    Did you see/hear a fan stopping during the above test (n)?

    Fan kontrol programı benim sunucuda nedense korelasyon bulamadığını düşünüyor. Muhtemelen donanım uyumsuzluğu söz konusu. Bu yüzden bana yukarıdaki test sırasında Fanın durup durmadığını soruyor. Ben bu soruya kulaklarıma güvenerek evet diyorum.

    Bu adımdan sonra fan kontrol programı testini tamamlandığını ve ayarları kaydetmek isteyip istemediğinizi soracak. Gerekli cevapları verip fan kontrol programının işini bitirmesini sağlıyoruz:

    Testing is complete.
    Please verify that all fans have returned to their normal speed.

    The fancontrol script can automatically respond to temperature changes
    of your system by changing fanspeeds.
    Do you want to set up its configuration file now (y)? y
    What should be the path to your fancontrol config file (/etc/fancontrol)?
    Loading configuration from /etc/fancontrol …

    Select fan output to configure, or other action:
    1) hwmon1/device/pwm1 3) Just quit 5) Show configuration
    2) Change INTERVAL 4) Save and quit
    select (1-n): 4

    Saving configuration to /etc/fancontrol…
    Configuration saved

    Ayarını yaptığımız için artık “fancontrol” servisini başlatabilir ve fanların huşû içinde dönmelerine tanık olabiliriz.

    # service fancontrol start
    * Starting fan speed regulator fancontrol [ OK ]

    Artık fanlarınızın normalde kedi gibi mırıldandığı, ancak sıcak arttıkça canavarlaşacağı bir dünyaya adım atmış bulunuyorsunuz. Sisteminize zeval gelmesin.

     

  • Transmission loglarını kontrol altına almak.

    Daha önceki yazılarımda eve torrent sunucusu kumak ile ilgili yazımı geliştirmeye devam ediyorum.

    Gel zaman git zaman kurmuş olduğumuz transmission torrent sunucusunun log’unun şişmeye başladığını keşfettik. Sebebi ise transmission sunucusunun loglarının logrotate tarafından kontrol altına alınmaması.

    Bu sorunu gidermek için “/etc/logrotate.d/” klasörü altına “transmission” adında bir dosya oluşturup içine aşağıdaki scripti eklememeiz yeterli:

    /var/log/transmission.log {
    su root root

    monthly
    rotate 3
    compress

    delaycompress
    missingok
    notifempty

    create 644 debian-transmission debian-transmission

    postrotate
    invoke-rc.d transmission-daemon force-reload > /dev/null
    endscript
    }

    Dosyayı kaydettikten sonrasında logrotate ile ilgili herhangi birşey yapmamıza gerek yok. Çünkü logrotate cronjob’a bağlı çalıştığı için her seferinde oyomatik olarak çalışıp “/etc/logrotate.d/” altındaki tüm dosyaların içeriğini çalıştırır.

    Eğer hazırlamış olduğumuz bu scripti test etmek isterseniz komut satırında aşağıdaki komutu çalıştırıp herhangi bir hata olup olmadığını çıktılardan inceleyebilirsiniz:

    # logrotate -fv /etc/logrotate.d/transmission

    Yukarıdaki scriptin satıra açıklamalarını gelirsek:

    • su: scriptin, buna bağlı oluşturulacak dosyaların ve yaılacak işerin hangi kullanıcı tarafından yapılacağını belirtir.
    • monthly: transmission için logrotate’in ne akdar sürede bir uygulanacağını belirtir. Burada ayda bir ygulanmasını istedik.
    • rotate: rotate edilen dosyaların enfalza kaç tane olabileceğini belirtiyoruz. Daha eski logları tutabilmek içi bu rakamı arttırınız. Bu örnekte ayda bir rotasyon yapılacağı için en falza 3 ay geriye dönük logları görebiliriz.
    • compress: eski log dosyalarını sıkştırarak rotate eder.
    • delaycompress: Sıkıştırma işine gecikmeli başlamayı sağlar
    • missingok: Eğer rotate edilecek dosyalarda eksiklik varsa scriptin hata vermeden devam etmesini sağlar. Bu seçenek çıkartılırsa rotasyon eksik dosyadan dolayı hata verir ve yapılmaz.
    • notifempty: Eğer log dosyasının için boş ise gereksiz yere rotasyon yapmaz.
    • chmod: Oluşturulacak yeni dosyanın sahiplik ve erişim haklarını tanımlar
    • postrotate: hemen altındaki satırda yazılı olan komutları rotasyon işleminden sonra çalıştırır. Burada invoke ile transmission servisini yeniden başlatıyoruz.
  • Linux konsolda disk imajında değişiklik yapmak

    Elinizde Banana Pi için hazırlanmış debian dağıtımı olan “bananian.img” adında bir disk imajı var diyelim. Aşağıda bu imaj üzerinde nasıl değişiklikler yapılabileceğine dair komutlar ve örnekler bulunmaktadır. Bu örneklerde imajın partition listesini görmek, dosya sistemini kontrol etmek, imajı ve içindeki partitionları genişletmek ya da daraltmak ile ilgili bilgiler vardır. Bu örnekleri uygulamadan önce imajı yedeklemek için muhakkak bir kopyasını, mümkünde başka bir yere alın. Bu örneklere bakarak yapacağını işlemler sonucunda imajda oluşabilecek hatalar ve hatta geri döndürülemeyecek bozulmalardan bu yazıyı yazan yazar sorumlu değildir.

     

    “bananian-1508..img” imajını mount etmeden önce içinde ne tip ve kaç tane partition var bakalım:

    fdisk -l bananian-1508.img

    Disk bananian-1508.img: 1899 MB, 1899999744 bytes
    255 heads, 63 sectors/track, 230 cylinders, total 3710937 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0ccea0b3

    Device Boot Start End Blocks Id System
    bananian-1508.img1 2048 43007 20480 83 Linux
    bananian-1508.img2 43008 3710936 1833964+ 83 Linux

    Görüldüğü üzere imaj dosyamızda iki adet partition bulunmaktadır. Bu bölümlerden bananian-1508.img1 olanı “/boot” partition’ı ve bananian-1508.img2 olanı da “/” partition’ı.  Bu dağıtıma birşeyler eklemek istedik ancak “/” partition’ında kullanılacak alan kalmamış. bu yüzden alanı genişletmemiz gerekiyor. (Bu durumda artık imaj dosyasını en az 4GB bir belleğe yazabileceksiniz)

    Bölümü genişletmek için öncelikle imaj dosyasını genişletmek gerekmekte. Elimizdeki imaj dosyasının boyutlarına bir bakalım:

    qemu-img info bananian-1508.img
    image: bananian-1508.img
    file format: raw
    virtual size: 1.8G (1900000256 bytes)
    disk size: 1.8G

    Raw image dosyamızın boyutu 1.8GBmış. Şimdi bu dosyayı genişletelim:

    #qemu-img resize bananian-1508.img +2.2GB
    Image resized.

    Yukarıdaki komut ile img dosyasının mevcut boyutunu 2.2GB daha genişlettik yani 1.8GB + 2.2GB = 4GB oldu.

    # qemu-img info bananian-1508.img
    image: bananian-1508.img
    file format: raw
    virtual size: 4.0G (4262232576 bytes)
    disk size: 1.8G

    Şimdi raw img dosyası içindeki “/” bölümünü genişletmeye başlamadan önce dosya sisteminin temiz olup olmadığını kontrol edip hatalar var ise düzeltmemiz gerekmekte. Aksi takdirde partition genişletme işlemi sırasında veri kaybına sebep olunabilir. Dosya sistemini kontrol etmek için önce “/” partition’ını loopback olarak bağlamamız gerekiyor:

    losetup -o $((512 * 43008)) /dev/loop0 bananian-1508.img

    Yukarıdaki komutta -o anahtarından sonra yazan $() ve içindeki kısımın açıklaması şu şekilde: $() = içerikteki işlemi yap ve sonucu ver (512 * 43008). Buradaki 512 yukarıda fdisk çıktısında bulunan “Units = sectors of 1 * 512 = 512 bytes” satırındaki 1 sektördeki toplam byte sayısını ve 43008 rakamı da bananian-1508.img2 partition’ının başlangıç sektörünü ifade eder.

    Böylelikle “bananian-1508.img” imajı içindeki “bananian-1508.img2” partition’ınını “/dev/loop0” aygıtına bağlamış bulunduk. Şimdi bu aygıt üzerinden dosya sistemini kontrol edeceğiz.

    fsck -fvp /dev/loop0

    Yukarıdaki komutun anahtarlarına bakacak olursa “f” bölüm temiz olarak işaretlenmiş olsa da kontrol et, “v” çıktılar açıklayıcı olsun, “p” eğer hata bulursan bana sormadan düzelt anlamlarını taşımaktadır. Eğer herhangi bir hata yoksa çıktı aşağıdaki gibi olacaktır:

    fsck from util-linux 2.20.1

    18329 inodes used (15.98%, out of 114688)
    15 non-contiguous files (0.1%)
    29 non-contiguous directories (0.2%)
    # of inodes with ind/dind/tind blocks: 0/0/0
    Extent depth histogram: 16003/4
    245346 blocks used (53.51%, out of 458491)
    0 bad blocks
    1 large file

    14230 regular files
    1624 directories
    12 character device files
    25 block device files
    0 fifos
    2 links
    2429 symbolic links (2276 fast symbolic links)
    0 sockets
    ————
    18322 files

    Dosya sistemini kontrol ettiğimize göre şimdi bölümü genişletebiliriz. Bu işleme başlamadan önce bölümü loopback’ten çıkartmamız lazım. öncelikle loopbackte neler varmış onu kontrol edelim:

    losetup -a
    /dev/loop0: [0811]:7874548 (/media/Home/sencer/Downloads/Bananian/bananian-1508.img), offset 22020096

    Görüldüğü üzere sadece bağladığımız partition görünüyor. Bazen yanlışlıkla iki kere bağlamış olabiliyorum bu durumda aynı satırdan “/dev/loop1” olarak bir tane daha altında görünür.

    losetup -d /dev/loop0

    Şimdi imajın partitonlarını genişletmek için tam olarak disk gibi görünmesini sağlamamız lazım. Bunun için img dosyasını bağladıktan sonra partitionları da maplememiz gerekiyor. Bunu yapmanın kolay yolu “kpartx” komutu ile imajı loopback device’a bağlamak.

    kpartx -a -v bananian-1508.img
    add map loop0p1 (252:0): 0 40960 linear /dev/loop0 2048
    add map loop0p2 (252:1): 0 3667929 linear /dev/loop0 43008

    Gördüğünüz üzere komut otomatik olarak partitionları mapledi.

    Bundan sonra parted resize ile /dev/loop0 diskini açıp genişletmek istediğiniz bölümü elden geçirebilirsiniz. Baktınız aşağıdaki şekilde hatalar mı veriyor, “gksu gparted /dev/loop0” ile grafik ekranda gparted ile de değişiklikleri yapabilirsiniz.

    Örnek hata: “Error: File system has an incompatible feature enabled. Compatible features are has_journal, dir_index, filetype, sparse_super and large_file. Use tune2fs or debugfs to remove features.”

    Resize işleminiz bittikten sonra aşağıdaki komut ile imaj dosyasını loopback devicelardan ayırabilirsiniz:

    kpartx -vd bananian-1508.img
    del devmap : loop0p2
    del devmap : loop0p1
    loop deleted : /dev/loop0

  • Intel Atom D510MO linux sensör ayarları

    Linux altında anakart, işlemci ve psu değerlerini ölçmek için kullandığımız lm-sensors paketi normalde pek çok sensörü otomatik olarak tanıyor ve kritik eşiklerin dışında bir veri algılarsa uyarı verebiliyor. Fakat kullandığımız ev sunucusundaki Intel Atom D510MO model anakarttaki sensörleri doğru okusa da tam olarak desteklenmediği için uygun kritik eşik şablonu kullanmamakta.

    Bu yüzden # sensors komutu ile çıktıları incelediğimizde sensörlerden gelen veriler doğru olsa da kritik eşik değerleri yanlış olduğunda, çıktıda “ALARM” görüyor olabilirsiniz. Korkmayın, aslında anakrtta bir sorun yok (tabi doğru voltajı alıyor ve yeterince soğutuluyorsa). Bu sorunu gidermek için aşağıdaki sensors şablonunu kullanmamız gerekmekte.

    Intel Atom D510MO linux sensör ayarları için sensors şablonunu değiştirmeden önce “/etc/sensors3.conf” dosyasının yedeğini alın her ihtimale karşı. Daha sonra asıl dosyanın içeriğini “# >sensors3.conf” komutu ile boşaltın. Daha sonra herhangi bir editör ile aşağıdaki şablonu dosyaya yazıp kaydedin. Son olarak sistemi yeniden başlatın ya da “# sensors -s” komutunu çalıştırın.

    chip “w83627thf-*” “w83637hf-*”
    label in0 “VCore”
    label in3 “+5V”
    label in4 “+12V”
    label in5 “-12V”
    label in7 “V5SB”
    label in8 “+3.3V”

    compute in3 ((34/51)+1)*@, @/((34/51)+1)
    compute in4 ((25/10)+1)*@, @/((25/10)+1)
    compute in7 ((6.8/10)+1)*@ , @/((6.8/10)+1)

    ignore in1
    ignore in2
    set in3_min 5.0 * 0.95
    set in3_max 5.0 * 1.05
    set in4_min 12 * 0.90
    set in4_max 12 * 1.10
    set in7_min 5 * 0.95
    set in7_max 5 * 1.05
    set in8_min 3.0 * 0.80
    set in8_max 3.0 * 1.20

    label temp2 “CPU Temp”
    label temp1 “M/B Temp”

    set temp1_max 60
    set temp1_max_hyst 56
    set temp2_max 80
    set temp2_max_hyst 75
    ignore temp3

    label fan1 “CASE Fan”

    set fan1_min 400
    ignore fan2
    ignore fan3

    set beep_enable 1

    Bundan sonra sensors komutu doğru sonuçları verecektir.