resize ext3 particije

Prvo trebamo imati slobodnog prostora na disku (ako je rec o virtualnoj mašini trebamo povećati disk).

Kada obezbedimo da je disk veći i imamo slobodnog prostora, bootovanjem rescue diska, ja preferiram RIPLinux može bilo koji drugi koji ima adekvatne alate (fdisk, e2fsck, resize2fs).

Prvi korak, povećanje particije, očigledno je da jedino sda3 možemo povećati, a to je ujedno i root particija koju i želimo povećati:

fdisk /dev/sda pa p da vidimo izgled particija.

Najjednostavniji način da povećamo sda3 je da je obrišemo i napravimo novu na njenom mestu:

sto ćemo uraditi komandama d pa 3, i potom napraviti novu koja će uzeti sav slobodan prostor n pa p pa 3 i potom samo sa enter prihvatimo dve ponuđene cifre, čime smo napravili novu particiju koja uzima sav slobodan prostor.

Sa p možemo ponovo pogledati kako izgleda raspored particija

i sa w snimiti particionu tabelu.

Ovim smo povećali particiju, ostaje samo da uradimo resize filesystema, da napomenem radi se o ext3 FSu, za druge je drugačija procedura. Procedura za JFS.

resize2fs /dev/sda3 će automatski povećati filesystem da iskoristi sav prostor na particiji. Ali će nam verovatno prijaviti grešku da prvo moramo da uradim e2fsck što ćemo ga i poslušati. A potom ponovo pokrenuti komandu za resize.

I to je to, filesystem je povećan.

Posted in linux | Tagged , , , | Leave a comment

migracija mac/ip sa jedne mašine na drugu

Kabliranje: obe mashine su na istom switchu.

Podešavanje IP adrese, na bilo kojoj od dve mašine:


/sbin/ifconfig eth1 down
/sbin/ifconfig eth1 hw ether 00:05:5d:01:01:01 # ODABRANI MAC za migraciju (neki izmišljeni :)
/sbin/ifconfig eth1 10.10.9.21 netmask 255.255.255.0 # IP ADRESA
/sbin/ifconfig eth1 up

Dekonfigurisanje na prvoj mašini:


/sbin/ifconfig eth1 down
/sbin/ifconfig eth1 hw ether XX:XX:XX:XX:XX:XX # ORIGINALNI MAC kartice u mashini
/sbin/ifconfig eth1 0.0.0.0

Dekonfigurisanje na drugoj mašini:


/sbin/ifconfig eth1 down
/sbin/ifconfig eth1 hw ether YY:YY:YY:YY:YY:YY # ORIGINALNI MAC kartice u mashini
/sbin/ifconfig eth1 0.0.0.0

Potrebno je vratiti originalne MAC adrese i skinuti IP sa interfejsa. Za monitoring i pokretanje konfigurisanja može da se upotrebi heartbeat ili pacemaker (ili možda ima još neko rešenje, možda custom scripte za monitoring).

Posted in linux | Tagged , , | Leave a comment

dodavanje particije na XEN VM

Na XEN hostu, napravimo novu particiju na LVMu:

lvcreate -L +30G -n srv_raw3 vol

Potom u XEN VM configu dodamo u disk deo:

'phy:/dev/vol/srv_raw3,xvda5,w'

Ali da ne bi gasili i palili VM, mozemo dodati odmah:

xm block-attach srv phy:/dev/vol/srv_raw3 xvda5 w

u dmsg na virtualnoj mashini se pojavilo samo jedno:

[3658600.114552] blkfront: xvda5: barriers enabled

i block device /dev/xvda5

Potrebno je josh uraditi neshto korisno sa njim 🙂

Posted in linux | Tagged , , , , , | Leave a comment

lociranje PHP scripte koja shalje mail

Kako naći koja scripta šalje mail na serveru? (PHP putem mail() f-je) Kratko googlanje mi nije dalo skoro nikakvo rešenje pa sam prionuo na posao i upakovao jednostavnu scriptu koja loguje sve pozive /usr/sbin/sendmail bez modifikovanja .php fajlova.

Preimenovati /usr/sbin/sendmail u /usr/sbin/sendmail- i na njegovo mesto podmetnuti scriptu:


#!/bin/bash

