2019-04-26

pureline

Renksiz bir linux terminali yerine daha renkli bir terminal elde etme yolundaki ilk çalışmamın ardından Reddit'te şu gönderi ilginç geldi.

Daha önce PowerLine'ı denemiştim, ama amaca göre biraz aşırı doz izlenimi yarattığı için çok ilgimi çekmemişti. Pureline daha sade. Hoşuma gitti. Github sayfasında bazı şeyler anlatılmış, ama biraz daha açıklama fena olmaz herhalde.

Profil klasörümün altında github repo'sunun kopyasını yarattım:

# git clone https://github.com/chris-marsh/pureline

Bu şekilde ~/pureline klasörü yaratıldı, ve altına ilgili dosyalar indirildi. Bu klasörün altında bir de configs diye bir alt klasör var. Burada örnek bazı yapılandırmalar verilmiş. Bunlardan en fazla göstergesi (ya da modül) olan powerline_full_256col.conf dosyasını profilimin altına kopyaladım.

# cp ~/pureline/configs/powerline_full_256col.conf ~/.pureline.conf

Daha sonra da Github sayfasında önerilen, .bashrc ya da .profile dosyasına şu satırları eklemek:

if [ "$TERM" != "linux" ]; then
    source ~/pureline/pureline ~/.pureline.conf
fi


Bundan sonra eğer açıksa terminali kapatıp yeniden açmak lazım. Şu şekilde bir terminal görünecektir:


Burada gözüken göstergeleri (modülleri) değiştirmek/düzenlemek için ~/.pureline.conf dosyasıın açmak gerek. Her göstergenin ~/pureline/pureline dosyası içinde bir fonksiyonu var. ~/.pureline.conf içinde ise şu bölüm altında kullanılan göstergeler belirleniyor:

# All modules are enabled. Uncomment/comment to enable/disable a module
declare -a PL_MODULES=(
    # Module                Background  Foreground
    'time_module            MyLightGrey Black'
    'battery_module         MyBlue      Black'
    'user_module            MyLime      Black'
    'ssh_module             MyYellow    Black'
    'virtual_env_module     MyBlue      Black'
    'path_module            MyBlue      Black'
    'read_only_module       MyRed       White'
    'background_jobs_module MyPurple    White'
    'git_module             MyGreen     Black'
    'return_code_module     MyRed       White'
    'newline_module'
    'prompt_module          MyDarkGrey  White'
)


İlk sütun dosyadaki fonksiyon ismi. İkinci sütun göstegenin fon rengi, üçüncü sütun ise font rengi. Örneğin terminalde zamanı yazdığımız bölüm için fon rengi MyLightGrey, yazı rengi olarak da Black kullanılmış. Bu satırın baştan sona tek tırnak arasında yazıldığına dikkat!

İstenmeen modüller çıkartılıp, yerleri değiştirilebilir, hatta yenileri yazılabilir.

2019-04-23

git işleri

Git konusuna yabancıyım. Bu kısa giriş ilk başlayanlar için faydalı olabilir.

Elimizde bir proje var. Bunun üzerinde çalışıyoruz. Sürekli değişiklikler yapıyoruz. Yaptığımız değişikliklerin sürümlerini denetlemek istiyoruz. Hatta ortak çalışacak kişilerle birlikte kod paylaşımı yapabilmeyi, belki de açık kaynak kodlu projemizin başkalarının çalışmalarına taban olmasını umuyoruz. Bu amaçla git gibi bir sürüm kontrol sistemi kullanabiliriz.

