Busybox: Küçük docker image'ların arkasındaki İsviçre çakısı
HTML-код
- Опубликовано: 2 окт 2024
- Videonun editing'ini yaparken boyutu yanlış ayarlamışım, kenardaki boşluklar için kusura bakmayın. :)
Daha fazla bilgi: busybox.net/
► Kanala Abone olup bildirimleri açmayı unutmayın!
► Sorularınızı videolara yorum olarak ekleyin ve tartışalım.
► Canlı yayınlardan haberdar olmak için:
Twitter: / ahmetb
Discord: bit.ly/ahmetb-...
Telegram: bit.ly/ahmetb-... gruplarımıza katılın.
bizim isvicre cakisi da sensin heralde :)
Bu hıza hayranım :D
Bu tarz içerikleri aktardığın için teşekkürler. Bu video'dan bağımsız bir soru sormak istiyorum; Kubernetes, tcp socket bazlı uygulamalar için mantıklı bir teknoloji mi? Teşekkürler
vay bee
busybox alt komutlara applet ismini veriyor, çalıştırılan executable dosya adını kendine argüman olarak gönderiyor.
"busybox date" şeklinde çalıştırıldığında execve("/bin/busybox", ["busybox", "date"]),
busybox executable dosya ismini örnekteki container içinde olduğu gibi mesela "date" olarak değiştirip çalıştırdığımızda execve("/bin/date", ["date"]) olarak çağırıyor. Yani executable dosya ismi argüman olarak çağırılacak applet'i belirliyor.
dogrudur ama genelde exec boyle olmuyor cunku symlink edilmis oluyor bu binary komutlara. O yuzden “date” adli symlink veya hardlink’i cagirdiginizda execve(/bin/date)”, [ ]) oluyor. Yine de argv[0] dan komutun adi bulunabiliyor tabi.
@@ahmetb Evet. Hardlink de olsa symlink de olsa dosyanın adı argv[0] olarak gönderiliyor. Ben container içindeki farklı isimdeki aynı busybox executable dosyasının alt komutları nasıl yakaladığını anlatmak istedim.
Ama hardlink olduklarını unutup dosya ismini değiştirmekten bahsetmişim. Orada hatalıyım :)
Benim de emin olmadan yazdigim nokta 1) acaba syscall yapilmadan once symlink evaluate ediliyormu 2) syscallda argv’a dosyanin path’i ekleniyormu yoksa OS processi cagirirken kendisi mi ekliyor. Denemek istersen strace ile guzel bir egzersiz :))
@@ahmetb symlinkleri öncesinde ve sonrasında okuyan bir system call göremedim.
ln -s /bin/busybox /bin/ifconfig diye bir link yarattım.
ifconfig'i çağırınca, execve aşağıdaki şekilde normal dosyalar gibi çağırıyor.
execve("/bin/ifconfig", ["ifconfig"] )
syscall kendi içerisinde çözümlüyor galiba. Kaynak kodunda referans verdiğim fonksiyon o işi yapıyor gibi geldi ama tam emin değilim. Sen çözümleyip bize de anlatırsın :)
github.com/torvalds/linux/blob/b85051e755b0e9d6dd8f17ef1da083851b83287d/fs/exec.c#L842
Videoların kalitesi sürekli artıyor, emeğiniz için teşekkürler :)