XPID=$$
(
echo " ========================================================== "
echo "PID: $XPID"
XPPID=$(ps -o ppid= -p $XPID)
XPPPID=$(ps -o ppid= -p $XPPID)
echo "PPID: $XPPID"
echo "PPPID: $XPPPID"
echo "PWD: $PWD"

lynx -width=2000 -dump http://127.0.0.1/server-status/ | grep " $XPPPID "

) >> /var/log/poslati-mailovi.txt

tee -a /var/log/poslati-mailovi.txt | /usr/sbin/sendmail- $@

U server-statusu apachea se dobije informacija o URLu scripte. A usput i sadrzaj poslatog maila se loguje 🙂

Nije neko previše inteligentno rešenje, ali vrlo brzo je rešilo problem.

Posted in linux | Tagged , , , , | 3 Comments

linux encriptovan block device

Enrktipovanje samo jedne particije (logičkog volumena na LVM):

Prvo nam treba particija, možda je već imamo ili napravimo još jedan logički volumen:

lvcreate -L +160G -n encpart vol01

Refrešujemo LVM da se pojavi device:

vgchange -a y

Potreban nam je cryptsetup utils za inicijalizaciju, pa ga instaliramo ako već nije:

apt-get install cryptsetup

Inicijalizacija, pitaće nas za passphase:

cryptsetup --verbose --verify-passphrase luksFormat /dev/vol01/encpart

Kačenje particije, time ćemo podesiti da nam kernel napravi novi block device koji virtualno enkriptuje/decriptyje podatke koji su na particiji koja je enkriptovana:

cryptsetup luksOpen /dev/vol01/encpart vol01_encpart_descripted

Rastavljanje ovakve veze se radi sa: cryptsetup luksClose device ali za sada nam to nije potrebno.

Formatiranje particije, formatiramo “virtualni” block device a ne particiju koja je encriptovana:

mkfs.ext3 /dev/mapper/vol01_encpart_decripted

I za svakodnevni rad nam ne potrebna mala scripta sa kojom ćemo lako mountovati i unmountovati (raskidanje decripcije):


#!/bin/bash

ENCDEV=/dev/vol01/encpart
DEVNAME=vol01_encpart_decripted
DEV=/dev/mapper/${DEVNAME}
MNTDIR=/mnt/mountdir

if [ "x$1" = "xon" ]; then
echo "luksOpen"
cryptsetup luksOpen "${ENCDEV}" "${DEVNAME}"
echo "please wait"
sleep 1
echo "pvscan"
pvscan
echo "please wait"
sleep 2
echo "fsck"
fsck.ext3 -p "${DEV}"
echo "mount"
mount "${DEV}" "${MNTDIR}"
elif [ "x$1" = xoff ]; then
echo "umount"
umount "${MNTDIR}"
echo "luksClose"
cryptsetup luksClose "${DEV}"
else
echo "usage: $0 <on|off>"
fi

Pozivanjem scripte sa on ili off parametrom mountuje se i unmountuje disk.

Posted in linux | Tagged , , , , , , | Leave a comment

atmega328p (mini at) na linuxu (arduino klon)

Arduino je vrlo popularna platforma za razvoj koja je bazirana na atmelu MCU, kolko je meni poznato kod nas nema da se kupe atmel ploče. Meni je atmel uvek bio simpatičan zbog dobre podrške na linuxu (gcc-avr i avr-libc).

Drugar je našao jedan zanimljiv klon arduina (isti koncept, isti MCU, samo je pločica drugačija) kod naše Mikro Elektronike po prilično pristupačnoj ceni (14eura + PDV). Reč je o mini at pločici, koja se meni čak i više svidja od arduina jer je drastično manja, mana je naravno to što ne mogu da se kače arduino shieldovi.

Incijalno Mikro Elektronika predlaže korišnjenje njihovih alata za razvoj, koji naravno ne postoje za linux. Gledajući uputstvo skontam da koriste arvdude software za programiranje koji postoji i na linuxu. I da je protokol za programiranje stk500 takodjer podržan. Sve bi to trebalo da znači da pločica može vrlo jednostavno da se programira i na linuxu.

Potrebni alati na linuxu su avrdude gcc-avr i libc-avr. Na ubuntu/debianu: apt-get install gcc-avr avr-libc avrdude i malo podešavanja koje sam upakovao u Makefile demo projekat.

Sve što je potrebno uraditi je otpakovati zip fajl (eventualno promeniti serijski port u Makefileu) i uraditi make all.

Posted in elektronika | Leave a comment

Virtualne mrežne labaratorije