Önce bir klasör oluşturup bunu git init ile "ilklendirelim". Sonrasına proje oluşurken bu klare yeni dosyalar da eklenecek. İşin bir noktasında uygun gördüğümüz dosyaları git add komutu ile hazırlık aşamasına (staging area) ekleyebiliriz. Bu aşamada henüz sürüm denetim sistemine dahil olan birşey yok. İstenen dosyalar eklendikten sonra hazırlık aşamasındaki dosyaların tümünü git commit komutu ile sürüm kontrol sistemine dahil edebiliriz. Bu adımdan sonra yerel bir depomuz (repository) oldu. Bu depoyu bir internet deposuyla eşzamanlı hale getirmemiz mümkün. Bunun için önce git remote add komutuyla önce bir uzak depo eklememiz, daha sonra da git push komutu ile yerel depomuzu uzaktakiyle eşzamanlı hale getirmemiz gerek.

İlk git yapılandırması için bir kullanıcı adı bir de eposta adresi gerek. İlk yapılandırma şöyle:

# git config --global user.name "kullanıcıadınız"
# git config --global user.email "eposta@adresiniz.com"

Mevcut ayarlarımızı ve ayarların nerden geldiğini görmek istersek:

# git config --list --show-origin
file:/home/metin/.gitconfig     user.name=kullanıcıadınız
file:/home/metin/.gitconfig     user.email=eposta@adresiniz.com


ya da tek tek bu bilgileri görmek için:

# git config user.name
kullanıcıadınız

olabilir.

İlk ayarlar yapıldı. Şimdi bir klasör yaratalım

# mkdir ~/Belgeler/git/proje1
# cd ~/Belgeler/git/proje1

ve bu klasörü git işlemleri için ayarlayalım (initialize). Bu işlem ile proje1 klasörünün içinde bir .git alt klasörü oluşturulur ve bu klasörün içinde projeye dahil edilen belgeler için sürüm denetlemesi (version control) yapılabilmesi mümkün olur:

# git init

Diyelim ki bu klasördeki tüm txt dosyalarını projeye dahil etmek istiyoruz. Bu durumda verilecek komut:

# git add *.txt

Yapılan değişklikler de git add ile kapsam içine alınmalı. Son olarak değişiklikleri işlemek için git commit kullanılır.

# git commit -m "tum txt dosyaları eklendi"

Burada -m ile son commit ile yapılan işlerin kısa bir özeti verilir, daha sonra geriye dönüp ne yapıldı diye bakılması durumuna karşı.

Buraya kadar yapılanların tümü yerel bilgisayar üzerindeydi. Şimdi oluşturulan verilerin örneğin Github'a senkronize edilmesine bakalım. Öncelikle Github üzerinde bir repository oluşturmamız gerek. Ben BuyukProje diye bir repository oluşturdum. Şimdi mevcut klasörü bu repository ile ilişkilendirmemiz gerek. Repository'nin adresin kopyalayıp aşağıdaki en son alana yapıştırıyorum.

# git remote add BuyukProje http://github.com/kullaniciadi/repository-adi.git

En son olarak commit edilen değişikliklerin git sunucusuna aktarılması için de

# git push -u BuyukProje master

komutu kullanılır. Bu aşamada Github kullanıcı adı ve şifresi istenebilir.

Yapılan işlerin bir kaydını görmek için

# git log

veya mevcut durumun bilgisini almak için

# git status

Hangi uzak sunucuları yapılandırdığımızı görmek için

# git remote

kullanılır. -v anahtarı ile URL ayrıntıları görüntülenebilir.

Öte yandan mevcut bir repository'nin kopyasını çıkarmak/indirmek istiyorsak şu komut kullanılır:

# git clone http://github.com/kullanıcı/proje3

Bu şekilde mevcut klasörün içinde proje3 alt klasörü oluşturulur ve içerik bu alt klasörün içinde yaratılır. Eğer sizin diskinizdeki alt klasör adının proje3'ten farklı birşey olmasını istiyorsak en sona bu klasör ismini yazabiliriz. Her iki durumda git init'te olduğu gibi bir .git alt klasörü daha yaratılarak sürüm denetimi için gerekli veriler burada depolanır.

Üzerinde değişiklik yapılan bir dosyanın tüm değişikliklerini geri alıp, en son repository'den alınan haline geri getirmek için ise

