Mac Os Native NTFS Destegi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    mac os kullanan arkadaslar bilirler. mac ntfs diskinizi otomatik olarak read-write mount etmez. read-only mount eder. yani siz ntfs bolum barindiran bir disk taktiginizda(harici disk, usb, veya dahili diskinizdeki ntfs volume) onu yalnizca okuyabilirsiniz.

    bu kucuk sorun 3. parti yazilimlarla (Tuxera NTFS, Paragon) cozulebilmekte fakat bu iki yazilimda para ile satiliyo. ve hatta kullanildiklarinda disklerin dosya sistemlerinde ufak tefek sorunlara sebep olabiliyolar.(Tuxera 2010.10[suanki son surum] da bazi girisleri bozdugunu gordum.)

    Halbuki mac os, ntfs suruculere zaten destek vermekte. Bi kac kucuk islemle 3.parti yazilima gerek kalmadan ntfs disklerimize yazabiliyor hale gelebiliriz.

    Yapmamiz gereken, read-only mount edilmis ntfs volume unmount etmek, ve read-write sekilde tekrar mount etmek.

    diskutil list

    komutuyla sisteme bagli diskleri veya 

    mount 

    komutuyla sisteme mount edilmis diskleri gorebiliriz.

    mount komutunu verdikten sonra asagidakine benzer bi cikti alicaksiniz.

     

    /dev/disk0s2 on / (hfs, local, journaled)
    devfs on /dev (devfs, local, nobrowse)
    map -hosts on /net (autofs, nosuid, automounted, nobrowse)
    map auto_home on /home (autofs, automounted, nobrowse)
    /dev/disk2s1 on /Volumes/Gurhan (ntfs, local, nodev, nosuid, read-only, noowners)

    gordugumuz gibi sisteme taktigim ntfs harici diskim read-only olarak mount edilmis.
    diskutil umount disk2s1
    komutuyla diski unmount ediyoruz.
    sudo mkdir /Volumes/KlasorAdi
    komutuyla '/Volumes/' klasoru altina, diskimizi mount edicegimiz bi klasor olusturuyoruz.
    ornegin,
    sudo mkdir /Volumes/Gurhan
    sonrasinda disk2s1 ' i, olusturdugumuz klasore tekrar fakat bu sefer read-write haklarla mount ediyoruz.
    sudo mount -t ntfs -o rw,nodev,nosuid /dev/disk2s1 /Volumes/Gurhan
    olan biteni gormek icin tekrar mount komutunu girelim
    /dev/disk0s2 on / (hfs, local, journaled)
    devfs on /dev (devfs, local, nobrowse)
    map -hosts on /net (autofs, nosuid, automounted, nobrowse)
    map auto_home on /home (autofs, automounted, nobrowse)
    /dev/disk2s1 on /Volumes/Gurhan (ntfs, local, nodev, nosuid, noowners)

    gordugumuz gibi read-only ortadan kalkmis.;)
    bu is yazdigim kucuk bi c programi da var. program sisteme bagli tum read-only ntfs volume'lari unmount edip tekrar read-write yetkileriyle mount etmeyi deniyor.
    #include 
    #include 
    #include 
    #include 
    #include 
    
    #define UNMOUNTED 0
    #define MOUNTEDRW 1
    #define MOUNTEDRO 2
    
    /**/
    char *ex_command(const char *command, char *out, size_t n);
    char *getnames(char *str, char *label);
    int ismounted(const char *dev_name);
    /**/
    
    #define STRBLOCK 4096
    
    int main (int argc, const char * argv)
    {
    	char str[STRBLOCK];
    	char command[STRBLOCK];
    	char label[1024], *dev_name;
    	char *line, *rld;
    	int imnt;
    	
    	
    	//ntfs volumelari str'ye at.
    	ex_command("sudo diskutil list | grep NTFS", str, STRBLOCK);
    	
    	//str bossa
    	if (!str[0])
    	{
    		printf("cannot find any ntfs volume\n");
    		exit(EXIT_FAILURE);
    	}
    	
    	//sistemdeki tum ntfs volumelari gez
    	for (line = strtok_r(str, "\n", &rld);
    		 line;
    		 line = strtok_r(NULL, "\n", &rld)) 
    	{
    		//aygit ismini (disk2s1) ve etiketini al
    		dev_name = getnames(line, label);
    		
    		printf("NTFS drive detected\n"\
    			   "\tLabel:%s\t DevName:%s\n", label, dev_name);
    		
    		if ((imnt = ismounted(dev_name)) == MOUNTEDRW) //okuma yazma hakkiylami mount edilmis ?
    		{
    			printf("%s has already mounted with read-write perms\n", dev_name);
    			continue;
    		}
    		if (imnt == MOUNTEDRO)
    		{
    			printf("%s is unmounting\n", label);
    			
    			//unmount 
    			sprintf(command, "diskutil umount %s", dev_name);
    			if (system(command))
    			{
    				fprintf(stderr, "unmounting failed %s\n", dev_name);
    				continue;
    			}
    		}
    		
    		//mount edilicek Klasoru olustur.
    		sprintf(command, "sudo mkdir /Volumes/%s", label);
    		if (system(command))
    		{
    			srand(time(NULL));
    			
    			for (int i = 0, rnd; i < 2; ++i) 
    			{
    				sprintf(command, "sudo mkdir /Volumes/%s%d",
    						label, (rnd = (rand() % 1000)));
    				if (!system(command)) 
    				{
    					sprintf(label, "%s%d", label, rnd);
    					goto DIRCREATED;
    				}
    			}
    			fprintf(stderr, "mkdir failed /Volumes/%s\n", label);
    			continue;
    		}
    		
    		
    		//akis burdaysa klasor olusmustur.
    	DIRCREATED:
    		
    		sprintf(command, 
    				"sudo mount -t ntfs -o rw,nodev,nosuid /dev/%s /Volumes/%s",
    				dev_name, label);
    		
    		printf("%s trying to mount with read-write perms\n", dev_name);
    		if (system(command)) 
    		{
    			fprintf(stderr, "mounting failed %s\n", dev_name);
    			continue;
    		}
    	}
    	
        return 0;
    }
    
    
    /*shell komutu calistir ve ciktisini al*/
    char *ex_command(const char *command, char *out, size_t n)
    {
    	FILE *f;
    	int i;
    	
    	if ((f = popen(command, "r")) == NULL)
    	{
    		printf("cannot open pipe");
    		exit(EXIT_FAILURE);
    	}
    	
    	i = fread(out, 1, n - 1, f);
    	out[i] = '\0';
    	
    	pclose(f);
    	
    	return out;
    }
    
    /*disk label'ini ve aygit ismini al
    geriye aygit ismi doner*/
    char *getnames(char *str, char *label)
    {
    	char *brkt;
    	char *tokens[256];
    	int i;
    	
    	for (i = 0, tokens[i] = strtok_r(str, " ", &brkt);
    		 tokens[i];
    		 ++i, tokens[i] = strtok_r(NULL, " ", &brkt))
    		;
    	
    	label[0] = '\0';
    	
    	for (int j = 2; j < (i - 3); ++j)
    		strcat(label, tokens[j]);
    	
    	if (!label[0])
    		strcpy(label, "Untitled");
    	
    	return tokens[i - 1];
    	
    }
    
    /*aygit ismi verilen aygit'in mount edilme durumu*/
    int ismounted(const char *dev_name)
    {
    	char str[STRBLOCK], *pstr = str;
    	char command[512];
    	
    	sprintf(command, "mount | grep %s", dev_name);
    	ex_command(command, str, STRBLOCK);
    	
    	if (!str[0])
    		return UNMOUNTED;
    	
    	for (; *pstr; ++pstr) 
    	{
    		if (!strncmp(pstr, "read-only", 9))
    			return MOUNTEDRO;
    	}
    	return MOUNTEDRW;
    }

    ..
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SSPPSS
    SSPPSS's avatar
    Kayıt Tarihi: 26/Ağustos/2007
    Erkek
    mac ten anliyonmu hoca sorayimmi bisiyler?
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    gordugumuz gibi sisteme taktigim ntfs harici diskim read-only olarak mount edilmis.
    diskutil umount disk2s1

    komutuyla diski unmount ediyoruz.
    sudo mkdir /Volumes/KlasorAdi
    komutuyla '/Volumes/' klasoru altina, diskimizi mount edicegimiz bi klasor olusturuyoruz.
    ornegin,
    sudo mkdir /Volumes/Gurhan
    sonrasinda disk2s1 ' i, olusturdugumuz klasore tekrar fakat bu sefer read-write haklarla mount ediyoruz.
    sudo mount -t ntfs -o rw,nodev,nosuid /dev/disk2s1 /Volumes/Gurhan
    olan biteni gormek icin tekrar mount komutunu girelim
    /dev/disk0s2 on / (hfs, local, journaled)
    devfs on /dev (devfs, local, nobrowse)
    map -hosts on /net (autofs, nosuid, automounted, nobrowse)
    map auto_home on /home (autofs, automounted, nobrowse)
    /dev/disk2s1 on /Volumes/Gurhan (ntfs, local, nodev, nosuid, noowners)
    burasini bi okunur sekle getiremedim iyi mi yaa.


    ..
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    Sarper bunu yazdı:
    -----------------------------
    mac ten anliyonmu hoca sorayimmi bisiyler?
    -----------------------------

    valla yeni girisiyorum mac'e ama sor illa ki bilen biri cikar heralde


    ..
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SSPPSS
    SSPPSS's avatar
    Kayıt Tarihi: 26/Ağustos/2007
    Erkek
    GrN bunu yazdı:
    -----------------------------

    Sarper bunu yazdı:
    -----------------------------
    mac ten anliyonmu hoca sorayimmi bisiyler?
    -----------------------------

    valla yeni girisiyorum mac'e ama sor illa ki bilen biri cikar heralde


    -----------------------------
    pcyi netbeans, eclipse bilumun dev. icin kullanicam.arada oyunda oynarim tabi.i5 islemcili orta seviye ekran kartli bi notebook alsam beni uzun sure goturur ki max 2bin tl ye alabiliyorum(hatta i7ye bile cikarim kampanya falan) bu isleri yapabilecegim bi mac alsam ne kadara patlar?
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    fiyat olarak mac lerle pek bi alakam yok yahu :s

    ben mac os isletim sistemini benim pc'ye kurdum. yani tabi bi mac'im olsun isterim ama o kadar param yok. :)

    http://store.bilkom.com.tr/MacBook-Pro/Apple_br_2-16

    surayi bi incele istersen.

     

     


    ..
Toplam Hit: 1961 Toplam Mesaj: 6