Najelegantniji način za testiranje setupa je na virtualnim mašinama, a u slučaju da podignete više njih možete testirati i celu mrežu. Postoje alati koji omogućavaju da se na lak način postavi simulacija mreže i potom igra sa podešavanjima pojedinih mašina/ruterima.

Svi su bazirani na UML (User-mode Linux-u)

Ceo posao možemo uraditi i bez ovakvih programa, ali uz pomoć njih dobijemo vizuelnu preglednost i brže dodjemo do setupa koji želimo da testiramo.

Posted in linux | Tagged , , | Leave a comment

Named pipea (fifo) na androidu

Posto mkfifo() poziv nije dostupan iz java-e na androidu (ili barem meni nije poznato kako). Postoje dva rešenja: pozivanje externe mkfifo komande ili pravljenje C biblioteke koja poziva funkciju i linkovati sa javom (JNI). Drugi način je elegantniji i ali komplikovanije rešenje.

jni/Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

TARGET_PLATFORM := android-3
LOCAL_MODULE := mkfifo
LOCAL_SRC_FILES := mkfifo.c
LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

jni/mkfifo.c:

#include <string.h>
#include <jni.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>

JNIEXPORT jint JNICALL
Java_info_zsteva_fifo_mkfifo( JNIEnv* env, jobject thiz, jstring path )
{
jboolean iscopy;
const char *path_utf = (*env)->GetStringUTFChars(env, path, &iscopy);

int ret = mkfifo(path_utf, 0700);

(*env)->ReleaseStringUTFChars(env, path, path_utf);

return ret;
}

src/info/zsteva/mkfifo.java:

package info.zsteva;

public class fifo {
// JNI
public native static int mkfifo(String path);
static {
System.loadLibrary("mkfifo");
}
}

Smestiti fajlove na adekvatna mesta i u rootu android projekta pokrenuti ndk-build (za kompajliranje je potreban android-ndk-sdk).

Posted in android | Tagged , , , , , | Leave a comment

ssh host aliasi

Ako svakodnevno iz komandne linije pristupate istim mashina, verovatno imate aliase ili male shellscripte kojima pozivate ssh ka tacno određenoj mashinu uz malo kucanja, pogotovo ako za neke od njih je potrehno specificirati port i/ili username. Na taj način se lako odradi ssh, ali opet kad treba scp potrebno je napraviti drugu scriptu…

Zgodno rešenje koje sam skoro video nalazi se u okviru samog ssh-a. U ~/.ssh/config mogu se podesiti svi ovi parametri i pri tome dati posebno ime preko koga mašini sa tim parametrima pristupate bilo da koristite ssh ili scp. Primer:


Host stor01
Hostname office.example.com
User zsteva
Port 2211

Primer kojim se kačim na server sa navedenim parametrima preko prečice stor01. Sada komotno mogu da koristim:

  • ssh stor01 -v
  • scp file1.txt stor01:~/
  • scp stor01:~/file2.txt .

Svaki put tamo gde se pokušavam kačiti na stor01, biće upotrebljeni parametri navedeni u config fajlu.

Kao hostname se može navesti i IP adresa, a uz malo scriptinga se može napraviti da se jednom komandom preklapaju IP adrese u liniji hostname zavisno od toga da li ste u LANu ili pristupate mašini spolja, itd…

Posted in linux | Tagged , , , , , | Leave a comment

InstallShield silent instaliranje programa

Pokušavajući da napravim silent instalaciju jednog programa (instaler programa je prevljen putem InstallShield-a) prekopao sam pola interneta tražeći rešenje. Ispostavilo se da InstallShield ima ugrađeno rešenje za to.

Pošto program uglavnom zahteva neka podešavanja prilikom instaliranja, potrebno je prvo uraditi snimanje parametara. Pokrenite iz direktorijuma gde je instalacija programa setup.exe na sledeći način:

setup.exe /r /f1".\setup.iss"

Prođite proces instaliranja, posle čega će se u trenutnom direktorijumu pojaviti setup.iss u kome je snimljen kompletan proces instalacije, sa svim parametrima.

Na drugi računar je dovoljno prekopirati ceo direktorijum i pokrenuti:

setup.exe /s

Da bi instalacija se kompletno završila sa parametrima koji su snimljeni u setup.iss. Inače fajl je textualni i možete dodatna štelovanja uraditi ručno.

Sledeći korak: kompletna automatizacija instalacije i upgradea softwera uz pomoć wpkg sistema.

Posted in windows | Tagged , , , , | Leave a comment