# git reset --hard

gibi birşey buldum, benim çok işime yaradı.

--
https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History
https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes

2019-04-17

Google'ın adil olmayan oyunları

Büyük abimiz Google ile ilgili komplo senaryoları her yerde. Öte yandan hayatımızın her noktasına nüfuz eden hizmetleri ile artık neredeyse vazgeçilmez konuma geldi. Ama artık toplu olarak bir Google perhizi yapmamızın zamanı geldi. Alternatif arama motoru DuckDuckGo, Google Chrome'a alternatif Firefox, Android'e yerine LineageOS, artık ne varsa...

Ben de bunları bir Google platformundan paylaşıyorum, bu da garip aslında. Belki de alternatif WordPress'e falan taşımalıyım.

En son Reddit'te rastladığım bir haber üzerine iyice tedirgin oldum. Firefox'un eski geliştirici kadrosundan olduğu söylenen Johnathan Nightingale'in Tweet'leri küçük bir deprem etkisi yaratmış durumda. Zdnet'teki haberde de doğrulanan bilgiler çok ciddi suçlamalar.

Nightingale'e göre yıllarca Google, kendi ürünü Google Chrome'u öne çıkarabilmek için Firefox ile oynayıp durmuş. Üstelik de bunu yaparken "Aa pardon, kusura bakmayın, yanlışlıkla oldu. Firefox ile aynı taraftayız elbette, sizi destekliyoruz" gibi yalan tepkiler ile göz doldurmuş.

Reddit'in r/firefox sub'ında Google ile çeşitli komplo senaryoları paylaşılıyor.

İnternet tarayıcısını seçme özgürlüğü internet üzerindeki en temel haklardan biri olmalı. Arabanı seçebilmek, telefonunu, yediğin yemeği seçebilmek gibi birşey bu. Ama gelinen durum şu ki, yeni kurulan bir bilgisayara ilk yüklenen yazılımlardan biri Google Chrome oluyor. Google garip bir şekilde hem teknoloji ile yakından ilgilenen kesimin, hem de bilgisayarı sadece sosyal ağlara bağlanmak için kullanan kişilerin ilgisini çekerek Chrome'u herkesin gözüne soka soka dünyanın en çok tercih edilen tarayıcısı yapmış durumda. Üstüne Microsoft'un Edge'in mevcut motorunu bırakarak Chromium tabanlı bir sürüme geçiyor olması, piyasadaki chromium tabanlı tarayıcıların oranını iyice artıracak.Standartları Google'ın güdümündeki Chrome/ium belirleyecek. Zaten yapılmaktaydı, Google'un sunduğu sayfalarda Firefox'un performansı bilerek ama yanlışlıkla oldu denilerek düşürülecek. Biz de "Bu Firefox da ne kötü oldu ya" deyip diğer tarafta geçmeyi mantıklı bulacağız.

2019-03-28

GRUB kurtarma

Dual boot sistemler, Windows güncellemeleri ve daha bir çok etken sebebiyle grub bozulur. Bu normal.

Çoğu zaman düzeltmek için iki yol vardır:
  1. CD/USB gibi başka bir ortamdan açarak chroot ile grub'ı tekrar oluşturmak
  2. grub etkileşimli kabuğa (interactive shell) erişerek sistemi bir şekilde açtıktan sonra grub'ı tekrar oluşturmak

Elbette bazı terimleri açıklamak gerek. Artık 2 farklı sistem var. Birincisi eski ama hala var olan MBR diskler. Bunlar BIOS sistemler ile kullanılır. Diskin ilk sektöründe MBR olarak adlandırılan bir bölüm bulunur. Bu bölümün boyutu 512 byte'tır. MBR'nin ilk 446 byte'lık bölümü boot loader, geri kalan 66 byte ise disk bölümü tablosudur (partition table). İkinci sistem BIOS sistemlerin yeni sürümü sayılabilecek UEFI sistemler. UEFI sistemler bu yazının konusu değil.

Herşey yolundayken MBR sistemlerin boot loader'ın (veya MBR'nin) yedeği alınabilir.

$ sudo dd if=/dev/sda bs=446 count=1 of=/root/backup.bin
Burada diskin sda olduğu varsayıldı. Yukarıdaki satır boot loader'ın yedeğini alarak /root klasörü altındaki backup.bin dosyasına kopyalar. Bu dosyanın uzantısı önemli değil. Uzantısı olmak zorunda bile değil. Sadece boot loader değil, bütün MBR'nin (partition table dahil) bir yedeğini almak için 446 yerine 512 yazılmalıdır. Zamanı geldiğinde bu yedeği kullanarak boot loader'ı tekrar oluşturmak için şu komut kullanılabilir:
$ sudo dd if=/root/backup.bin of=/dev/sda bs=446 count=1
Yine elimizde tüm 512 byte'lık bölüm varsa buradaki size parametresini de ona göre değiştirebiliriz. Eğer bilgisayar açılış sırasında aşağıdaki bir ekranda kaldıysa boot loader (ön yükleyici mi desek?) bozulmuş demektir. Yukarıdaki komutları uygulayabilmek için bilgisayarı bir CD veya USB bellek ile bir linux ortamına açmış olmak gerekir.


1. CD/USB ile açarak

Elimizde diskin ilk bölümünün bir yedeği yoksa burayı tekrar yazmak gerek. Bunun için bir linux CD'si veya USB canlı ortamıyla açmak gerek. İlk iş fdisk ile diskin bölümleri hakkında bilgi toplamak olabilir.

# fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048  3999743  3997696  1.9G 82 Linux swap / Solaris
/dev/sda2       4001790 41940991 37939202 18.1G  5 Extended
/dev/sda5       4001792 41940991 37939200 18.1G 83 Linux


Benim test ortamımda yukarıda görülebileceği gibi linux sda5'te kurulu. sda1 ise swap bölümü.

Yapılacak iş, sda5'i mount etmek, ardından da şu anda açık olan canlı linux ortamındaki dev, sys ve proc klasörlerini sda5'in içindeki ilgili klasörlere bağlamak. Bunun için şu adımlar gerekli.
# mount /dev/sda5 /mnt
# mount --bind /dev/ /mnt/dev/
# mount --bind /sys/ /mnt/sys/
# mount --bind /proc/ /mnt/proc/
Bu aşamadan sonra chroot kullanılarak sda5'te kurulu linux ortamında sanal bir root oturumu oluşturuyorum:
# chroot /mnt/
Şimdi grub'ı tekrar yazabilirim:
# grub-install /dev/sda5

2. GRUB interactive shell

Açılış önyükleyicisinin çalıştığı ama linux çekirdeği veya initrd ile ilgili sorunların olduğu durumlarda aşağıdaki gibi bir ekran görüntülenir.


Bu durumda herhangi bir tuşa basıldığında yine grub boot menüsü görüntülenir, ama varsayılan boot menüsü girişinden bir sonuç alınamaz. "Advanced Boot Options" altında yer alan bir önceki çekirdek ile açma denenirse sonuç olumlu olabilir. Ama bunların hiçbiri işe yaramadıysa, veya yeni bir linux kurulumu sonrası önceki linuxa ait disk bölümü hiç algılanmadıysa grub boot menüsü görüntülendiğinde "e"ye basılarak boot menüsünü düzenleme moduna veya "c"ye basılarak etkileşimli grub kabuğuna (interactive shell) girilebilir. Örnek bir kurtarma şöyle olabilir:

Disklerin ve bölümlerin listelenmesi

grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)
Disk numaralama 0'dan başlar. Ama disk bölümü numaralama 1'den başlar. msdos5 yazdığı aslında ext4 bir dosya sistemi.

Bir bölümün içeriğinin listelenmesi

grub> ls (hd0,5)/
lost+found etc/ media/ bin/ boot/ dev/ ...
hatta boot klasörünün içeriğini görüntülemek
grub> ls (hd0,5)/boot/
vmlinux-4.18...
initrd.img-4.18...
Birden fazla linux kurulu olan bir diskte işlem yaparken hangi kurulumda olduğumuzdan emin olmak için birçok kurulumda var olan /etc/issue dosyasını kullanabiliriz:
grub> cat (hd0,5)/etc/issue
Ubuntu 18.10  \n \l
Emin olduktan sonra /boot/grub/grub.cfg dosyasının konumunu prefix ile belirleyebiliriz:
grub>  set prefix=(hd0,5)/boot/grub
Son olarak söz konusu linux kurulumu için kök disk bölümününü (root partition) belirleyebiliriz:
grub> set root=(hd0,5)
Bundan sonra normal modülünü yükleyerek sistemi tekrar başlatabiliriz.
grub> insmod normal
grub> normal

Son sözler

Grub menüsü gözüküyor mu?
  • Gözükmüyorsa grub2-install ile tekrar yazmalı.
  • Gözüküyor ama seçim yaptıktan sonra boot etmiyorsa grub.cfg ile ilgili sorun olabilir; grub2-mkconfig kullanılmalı.
Grub menüsünü hangi linux kurulumu yazmış olabilir? Grub menüsünde en üstte listelenen linux dağıtımı. Peki bu arkadaş hangi disk bölümündedir? Grub menüsünde o öğe seçiliyken e'ye basarak edit moduna girip öğrenebiliriz.

2019-03-25

Manjaro mirrorlist

Manjaro'da güncellemelerin  indirilmesini ve depolardan başka paketlerin kurulmasını sağlayan pacman sunucuları coğrafi olarak yedekli bir yapıda, çoğu linux dağıtımında olduğu gibi. Depolarla ilgili işlemler çok yavaş ilerliyorsa (bir program kurmak veya güncellemeleri kurmak gibi) yapılabilecek şey mirror adı verilen (asıl sunucunun ayna kopyası anlamında) listeyi güncellemek. Mevcut liste
/etc/pacman.d/mirrorlist 
klasröründe görülebilir. Varsayılan olarak benim sistemimde şöyleydi:

##
## Manjaro Linux default mirrorlist
## Generated on 2018-11-29 11:30
##
## Please use 'pacman-mirrors -f [NUMBER] [NUMBER]' to modify mirrorlist
## (Use 0 for all mirrors)
##
 

## Country : Germany
Server = https://mirror.netcologne.de/manjaro/stable/$repo/$arch

## Country : France
Server = http://kibo.remi.lu/stable/$repo/$arch

## Country : Philippines
Server = http://mirror.rise.ph/manjaro/stable/$repo/$arch

## Country : Singapore
Server = https://mirror.0x.sg/manjaro/stable/$repo/$arch

## Country : South_Korea
Server = http://mirror.d-tl.com/manjaro/stable/$repo/$arch

## Country : Hong_Kong
Server = http://ftp.cuhk.edu.hk/pub/Linux/manjaro/stable/$repo/$arch

## Country : Japan
Server = http://ftp.riken.jp/Linux/manjaro/stable/$repo/$arch

## Country : United_Kingdom
Server = http://repo.manjaro.org.uk/stable/$repo/$arch


Manjaro ile gelen pacman-mirrors komutu bu dosyayı istenen şekilde güncellemek için bazı kolaylıklar sağlıyor. Örneğin listemizin sadece anlık olarak en iyi erişime sahip 5 sunucudan oluşmasını istiyorsak
$ sudo pacman-mirrors --fasttrack 5
kullanabiliriz. Benim sistemimde şöyle bir çıkış üretti:

::INFO Downloading mirrors from repo.manjaro.org
::INFO Using default mirror file
::INFO Querying mirrors - This may take some time
  0.548 Germany        : http://mirror.ragenetwork.de/manjaro/
  0.624 Germany        : https://manjaro.moson.eu/
  0.390 Germany        : http://manjaro.moson.eu/
  1.565 Kenya          : https://manjaro.mirror.liquidtelecom.com/
  0.944 Kenya          : http://manjaro.mirror.liquidtelecom.com/
  0.425 United_Kingdom : http://manjaro.mirrors.uk2.net/
  2.387 Singapore      : https://mirror.0x.sg/manjaro/
  1.453 Singapore      : http://mirror.0x.sg/manjaro/
  ..... Singapore      : ftp://mirror.0x.sg/manjaro/
::INFO Writing mirror list
::Germany         : https://manjaro.moson.eu/stable
::United_Kingdom  : http://manjaro.mirrors.uk2.net/stable
::Germany         : http://mirror.ragenetwork.de/manjaro/stable
::Kenya           : https://manjaro.mirror.liquidtelecom.com/stable
::Singapore       : https://mirror.0x.sg/manjaro/stable
::INFO Mirror list generated and saved to: /etc/pacman.d/mirrorlist


Kırmızı ile vurgulanan yerlerde sırasıyla sunucu listesini Almanya, Birleşik Krallık, Almanya, Kenya ve Singapur sunucularından oluşturarak yazdığını belirtiyor. Bundan sonra uygulanacak bir güncellemenin daha hızlı olması beklenir.

Eğer en hızlı sunucu Türkiye'deki sunucudur diyorsak sadece Türkiye sunucusunu kullanmak için şöyle bir komut verebiliriz.:
$ sudo pacman-mirrors --country Turkey
bu komut da şöyle bir çıktı üretti:

::INFO Downloading mirrors from repo.manjaro.org
::INFO User generated mirror list
::------------------------------------------------------------
::INFO Custom mirror file saved: /var/lib/pacman-mirrors/custom-mirrors.json
::INFO Using custom mirror file
::INFO Querying mirrors - This may take some time
  0.338 Turkey         : http://ftp.linux.org.tr/manjaro/
  0.729 Turkey         : ftp://ftp.linux.org.tr/manjaro/
::INFO Writing mirror list
::Turkey          : http://ftp.linux.org.tr/manjaro/stable/$repo/$arch
::INFO Mirror list generated and saved to: /etc/pacman.d/mirrorlist
::INFO To reset custom mirrorlist 'sudo pacman-mirrors -id'
::INFO To remove custom config run  'sudo pacman-mirrors -c all'


veya olası ülkeleri listelemek için
$ pacman-mirrors --country-list

kullanılabilir.

Gördüm ki Manjaro, Arch Linux gibi reflector kullanmıyormuş.

Ekleme 2021-08-12 : https://archlinux.org/mirrorlist/ sayfasından çevrimiçi mirrorlist dosyası oluşturulabiliyormuş.

Ekleme 2023-06-10: --default anahtarı ile varsayılan mirror dosyası ayarlanabiliyormuş.

2019-03-12

Linux'ta açık bir pencerenin PID'sini ve süreç adını bulma

Manjaro'da kurulu uygulamaların arasında yer alan Microsoft Excel Online'ı görüp ne olduğuna bakmak istedim. Aşağıdaki gibi bir ekran açıldı.


Microsoft Excel Online olarak çalılşan programın ne olduğunu merak ettim. Bu gibi durumlarda xprop'u (Property Displayer for X) kullanıyorum. Komut satırından

$ xprop _NET_WM_PID

çalıştırıyorum. Bundan sonra farenin okuyla bu pencerenin içine tıklıyorum. Bana farenin altındaki pencerenin PID'sini veriyor.

_NET_WM_PID(CARDINAL) = 1330

Bundan sonra da ps ile 1330 numaralı sürecin ne olduğuna bakmak kalıyor.

$ ps -p 1330 -o pid,command
   PID COMMAND
  1330 python3 ./ms-excel-online


Demek bir python betiğiymiş. Acaba ms-excel-online nerede?

$ locate ms-excel-online
/usr/share/ms-office-online/excel/ms-excel-online

Bunu da ilk defa bir linux dağıtımında görüyorum. LibreOffice falan varken Microsoft Office'in online sürümüne ait linkler... Linux da Microsoft'u seviyor mu acaba?

2022-01-20 ek: Şu sayfada konu enine boyuna tartışılmış. Alternatif yöntem olarak xdotool önerilmiş. Kurulu değilse Fedora için aynı isimli paketi kurabiliriz. Kullanım şöyle:

$ xdotool selectwindow getwindowpid

Xfce'de görev yöneticisinin (xfce4-taskmanager) araç çubuğunda bulunan "artı" işaretine benzeyen buton tıklandığında da benzer şekilde çalışan pencerenin seçilerek görev yöneticisindeki çalışan süreçler listesindeki satırına odaklanılması sağlanıyor. X yerine Wayland kullanan bir sistemde şu sayfada lg (looking glass) önerilmiş.

tcplay kullanımı

Truecrypt'ten ses seda yok. Uzun süredir güncellenemeyen programın yerine artık alternatifleri değerlendirme zamanı geldi.

Archlinux Wiki'sinde tcplay gözüme çarpmıştı, cryptsetup ve Veracrypt'in yanısıra. tcplay'i denemeye karar verdim. Kurulum basit:

$ sudo pacman -S tcplay

Bundan sonra elimizdeki örneğin tcvolume.tc adındaki bir truecrypt birimini örneğin /mnt klasörüne bağlamak için şu komut dizileri gerek:

$ sudo losetup /dev/loop0 tcvolume.tc
$ sudo tcplay -m tcvolume.tc -d /dev/loop0
$ sudo mount -o nodev,nosuid,uid=100,gid=100 /dev/mapper/tcvolume.tc /mnt

İşimiz bittikten sonra da kaldırmak için

$ sudo umount /mnt
$ sudo dmsetup remove tcvolume.tc
$ sudo losetup -d /dev/loop0

Buradaki kritik nokta loop0. Şuradaki bilgiye göre yeni linux çekirdeklerinde açılışta varsayılan olarak loop modülü yüklenmiyor. Dolayısıyla loop0, loop1 vs yok. Bunları yaratmak gerek. Önce

$ sudo modprobe loop

(eğer her açılışta bunu yapmasını istiyorsak

$ sudo tee /etc/modules-load.d/truecrypt.conf <<< "loop"

daha iyi olacaktır)

ile loop modülünü yüklemek, ardından da örneğin 4 tane /dev/loop# yaratmak gerek:

$ echo "options loop max_loop=4" > /etc/modprobe.d/eightloop.conf

Bunu bir shell script'i ile yapmak
Yukarıdaki işlemer her dosya için ayrı ayrı oldukça uğraştırıcı olur. Onun için az biraz kısatılmış hali şöyle bir bash script'i ile olabilir:

tcmount.sh
#!/bin/bash
sudo losetup /dev/loop$1 $2
sudo tcplay -m $2 -d /dev/loop$1
sudo mount -o nodev,nosuid,uid=1000,gid=1000 /dev/mapper/$2 $3


tcumount.sh
sudo umount $3
sudo dmsetup remove $2
sudo losetup -d /dev/loop$1


Örnek olarak yine tcvolume.tc dosyasını /mnt klasörüne bağlamak için:

$ sudo tcmount.sh 0 tcvolume.tc /mnt

ve bağlantıyı kesmek için ise

$ sudo tcumount.sh 0 tcvolume.tc /mnt

kullanmak gerek. Aynı anda birden fazla dosyanın bağlanması ihtimaline karşı loop için de bir parametre kullandım. Gerekli görülmezse $1 silinerek giriş argümanı sayısı 2'ye düşürülebilir.