I am using OpenId and i have a personal OpenID provider based on simpleid.
I used to be able to login to sourceforge via https://balaskas.gr but i’ve removed my SSL from my website
(My SSL cert is signed by cacert and firefox doesnt accept cacert - thats another story).
So i wanted to re-configure my sourceforce access with http and openid.
I cant !
“There was an error using your OpenID.”
My logs
216.34.181.60 - - [21/Nov/2012:08:39:33 +0200] “GET / HTTP/1.1” 200 951 “-” “Zend_OpenId”
216.34.181.60 - - [21/Nov/2012:08:39:33 +0200] “POST / HTTP/1.1” 200 951 “-” “Zend_OpenId”
i’ve opened a support ticket but i got this:
“While we certainly allow users to use custom OpenIDs, we cannot guarantee that they work with our site. As such, we’re not going spend time troubleshooting that.”
right …. custom OpenID !
for the love of Bob, i am using a personal OpenID provider - i dont have a custom openid !
This is a rather large post, so you need to have some time to read through it.
I was interested into learning/identifying how data are written on a hard disk using LVM2.
All that begun when i was trying to extract partitions from a corrupted disk with no partition table!
Steps:
- Create a disk image
- Create Physical Volume
- Create Volume Group
- Create Logical Volume
- Format Filesystem
using only basic cmds [ du, fdisk, file, hexdump, losetup, strings, truncate ] and LVM2 basic cmds.
to reduce the size of this post, the latest couple hexdumps are located in separate files (12K and 172K) provide them with links.
Plz click on them just to see the output. They are very interesting.
So lets start
A. Create disk image file
# truncate -s 5G file.img
# du file.img
0 file.img
# du --apparent-size file.img
5242880 file.img
# qemu-img info file.img
image: file.img
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 0
# losetup /dev/loop1 file.img
# fdisk -l /dev/loop1
Disk /dev/loop1: 5368 MB, 5368709120 bytes, 10485760 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
B. Create Physical Volume
# pvcreate /dev/loop1
# pvck -v /dev/loop1
Scanning /dev/loop1
Found label on /dev/loop1, sector 1, type=LVM2 001
Found text metadata area: offset=4096, size=1044480
# pvdisplay
"/dev/loop1" is a new physical volume of "5,00 GiB"
--- NEW Physical volume ---
PV Name /dev/loop1
VG Name
PV Size 5,00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr
# file file.img
file.img: LVM2 PV (Linux Logical Volume Manager), UUID: Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr, size: 5368709120
# qemu-img info file.img
image: file.img
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 8.0K
# du -k file.img
8 file.img
# du --apparent-size file.img
5242880 file.img
# hexdump -C file.img
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200 4c 41 42 45 4c 4f 4e 45 01 00 00 00 00 00 00 00 |LABELONE........|
00000210 58 36 35 f2 20 00 00 00 4c 56 4d 32 20 30 30 31 |X65. ...LVM2 001|
00000220 5a 68 36 37 61 6a 78 41 56 36 77 42 6f 77 71 66 |Zh67ajxAV6wBowqf|
00000230 57 39 32 47 55 35 78 57 45 65 65 48 44 6d 72 72 |W92GU5xWEeeHDmrr|
00000240 00 00 00 40 01 00 00 00 00 00 10 00 00 00 00 00 |...@............|
00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000260 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................|
00000270 00 f0 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000 16 d6 8e db 20 4c 56 4d 32 20 78 5b 35 41 25 72 |.... LVM2 x[5A%r|
00001010 30 4e 2a 3e 01 00 00 00 00 10 00 00 00 00 00 00 |0N*>............|
00001020 00 f0 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00001030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
# strings -t d file.img
512 LABELONE
536 LVM2 001Zh67ajxAV6wBowqfW92GU5xWEeeHDmrr
4100 LVM2 x[5A%r0N*>
C. Create Volume Group
# vgcreate volgr01 /dev/loop1
Volume group "volgr01" successfully created
# vgdisplay
--- Volume group ---
VG Name volgr01
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 5,00 GiB
PE Size 4,00 MiB
Total PE 1279
Alloc PE / Size 0 / 0
Free PE / Size 1279 / 5,00 GiB
VG UUID Ub2ISW-x7wd-R8iy-GexG-JGUG-ECI1-kdpBrK
# file file.img
file.img: LVM2 PV (Linux Logical Volume Manager), UUID: Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr, size: 5368709120
# qemu-img info file.img
image: file.img
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 8.0K
# du -k file.img
8 file.img
# du --apparent-size file.img
5242880 file.img
# hexdump -C file.img
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200 4c 41 42 45 4c 4f 4e 45 01 00 00 00 00 00 00 00 |LABELONE........|
00000210 58 36 35 f2 20 00 00 00 4c 56 4d 32 20 30 30 31 |X65. ...LVM2 001|
00000220 5a 68 36 37 61 6a 78 41 56 36 77 42 6f 77 71 66 |Zh67ajxAV6wBowqf|
00000230 57 39 32 47 55 35 78 57 45 65 65 48 44 6d 72 72 |W92GU5xWEeeHDmrr|
00000240 00 00 00 40 01 00 00 00 00 00 10 00 00 00 00 00 |...@............|
00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000260 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................|
00000270 00 f0 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000 93 f4 58 bc 20 4c 56 4d 32 20 78 5b 35 41 25 72 |..X. LVM2 x[5A%r|
00001010 30 4e 2a 3e 01 00 00 00 00 10 00 00 00 00 00 00 |0N*>............|
00001020 00 f0 0f 00 00 00 00 00 00 02 00 00 00 00 00 00 |................|
00001030 c5 02 00 00 00 00 00 00 97 b4 9e 26 00 00 00 00 |...........&....|
00001040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001200 76 6f 6c 67 72 30 31 20 7b 0a 69 64 20 3d 20 22 |volgr01 {.id = "|
00001210 55 62 32 49 53 57 2d 78 37 77 64 2d 52 38 69 79 |Ub2ISW-x7wd-R8iy|
00001220 2d 47 65 78 47 2d 4a 47 55 47 2d 45 43 49 31 2d |-GexG-JGUG-ECI1-|
00001230 6b 64 70 42 72 4b 22 0a 73 65 71 6e 6f 20 3d 20 |kdpBrK".seqno = |
00001240 31 0a 66 6f 72 6d 61 74 20 3d 20 22 6c 76 6d 32 |1.format = "lvm2|
00001250 22 20 23 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 61 |" # informationa|
00001260 6c 0a 73 74 61 74 75 73 20 3d 20 5b 22 52 45 53 |l.status = ["RES|
00001270 49 5a 45 41 42 4c 45 22 2c 20 22 52 45 41 44 22 |IZEABLE", "READ"|
00001280 2c 20 22 57 52 49 54 45 22 5d 0a 66 6c 61 67 73 |, "WRITE"].flags|
00001290 20 3d 20 5b 5d 0a 65 78 74 65 6e 74 5f 73 69 7a | = [].extent_siz|
000012a0 65 20 3d 20 38 31 39 32 0a 6d 61 78 5f 6c 76 20 |e = 8192.max_lv |
000012b0 3d 20 30 0a 6d 61 78 5f 70 76 20 3d 20 30 0a 6d |= 0.max_pv = 0.m|
000012c0 65 74 61 64 61 74 61 5f 63 6f 70 69 65 73 20 3d |etadata_copies =|
000012d0 20 30 0a 0a 70 68 79 73 69 63 61 6c 5f 76 6f 6c | 0..physical_vol|
000012e0 75 6d 65 73 20 7b 0a 0a 70 76 30 20 7b 0a 69 64 |umes {..pv0 {.id|
000012f0 20 3d 20 22 5a 68 36 37 61 6a 2d 78 41 56 36 2d | = "Zh67aj-xAV6-|
00001300 77 42 6f 77 2d 71 66 57 39 2d 32 47 55 35 2d 78 |wBow-qfW9-2GU5-x|
00001310 57 45 65 2d 65 48 44 6d 72 72 22 0a 64 65 76 69 |WEe-eHDmrr".devi|
00001320 63 65 20 3d 20 22 2f 64 65 76 2f 6c 6f 6f 70 31 |ce = "/dev/loop1|
00001330 22 0a 0a 73 74 61 74 75 73 20 3d 20 5b 22 41 4c |"..status = ["AL|
00001340 4c 4f 43 41 54 41 42 4c 45 22 5d 0a 66 6c 61 67 |LOCATABLE"].flag|
00001350 73 20 3d 20 5b 5d 0a 64 65 76 5f 73 69 7a 65 20 |s = [].dev_size |
00001360 3d 20 31 30 34 38 35 37 36 30 0a 70 65 5f 73 74 |= 10485760.pe_st|
00001370 61 72 74 20 3d 20 32 30 34 38 0a 70 65 5f 63 6f |art = 2048.pe_co|
00001380 75 6e 74 20 3d 20 31 32 37 39 0a 7d 0a 7d 0a 0a |unt = 1279.}.}..|
00001390 7d 0a 23 20 47 65 6e 65 72 61 74 65 64 20 62 79 |}.# Generated by|
000013a0 20 4c 56 4d 32 20 76 65 72 73 69 6f 6e 20 32 2e | LVM2 version 2.|
000013b0 30 32 2e 39 38 28 32 29 20 28 32 30 31 32 2d 31 |02.98(2) (2012-1|
000013c0 30 2d 31 35 29 3a 20 54 68 75 20 4e 6f 76 20 20 |0-15): Thu Nov |
000013d0 38 20 31 31 3a 33 31 3a 35 34 20 32 30 31 32 0a |8 11:31:54 2012.|
000013e0 0a 63 6f 6e 74 65 6e 74 73 20 3d 20 22 54 65 78 |.contents = "Tex|
000013f0 74 20 46 6f 72 6d 61 74 20 56 6f 6c 75 6d 65 20 |t Format Volume |
00001400 47 72 6f 75 70 22 0a 76 65 72 73 69 6f 6e 20 3d |Group".version =|
00001410 20 31 0a 0a 64 65 73 63 72 69 70 74 69 6f 6e 20 | 1..description |
00001420 3d 20 22 22 0a 0a 63 72 65 61 74 69 6f 6e 5f 68 |= ""..creation_h|
00001430 6f 73 74 20 3d 20 22 6d 79 77 6f 72 6b 22 09 23 |ost = "mywork".#|
00001440 20 4c 69 6e 75 78 20 6d 79 77 6f 72 6b 20 33 2e | Linux mywork 3.|
00001450 36 2e 36 2d 31 2d 41 52 43 48 20 23 31 20 53 4d |6.6-1-ARCH #1 SM|
00001460 50 20 50 52 45 45 4d 50 54 20 4d 6f 6e 20 4e 6f |P PREEMPT Mon No|
00001470 76 20 35 20 31 31 3a 35 37 3a 32 32 20 43 45 54 |v 5 11:57:22 CET|
00001480 20 32 30 31 32 20 78 38 36 5f 36 34 0a 63 72 65 | 2012 x86_64.cre|
00001490 61 74 69 6f 6e 5f 74 69 6d 65 20 3d 20 31 33 35 |ation_time = 135|
000014a0 32 33 36 37 31 31 34 09 23 20 54 68 75 20 4e 6f |2367114.# Thu No|
000014b0 76 20 20 38 20 31 31 3a 33 31 3a 35 34 20 32 30 |v 8 11:31:54 20|
000014c0 31 32 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 |12..............|
000014d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
# strings -t d file.img
512 LABELONE
536 LVM2 001Zh67ajxAV6wBowqfW92GU5xWEeeHDmrr
4100 LVM2 x[5A%r0N*>
4608 volgr01 {
4618 id = "Ub2ISW-x7wd-R8iy-GexG-JGUG-ECI1-kdpBrK"
4664 seqno = 1
4674 format = "lvm2" # informational
4706 status = ["RESIZEABLE", "READ", "WRITE"]
4747 flags = []
4758 extent_size = 8192
4777 max_lv = 0
4788 max_pv = 0
4799 metadata_copies = 0
4820 physical_volumes {
4840 pv0 {
4846 id = "Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr"
4892 device = "/dev/loop1"
4915 status = ["ALLOCATABLE"]
4940 flags = []
4951 dev_size = 10485760
4971 pe_start = 2048
4987 pe_count = 1279
5010 # Generated by LVM2 version 2.02.98(2) (2012-10-15): Thu Nov 8 11:31:54 2012
5089 contents = "Text Format Volume Group"
5127 version = 1
5140 description = ""
5158 creation_host = "mywork" # Linux mywork 3.6.6-1-ARCH #1 SMP PREEMPT Mon Nov 5 11:57:22 CET 2012 x86_64
5261 creation_time = 1352367114 # Thu Nov 8 11:31:54 2012
From this point hexdump will be out of this post, so i you want (it would be useful) click on the relative links.
D. Create Logical Volume
# lvcreate -l +100%FREE -n /dev/volgr01/lv_volume
Logical volume "lv_volume" created
# lvdisplay
--- Logical volume ---
LV Path /dev/volgr01/lv_volume
LV Name lv_volume
VG Name volgr01
LV UUID OpoaHx-kD4m-9mSO-Nj7W-i7LN-2Sxg-KFhkXw
LV Write Access read/write
LV Creation host, time mywork, 2012-11-08 11:41:51 +0200
LV Status available
# open 0
LV Size 5,00 GiB
Current LE 1279
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:22
# file file.img
file.img: LVM2 PV (Linux Logical Volume Manager), UUID: Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr, size: 5368709120
# qemu-img info file.img
image: file.img
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 12K
# du -k file.img
12 file.img
# du --apparent-size file.img
5242880 file.img
# hexdump -C file.img
Click here to see the hexdump (12K)
# strings -t d file.img
512 LABELONE
536 LVM2 001Zh67ajxAV6wBowqfW92GU5xWEeeHDmrr
4100 LVM2 x[5A%r0N*>
4608 volgr01 {
4618 id = "Ub2ISW-x7wd-R8iy-GexG-JGUG-ECI1-kdpBrK"
4664 seqno = 1
4674 format = "lvm2" # informational
4706 status = ["RESIZEABLE", "READ", "WRITE"]
4747 flags = []
4758 extent_size = 8192
4777 max_lv = 0
4788 max_pv = 0
4799 metadata_copies = 0
4820 physical_volumes {
4840 pv0 {
4846 id = "Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr"
4892 device = "/dev/loop1"
4915 status = ["ALLOCATABLE"]
4940 flags = []
4951 dev_size = 10485760
4971 pe_start = 2048
4987 pe_count = 1279
5010 # Generated by LVM2 version 2.02.98(2) (2012-10-15): Thu Nov 8 11:31:54 2012
5089 contents = "Text Format Volume Group"
5127 version = 1
5140 description = ""
5158 creation_host = "mywork" # Linux mywork 3.6.6-1-ARCH #1 SMP PREEMPT Mon Nov 5 11:57:22 CET 2012 x86_64
5261 creation_time = 1352367114 # Thu Nov 8 11:31:54 2012
5632 volgr01 {
5642 id = "Ub2ISW-x7wd-R8iy-GexG-JGUG-ECI1-kdpBrK"
5688 seqno = 2
5698 format = "lvm2" # informational
5730 status = ["RESIZEABLE", "READ", "WRITE"]
5771 flags = []
5782 extent_size = 8192
5801 max_lv = 0
5812 max_pv = 0
5823 metadata_copies = 0
5844 physical_volumes {
5864 pv0 {
5870 id = "Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr"
5916 device = "/dev/loop1"
5939 status = ["ALLOCATABLE"]
5964 flags = []
5975 dev_size = 10485760
5995 pe_start = 2048
6011 pe_count = 1279
6032 logical_volumes {
6051 lv_volume {
6063 id = "OpoaHx-kD4m-9mSO-Nj7W-i7LN-2Sxg-KFhkXw"
6109 status = ["READ", "WRITE", "VISIBLE"]
6147 flags = []
6158 creation_host = "mywork"
6183 creation_time = 1352367711
6210 segment_count = 1
6229 segment1 {
6240 start_extent = 0
6257 extent_count = 1279
6278 type = "striped"
6295 stripe_count = 1 # linear
6322 stripes = [
6334 "pv0", 0
6353 # Generated by LVM2 version 2.02.98(2) (2012-10-15): Thu Nov 8 11:41:51 2012
6432 contents = "Text Format Volume Group"
6470 version = 1
6483 description = ""
6501 creation_host = "mywork" # Linux mywork 3.6.6-1-ARCH #1 SMP PREEMPT Mon Nov 5 11:57:22 CET 2012 x86_64
6604 creation_time = 1352367711 # Thu Nov 8 11:41:51 2012
E. Format FileSystem
# mkfs.ext2 /dev/volgr01/lv_volume
mke2fs 1.42.6 (21-Sep-2012)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1309696 blocks
65484 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mount /dev/volgr01/lv_volume /mnt/
# df -h /mnt/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/volgr01-lv_volume 5,0G 10M 4,7G 1% /mnt
# file file.img
file.img: LVM2 PV (Linux Logical Volume Manager), UUID: Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr, size: 5368709120
# qemu-img info file.img
image: file.img
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 82M
# du -k file.img
83680 file.img
# du --apparent-size file.img
5242880 file.img
# hexdump -C file.img
Click here to see the hexdump (172K)
# strings -t d file.img
512 LABELONE
536 LVM2 001Zh67ajxAV6wBowqfW92GU5xWEeeHDmrr
4100 LVM2 x[5A%r0N*>
4608 volgr01 {
4618 id = "Ub2ISW-x7wd-R8iy-GexG-JGUG-ECI1-kdpBrK"
4664 seqno = 1
4674 format = "lvm2" # informational
4706 status = ["RESIZEABLE", "READ", "WRITE"]
4747 flags = []
4758 extent_size = 8192
4777 max_lv = 0
4788 max_pv = 0
4799 metadata_copies = 0
4820 physical_volumes {
4840 pv0 {
4846 id = "Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr"
4892 device = "/dev/loop1"
4915 status = ["ALLOCATABLE"]
4940 flags = []
4951 dev_size = 10485760
4971 pe_start = 2048
4987 pe_count = 1279
5010 # Generated by LVM2 version 2.02.98(2) (2012-10-15): Thu Nov 8 11:31:54 2012
5089 contents = "Text Format Volume Group"
5127 version = 1
5140 description = ""
5158 creation_host = "mywork" # Linux mywork 3.6.6-1-ARCH #1 SMP PREEMPT Mon Nov 5 11:57:22 CET 2012 x86_64
5261 creation_time = 1352367114 # Thu Nov 8 11:31:54 2012
5632 volgr01 {
5642 id = "Ub2ISW-x7wd-R8iy-GexG-JGUG-ECI1-kdpBrK"
5688 seqno = 2
5698 format = "lvm2" # informational
5730 status = ["RESIZEABLE", "READ", "WRITE"]
5771 flags = []
5782 extent_size = 8192
5801 max_lv = 0
5812 max_pv = 0
5823 metadata_copies = 0
5844 physical_volumes {
5864 pv0 {
5870 id = "Zh67aj-xAV6-wBow-qfW9-2GU5-xWEe-eHDmrr"
5916 device = "/dev/loop1"
5939 status = ["ALLOCATABLE"]
5964 flags = []
5975 dev_size = 10485760
5995 pe_start = 2048
6011 pe_count = 1279
6032 logical_volumes {
6051 lv_volume {
6063 id = "OpoaHx-kD4m-9mSO-Nj7W-i7LN-2Sxg-KFhkXw"
6109 status = ["READ", "WRITE", "VISIBLE"]
6147 flags = []
6158 creation_host = "mywork"
6183 creation_time = 1352367711
6210 segment_count = 1
6229 segment1 {
6240 start_extent = 0
6257 extent_count = 1279
6278 type = "striped"
6295 stripe_count = 1 # linear
6322 stripes = [
6334 "pv0", 0
6353 # Generated by LVM2 version 2.02.98(2) (2012-10-15): Thu Nov 8 11:41:51 2012
6432 contents = "Text Format Volume Group"
6470 version = 1
6483 description = ""
6501 creation_host = "mywork" # Linux mywork 3.6.6-1-ARCH #1 SMP PREEMPT Mon Nov 5 11:57:22 CET 2012 x86_64
6604 creation_time = 1352367711 # Thu Nov 8 11:41:51 2012
4468768 lost+found
I live in Greece.
I need to find some info about a product of hellenic post so i wrote at my url bar: www.elta.gr
The first page is in Greek language!!!
There is no greek words but thats okei!
You cant click on GR flag but thats okei too.
To read something in greek you have to click on gb flag and then click on gr flag !
but thats okei …
From UX point this is a disaster!
the proof:
To whom dont know what busybox is, plz stop using linux, android or any embedded device.
Step 1. Learn what version of kernel your device has.
my mobile use Marvel (ARMv6) kernel.
Step 2. Download your binary from here download busybox
wget -c http://www.busybox.net/downloads/binaries/latest/busybox-armv6l
Step 3. Copy busybox to your device
adb push busybox-armv6l /mnt/sdcard/
Step 4. Enter your device
adb shell
Step 5. Remount /system with read-write access
mount -o rw,remount /system
cd /system/xbin/
Step 6. Copy busybox to your system xbin dir
cp /mnt/sdcard/busybox-armv6l /system/xbin/
Step 7. Change permissions
chmod 0755 /system/xbin/busybox-armv6l
Step 8. Move your old busybox - dont remove it
cp busybox BusyBox-v1.19.4-cm7
Step 9. replace busybox
# busybox-armv6l cp busybox-armv6l busybox
simple as that !
A customer of mine, had me approached to install a virtualization solution at his company.
The first goal was portability the second productivity.
I had to find a way (transparent from their employes) to remove their work environment from their hardware.
Productivity is easy … just remove any unnecessary software and keep their desktops as clean as they can be.
“Attention Span” is the big monster.
I found that with no-sound they couldnt listen to youtube or to internet radio stations or mp3 and they had to install a radio at their office.
One radio station, one music for all. That approach was much better than every other solution i could figure out.
Imaging a work space with 15 people, how every one wants to listen to a different music/news, youtube or whatever.
That was noise - and noise is the enemy!
As for portability - we dont want to use this old hardware - was easy enough too.
I’ve built a tinycorelinux image and convert every PC to a thin or thick client.
RDP to their Terminal Server was the only thing i had to ensure is working.
Dnsmasq is the simplest and best solution to do that (PXE).
created /tftpboot/ dir and worked my way through that.
I used fedora cause it is a virtualization box with all the latest versions of software.
I wanted to test fedora and selinux wasnt so bad after all.
Till the latest upgrade!
/tftpboot directory system_u:object_r:tftpdir_t:s0
/tftpboot/.* all files system_u:object_r:tftpdir_t:s0
dnsmasq now needs dnsmasq_t
type=AVC msg=audit(1349450414.500:20456): avc: denied { read } for pid=27175 comm="dnsmasq" name="tftpboot" dev="dm-1" ino=524451 scontext=system_u:system_r:dnsmasq_t:s0 tcontext=unconfined_u:object_r:tftpdir_t:s0 tclass=dir
relabeling is out of question.
The solution is to transfer all the necessaries files to a new directory that
semanage fcontext -l
doesnt marked as something else and chcon the entire directory (recursive) to label to dnsmasq_t all files and dirs.
or to add a new policy rule that accepts dnsmasq_t for /tftpboot directory
or DISABLE selinux cause you’ll never now what else will through to you !
Its unacceptable to make such core changes without have a plan for backwards compatibility or a way to inform your faithful admin that he/shee will have a problem because you have destroyed everything he/she built the last year!.
This blog post is based on Sotiris Tsimbonis’s work.
You should always checkzone the dns zone file you have just edited.
But you can also automate this, with a vim wrapper.
small changes @ Thu, 04 Oct 2012 14:03:15 +0300
#!/bin/sh
# ebal, Thu, 04 Oct 2012 14:03:15 +0300
/usr/sbin/named-checkconf
RES=$?
if [ ${RES} -gt 0 ]; then
echo ""
echo "Fix the above errors before editing your zone file"
echo ""
exit ${RES}
fi
ZONE=$1
PREFIX="/var/named/"
CHECKSUM=`/usr/bin/sha1sum ${PREFIX}/${ZONE}`
/usr/bin/vim ${PREFIX}/${ZONE}
echo ""
echo "Checking ${ZONE} for errors..."
echo ""
/usr/sbin/named-checkzone -i local ${ZONE} ${PREFIX}/${ZONE}
RES=$?
if [ ${RES} -gt 0 ]; then
echo ""
echo "You need to fix the errors and try again."
echo ""
exit ${RES}
fi
SHA1SUM=`/usr/bin/sha1sum ${PREFIX}/${ZONE}`
if [[ "$CHECKSUM" != "$SHA1SUM" ]]; then
echo "reloading zone ..."
/usr/sbin/rndc reload ${ZONE}
fi
I use vim as my primary editor.
btw i've never believed in Vim Vs Emacs cause the are two very different programs that do very different staffs with very different ways. Apples and Orange. The only (by me) common thing is that you can use them as editors too.
I use mutt as my primary MUA with $EDITOR=vim.
Writing frequently emails in more than one language can be harsh with no key bindings or a spell checker. You have to be very careful cause a tiny typo error can confuse a lot of people or worse.
People in sysadmin jobs understand what i mean a little better than others.
vim has been integrated with spell checking functionality. English (of course) are embedded.
To read all about that, open vim and on command mode write:
: help spell
If you want globally to map a function key to English spell checking functionality then, in /etc/vimrc write something like that:
:map <f5> :setlocal spell spelllang=en_us<return>
Next time you open vim (or editing an email through mutt) you can press F5 to spell check your text/email.
For Greek spell you need to google it. If you do that, then you’ll find instructions of using openoffice greek spell zip file for creating yours vim spell file (hint: mkspell). You can map it with F6 key and use it as above.
But I am writing both English & Greek and i am boring of typing F[what ever] key or switching languages and mpla mpla mpla mpla …
I use english_greek_spelling_dictionary of Firefox.
So how cool should be if a similar spell checking mechanism exist for vim ? A few days ago, linuxinside.gr had a tribute on pkst (Κώστας Παπαδήμας) and the idea strike me at that moment.
Here are the instructions of making your own
wget -c https://addons.mozilla.org/firefox/downloads/file/108368/english_greek_spelling_dictionary-0.5.5-tb+fx+sm.xpi
unzip english_greek_spelling_dictionary-0.5.5-tb+fx+sm.xpi
cd dictionaries/
At this point we will use mkspell.
Open vim:
vim
and on command mode type:
:mkspell engr English & Greek
The result is something like this:
Reading affix file English & Greek.aff ...
Trailing text in English & Greek.aff line 532: υ
Affix name too long in English & Greek.aff line 871: AA
Reading dictionary file English & Greek.dic ...
First duplicate word in English & Greek.dic line 588565: ΑΒΑ
12794 duplicate word(s) in English & Greek.dic
Compressing word tree...
Compressed 12575870 of 13454281 nodes; 878411 (6%) remaining
Compressed 15867 of 20446 nodes; 4579 (22%) remaining
Writing spell file engr.utf-8.spl ...
Done!
Estimated runtime memory use: 4415720 bytes
If you try to use a region name, then you will be facing the below error msg:
:mkspell en_gr English & Greek
E751: Output file name must not have region name
The result is : engr.utf-8.spl
We can move this to vim default spell location:
sudo cp engr.utf-8.spl /usr/share/vim/vim73/spell/
To map a key to English-Greek spell dictionary, open /etc/vimrc and add the below line:
:map <f6> :setlocal spell spelllang=engr<return>
Here is an example:

and here is the file (if you dont want to make it)
This is one of the most idiotic questions i am reading all the time on the web (linux related).
So lets take the most frequent answer on this:
file /bin/ls
If the result is 32 then you are using a 32bit distro.
If the result is 64 then you are using a 64bit distro.
SO ?
I ‘ve already knew that cause i installed a 32bit linux on my machine !
It’s obvious !
When people asking this question at 99,9999% of the times, they want to know if their machine has 64bit capabilities.
And at that point you have to give them a hint, that they have to look on their CPU flags.
I’ve comment on a blog (ubuntu related) that this isnt the right way cause you can install a 32bit distro on a 64bit CPU and if you are using file linux command you cant understand if your CPU is 64bit !
They immediately removed my comment (wat?)
My comment had an extra tip :
If the below command has output
grep ^flags /proc/cpuinfo | grep ' lm '
or in one line:
grep -E '^flags.* lm .*' /proc/cpuinfo
then your cpu has Long Mode (x86-64) capabilities.
The definition of flags are in cpufeature.h
and can be found online here:
One other way is to search online the model name of your cpu. The model name can be also located in /proc/cpuinfo
Σήμερα στο hsgr έχουμε ανοιχτή συνέλευση: Meeting
Είναι ιδανική μέρα για να έρθετε, να μιλήσουμε, να μας γνωρίζεται, να συζητήσουμε τις ιδέες σας ή να λύσουμε κάποιες από τις ερωτήσεις σας.
Πατήστε εδώ για να δείτε πως θα έρθετε.
” Το Hackerspace είναι ένας ανοιχτός χώρος δημιουργικότητας, συνεργασίας, έρευνας, ανάπτυξης και φυσικά μάθησης. Είναι όμως και κάτι περισσότερο από ένας φυσικός χώρος. Είναι μια ενεργή κοινότητα ανθρώπων με ιδέες που πηγάζουν απ’ τη φιλοσοφία του Ελεύθερου Λογισμικού. “
Α. Νέα Μέλη
Εάν πιστεύεται ότι συμφωνείτε με το πως ρολλάρουμε κι επίσης συμμερίζεστε το όραμά μας, συμπληρώστε μια αίτηση για νέο μέλος (υπενθύμιση ότι το hsgr είναι φυσικός χώρος κι έτσι οι μέντορες ζητούν φυσική παρουσία από τα υποψήφια νέα μέλη).
Β. Εξοπλισμός
Donate for Hackerspace.gr Equip
Εάν έχετε διαθέσιμο εξοπλισμό να δωρίσετε στο hsgr (ή έχετε τρόπο να μας προσφέρετε εξοπλισμό ή έκπτωση) υπάρχει σε εξέλιξη αυτή η hsgr campaign.
φαίνεται πως έχουν παγώσει οι δωρεές - λογικό αυτό τον καιρό - μα κάθε βοήθεια ευπρόσδεκτη.
Γ. Τεχνικά Βιβλία
Εάν θέλετε να δωρίσετε τα τεχνικά σας βιβλία στο hsgr, με χαρά μας να τα δεχθούμε. Ίσως να μην τα πάρουμε όλα ! αλλά σίγουρα κάτι θα βρούμε για να εμπλουτίσουμε την βιβλιοθήκη μας.
Μερικά από τα ήδη υπάρχοντα βιβλία/περιοδικά στον χώρο είναι τα εξής: books
Ελεύθερα μπορείτε να έρθετε στο Hsgr για να διαβάσετε ένα από αυτά, χωρίς καμία δέσμευση.
Δ. Υπολογιστές
Έχουμε διαθέσιμα αρκετά spare κομμάτια ήδη. Δεν ζητάμε παραπάνω. Ζητάμε τεχνικούς με μεράκι να μας βοηθήσουν να τα συναρμολογήσουμε ώστε να φέρουμε σε ζωή παλιό εξοπλισμό. Για όσους υπολογιστές φτιάξουμε και δεν χρησιμοποιηθούν στο hsgr, θα γίνουν δωρεά σε ανθρώπους ή νέα παιδιά που δεν έχουν. Εάν έχεις χρόνο στην διάθεσή σου και ξέρεις να συναρμολογείς μπορείς να βοηθήσεις. Κι έναν να φτιάξεις για εμάς είναι αρκετό.
E. Workshops / Παρουσιάσεις aka Events
Είμαστε διαθέσιμοι για να ανοίξουμε τον χώρο σε όποιον φίλο θέλει να κάνει κάποια παρουσίαση ή workshop στον τομέα του.
open source is a philosophy - keep that in mind !
ΣΤ. Σύλλογοι / Ομάδες εργασίας
Ο χώρος είναι διαθέσιμος να φιλοξενήσει οποιοδήποτε ομάδα ή σύλλογο θέλει να κάνει τις συναντήσεις του στο hsgr.
Εάν υπάρχει μέλος του hsgr διαθέσιμο να σας ανοίξει, τότε απλά βλέπετε το πρόγραμμα του hsgr και δεσμεύεται την ημερομηνία.
Εάν δεν υπάρχει κάποιο μέλος του hsgr και θέλετε σε μηνιαία (ή εβδομαδιαία) βάση να έρχεστε, τότε το hsgr είναι ναι μεν διαθέσιμο (θα βρούμε εμείς κάποιο μέλος να ανοίγει τον χώρο), αλλά θα σας συζήσουμε μια μικρή συνδρομή για τα έξοδα του χώρου.
Ζ. Ψυγείο / Προμήθειες.
Στο χώρο έχουμε ένα ψυγείο. Μπορείτε να βοηθήσετε γεμίζοντάς το με αναψυκτικά ή μπύρεςςςςςςς!
Μπορείτε να βοηθήσετε κι απλά φέρνοντας ένα πακέτο καφέ, ζάχαρη (τσάι, σάμαλι, γαλλικό, ελληνικό, εσπρέσσο κλπ κλπ κλπ κλπ).
Η. Supporters
Σε αυτή την σελίδα έχουμε καταγράψει τους Supporters του hsgr:
ή ανώνυμα υπάρχει ένα donation box μέσα στο hsgr !
Κι εάν είστε μακριά και δεν μπορείτε να έρθετε, ορίστε πως μπορείτε να προσφέρετε:
Donate
Θ. Προπαγάνδα
Μπορείτε να μας βοηθήσετε κι απλά συμμετέχοντας στην προπαγάνδα μας:
Για να μην σας ταλαιπωρώ άλλο με το εκτενές post μου, ρίξτε μια ματιά στα events που έχουμε φιλοξενήσει μέχρι τώρα.
I am using LVM for storage to virtual machines.
One simply way to make backups (even if the machine is online) is through dd.
(but if you are using a database, online is out of question).
dd will backup the entire partition to a raw image.
Lets make an example:
# time dd if=/dev/vg01/winxp of=winxp.img bs=1024
5242880+0 records in
5242880+0 records out
5368709120 bytes (5,4 GB) copied, 111,164 s, 48,3 MB/s
So we have a 5Gb backup raw image with sparse files into.
If only there was a way to remove sparse files to reduce the size!
Wait … it does exist: virt-sparsify
# virt-sparsify winxp.img winxp.img.spars
...
Sparsify operation completed with no errors. Before deleting the old
disk, carefully check that the target disk boots and works correctly.
# ls -ltr
-rw-r--r-- 1 root root 5368709120 Αύγ 28 11:55 winxp.img
-rw-r--r-- 1 root root 5368709120 Αύγ 28 11:59 winxp.img.spars
# du -h *
5,1G winxp.img
3,1G winxp.img.spars
2gb sparse files have just removed !
Now you can compress the backup image to reduce the size even more:
# du -h winxp.img*
5,1G winxp.img
3,1G winxp.img.spars
1,4G winxp.img.spars.lrz
We can now remove winxp.img & winxp.img.spars (8.2Gb) from our backup storage.
I was thinking to convert to systemd for quite some time now
So every time someone mentioned something about systemd (on the internet), i was reading his/her story as my life depend on it.
I am using archlinux so when i’ve read Jason’s blog post,
i was very happy. After a few days, Allan post a similar post
and that was the moment i told my self: “It’s time, i can blame Allan for breaking my system”
I run this command
# pacman -S systemd systemd-arch-units systemd-sysvcompat
and removed sysvinit & initscripts also.
Noticed that /etc/rc.conf became /etc/rc.conf.pacsave
and rebooted my machine.
How difficult is that ?
There was also a few steps that i needed to do.
Your reading material is here: Archlinux systemd and
systemd services .
After that was trivial to enable my services.
I have only a few of them:
# grep DAEMONS /etc/rc.conf.pacsave
DAEMONS=(syslog-ng network crond dbus avahi-daemon cupsd xinetd)
I use static network at work.
Followed this link to create my network service.
vim /etc/conf.d/network
vim /etc/systemd/system/network.service
# systemctl status network
# systemctl enable network.service
# systemctl status syslog-ng
# systemctl enable syslog-ng.service
be aware that cron is cronie !
systemctl status crond.service
systemctl enable cronie.service
systemctl status avahi-daemon
systemctl enable avahi-daemon.service
dbus was already enabled
systemctl status dbus
be aware that cupsd is cups
systemctl status cupsd
systemctl enable cups.service
and finally
systemctl status xinetd
systemctl enable xinetd.service
It was simplest than converted from grub to grub2 !
New installation guide, with screenshots,
for Arch Linux based on installation media 2012.08.04
Archlinux NetInstall based on media 2012.08.04
This guide doesnt use any automate script or menu installer.
a basic net-installation, without a menu installer or any automate script
I’ve found that the best way to test something in virtualization is through snapshots.
But why snapshot the running/active virtual machine and not the backup/clone virtual machine ?
# virsh list --all
Id Name State
----------------------------------------------------
- winxp running
- winxpclone shut off
Check the clone disk format:
# qemu-img info winxpclone.disk
image: winxpclone.disk
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 3.1G
And remember to convert the raw disk to qcow2 first:
# qemu-img convert -f raw winxpclone.disk -O qcow2 winxpclone.qcow2
And then edit your clone:
# virsh edit winxpclone
to use the qcow2 disk
and finally:
# virsh snapshot-create winxpclone
Domain snapshot 1341315833 created
List the snapshots:
# virsh snapshot-list winxpclone
Name Creation Time State
------------------------------------------------------------
1341315833 2012-07-03 14:43:53 +0300 shutoff
I needed to clone a virtual win2003 machine to a nas storage.
My storage is a lvm partition.
A. Suspend the virtual machine:
# virsh suspend win2003
B. Clone the virtual machine:
# virt-clone -d -o win2003 -n win2003clone -f /nas/storage/win2003clone.raw
This command will change the name, UUID, mac address and of course storage source.
C. Resume the virtual machine:
# virsh resume win2003
Remember that you have to change the IP of the clone, so that will not conflict with the original.
Some extra tips:
If you need to change something before the clone procedure, dump the xml from the virtual machine:
- Dump xml
# virsh dumpxml win2003 > win2003clone.xml
- Edit xml
# vim win2003clone.xml
- Clone the virtual machine
# virt-clone -d --original-xml=/home/ebal/win2003.clone.xml -n win2003clone -f /nas/storage/win2003clone.raw --force
Μέρος Α. : eurocrisis
Η κακή διαχείριση των οικονομικών μιας κυβέρνησης, μιας εταιρείας ή ενός νοικοκυριού πηγάζει από την αλαζονεία των ανθρώπων.
Όταν οι τράπεζες σε έπαιρναν τηλέφωνο και σε παρακάλαγαν να πάρεις καταναλωτικά δάνεια, ήταν τότε οι καλοί μας φίλοι.
Τώρα που ζητάνε τα λεφτά τους πίσω, είναι οι χειρότεροι εχθροί μας.
Σίγουρα δεν θα μπορούσαμε να αποφύγουμε το σημερινό αποτέλεσμα, πιθανά όμως να μπορούσαμε να αλλάξουμε ελαφρώς το τελικό αποτέλεσμα.
Αναφέρθηκα πιο πάνω στην αλαζονεία των ανθρώπων και θέλω να το αποσαφηνίσω κάπου εδώ. Αναφέρομαι στο λεφτά υπάρχουν. Δεν είναι απλά μια ατάκα ενός πρωθυπουργού, αλλά η αντίληψη σχεδόν της μάζας τα προηγούμενα χρόνια. Να παίξουμε στο χρηματιστήριο με δανεικά λεφτά, να αγοράσω τέσσερις τηλεοράσεις και τρία αυτοκίνητα γιατί έχω λεφτά. Μου τα δίνει η τράπεζα κι εγώ με τον κατώτατο μισθό μου σε 13468 χρόνια μπορώ να τα αποπληρώσω. Μάλιστα υπάρχουν τράπεζες που σου δανείζουν για να πληρώσεις τα δάνεια κι αυτό φυσικά με μεγαλύτερο τόκο!
Οι τράπεζες ποτέ δεν χάρισαν χρήματα και ποτέ δεν έβαλαν τον μαχαίρι στο λαιμό κανενός. Δυστυχώς όμως η αλαζονεία των ανθρώπων να αποκτήσουν αυτό που δεν έχουν (ανάγκη) έφερε πολλά νοικοκυριά, επιχειρήσεις και κράτη στον δανεισμό και στην μη πληρωμή του κεφαλαίου, πόσο μάλλον των υπέρογκων τόκων.
Μέρος Β. : eurocustomer
Να διανθίσω αυτό το post με μία ιστορία:
Την παρασκευή είχα ένα ραντεβού σε μία τεχνική/μελετητική εταιρεία. Γνώριζα ήδη ότι οι εμπλεκόμενες στον κατασκευαστικό χώρο εταιρείες, τα τελευταία τρία χρόνια έχουν περάσει άσχημα. Βρέθηκα στην εταιρεία η οποία διαθέτει: μεγάλο ισόγειο χώρο, ευρύχωρο πατάρι με αρκετά γραφείο και αντίστοιχο με το ισόγειο, υπόγειο χώρο. Γραφεία παντού!
Ο πελάτης είχε δύο προβλήματα:
α. Έχασε ένα 24port switch.
b. Έχασε τον διαχειριστή του (έφυγε).
Έμεινα στην εταιρεία για περίπου μιάμιση ώρα, αρκετή για να σχηματίσω γνώμη κι άποψη για τον χώρο, την δομημένη, τους ανθρώπους, την υποδομή και τα οικονομικά της εταιρείας.
Διαπίστωσα ότι πρέπει να περάσω αρκετές βδομάδες μέσα στον χώρο για να πάρω την εταιρεία από το σημείο μηδέν, σε μια πολύ καλή εικόνα. Τα switches από τα λαμπιόνια τους φαινόταν ότι τα Χριστούγεννα έχουν έρθει λίγο νωρίτερα και γενικά η εικόνα των συστημάτων (γεμάτοι δίσκοι, απαρχαιωμένος εξοπλισμός) έδειχναν ότι οδεύουν προς τον αδη.
και κάπου εδώ ξεκινά το γαμώτο:
1.
- (εγώ) Καλύτερα να μην αγοράσετε ένα 24port switch (50€) αλλά ένα 48port (100€) για να αντικαταστήσουμε τα μικρά (έως 12port) switches και να μπουν στην άκρη για μια ώρα ανάγκης
- (πελάτης) Δεν γίνεται αυτό που λες, ξέχασέ το.
- Ορίστε;
- Δεν μπορεί να γίνει αυτό που ζητάς. Δεν υπάρχουν τα 50€ για την αγορά του 48port, θα πρέπει να αρκεστούμε σε αυτά που έχουμε κι ίσως να αγοράσουμε από βδομάδα (να αλλάξει ο μήνας) το 24port των 50€
κάπου εκεί ψιλοστράβωσα το στόμα:
- Μια διευκρίνηση, δεν έχετε τα 50€ να αγοράσετε το 24port ή δεν έχετε τα 100€ να αγοράσετε το 48port.
- Αυτή την στιγμή δυσκολευόμαστε πάρα πολύ, ξέρεις καλά ότι οι καιροί είναι δύσκολοι και μπλα μπλα μπλα μπλα μπλα
Συγνώμη καλέ μου άνθρωπε, από την στιγμή που ΔΕΝ έχεις ούτε 50€ να αγοράσεις ένα switch, ΤΙ ΣΚΑΤΑ με έχεις μιάμιση ώρα εδώ να κοιτάζω και να καταγράφω τι χρειάζεσαι; Πως στο διάολο θα με πληρώσεις εμένα; Με κουπόνια;
2.
Μια απλή ματιά στο patch panel μου δείχνει να καταλάβω ότι υπάρχουν περίπου 100 θέσεις εργασίας.
Κοιτώντας όμως τα switches, καταλαβαίνω ότι είτε υπάρχουν κενές θέσεις ή χαλασμένα μπριζάκια.
- (εγώ) Πρέπει να γίνει εκτενής έλεγχος σε όλη την δομημένη, patch panel και switches για να βρεθούν οι θέσεις εργασίας που δεν λειτουργούν.
- (πελάτης) Δεν είναι πολλά, πέντε νομίζω θέσεις εργασίας είναι.
- Μα εγώ διαπιστώνω ότι είναι πολύ περισσότερα, να ορίστε αυτό σημαίνει ότι είτε είναι κλειστές, είτε χαλασμένες. Έχετε υποδομή 100 θέσεων.
- Μα εμείς δεν είμαστε ούτε 40 άτομα, κάποτε ήμασταν παραπάνω, αλλά τώρα ούτε 40 δεν είμαστε.
- Τότε τι το θέλεις το 24port switch; Γιατί δεν ξηλώνεις αυτά που δεν παίζουν;
- Ε αφού υπάρχουν, ας είναι περασμένα κι εδώ!
3.
Ανεβαίνει μια στιγμή στο γραφείο του, καθώς τον ενημέρωσαν για ένα σημαντικό τηλεφώνημα και μένω στον χώρο με ένα παλικαράκι γενικών καθηκόντων.
- (παλικαράκι) Εκεί που δουλεύεις, είναι καλά;
- (εγώ) Καλά είναι, έχουμε κι εμείς προβλήματα βέβαια.
- α μάλιστα, δεν πληρώνεστε κι εσείς ε ;
- μας έχουν μειώσει τον μισθό, αλλά ναι πληρωνόμαστε.
- εμείς εδώ έχουμε να πληρωθούμε 7 μήνες!
4.
Γρήγορα γρήγορα ανεβαίνω στο γραφείο του για να μιλήσουμε λίγο για την υποδομή.
- (εγώ) ξέρετε, οι δίσκοι των servers έχουν γεμίσει και πιθανά στα επόμενα λεπτά να μην μπορείτε να αποθηκεύεται τα αρχεία σας στους fileservers
- Αποκλείεται, εάν είχαν γεμίσει θα το είχαμε καταλάβει.
- Μπορείτε απλά να το δείτε από τον υπολογιστή σας, αυτός ο map drive είναι.
- Πως;;;;; 628kb ελεύθερα. Μα πως; Πότε; Γιατί ;
Θεώρησα καλύτερο να τον λυπηθώ αντί να τον βρίσω (όπως του άξιζε). Του πρότεινα να βρει κανα φοιτητή που θέλει να βγάλει ένα μικρό χαρτζιλίκι, να πάρει ότι θέλει - θα έχει εγγύηση για ένα χρόνο - κι έφυγα.
Dynamic allocation of a virtual hard disk to a virtual machine:
# lvcreate -L 80G -n vg01/data
# virsh attach-disk win2008 /dev/vg_telekvm/profiles vdb
You need to attach a usb device to a libvirt domain without rebooting the virtual machine.
Lets figure this together:
- Locate the usb device:
# lsusb -v
idVendor 0x0781 SanDisk Corp.
idProduct 0x5567 Cruzer Blade
- Build the below XML:
usb_device.xml
<hostdev mode='subsystem' type='usb' managed='yes'>
<source>
<vendor id='0x0781'/>
<product id='0x5567'/>
</source>
</hostdev>
- Attach device
# virsh attach-device VIRTUAL_MACHINE usb_device.xml
and if you want to de-attach:
- De-attache device
# virsh detach-device VIRTUAL_MACHINE usb_device.xml
Περιμένω να πάρω καφέ κι ακριβώς μπροστά μου ανταλλάσσουν απόψεις δύο συνάδελφοι.
Ο ένας δε είναι λίγο χαζούλης (δύο μέτρα ύψος, γεροδεμένος, αλλά κινείται μονότονα σε έναν δικό του ρυθμού), ο έτερος μοιάζει λίγο … τυπάκος (hipster).
- (hipster) Εάν έπρεπε να διαλέξεις ποιος θα ζήσει, εσύ ή κάποιος μετανάστης, τι θα επέλεγες;
- (goofy) Φυσικά θα επέλεγα να ζήσουν και οι δύο.
- (h) Μα πρέπει κάποιος να πεθάνει.
- (g) Δεν πρέπει να πεθάνει κανένας.
- (h) Δεν έχεις άλλη επιλογή, πρέπει να διαλέξεις ποιος θα ζήσει και ποιος θα πεθάνει. Εσύ ή κάποιος αλλοδαπός;
- (g) Με την βοήθεια του Θεού, θα ζήσουν και οι δύο.
Αμέσως ένιωσα τους σφυγμούς μου να ανεβαίνουν.
Προσπάθησα να τους μετρήσω και προσπάθησα να γυρίσω το κεφάλι μου αλλού, μήπως και καταφέρω να ηρεμήσω τους χτύπους της καρδιάς μου.
Τα νεύρα μου όμως ήταν αρκετά τεταμένα κι αναγκάστηκα να δαγκώσω την γλώσσα μου, να σφίξω σε γροθιές τα χέρια μου και να κοιτάζω επίμονα τον τιμοκατάλογο για να μην εκραγώ.
Γιατί ρε αλήτη η δική σου ζωή, η δική σου ψυχή να αξίζει παραπάνω από έναν άλλο άνθρωπο;
Γιατί δεν προσπαθείς να μιλήσεις ως ίσος στον φίλο που νοητικά φαίνεται να είναι τελικά ανώτερος από σένα;
Πριν από λίγες μέρες, έγραψα στο stevyland ένα πολιτικό σχόλιο για τα τεκταινόμενα:
α.
” Καμία παγκόσμια κρίση δεν οφείλεται για το γεγονός ότι τα λεφτά από τα δημόσια ταμεία έχουν κάνει φτερά επειδή μια χούφτα ατόμων με την δική μας συναίνεση (ψήφο) τα έχουν κλέψει. “
β.
” Δεν έχουμε την παιδεία και την μόρφωση, την ηθική και τον σεβασμό, και δυστυχώς στεκόμαστε ανερυθρίαστοι μπροστά στο αποτέλεσμα των προηγούμενων εκλογών. “
γ.
” Σας παρακαλώ, μην ψηφίσετε πολιτικούς που με τις μέχρι τώρα αποφάσεις τους, προσβάλουν την νοημοσύνη σας. “
Αυτά ήταν τα key notes της απάντησής μου και πήρα την εξής απάντηση:
” Ευάγγελε, φλερτάρεις επικίνδυνα με τον φασισμό. Η ιδέα ότι η αλλαγή επέρχεται με την ηθική και την αλλαγή νοοτροπίας είναι μισανθρωπική, ρατσιστική και οικονομικά παρανοϊκή. “
Με λίγα λόγια, η γνώμη μου ότι υπάρχει παγκόσμια ηθική κρίση, το γεγονός ότι πιστεύω με βάση αποδείξεις ότι τα λεφτά μας έχουν κλαπεί κι η άποψή μου ότι όλοι άνθρωποι είναι ίσοι με κάνει φασίστα!
Πιστεύω με όλες τις ρανίδες (κι όχι μόνο την τελευταία μου) τους αίματός μου, ότι η μόρφωση και η παιδεία είναι που έχουν εν τέλη χαθεί. Η οικονομική κρίση που διανύουμε είναι απλά αποτέλεσμα της ηθικής κρίσης.
Στην δουλειά μου, χαίρομαι το γεγονός ότι με χαρακτηρίζουν:
- Αναρχικό
- Αριστεριστή
- ΚΚΕετζή
- Φασίστα
- Δεξιό
το μόνο που δεν με έχουν πει ακόμα είναι σοσιαλιστή, παρότι που (συγνώμη για αυτό) στα πρώτα μου χρόνια ψήφισα πασοκ.
Πριν από λίγες μέρες αναρτήθηκαν στο διαδίκτυο τα “ανάλατα” hashed συνθηματικά των χρηστών από κάποια δημοφιλή site (linkedin, last.fm, eharmony).
Διάβασα αρκετά άρθρα γύρω από το θέμα, την ασφάλεια των διαδικτυακών ιστοτόπων, την προστασία των χρηστών και διάφορες τεχνικές που χρησιμοποιούνται ευρέως. Δυστυχώς εάν και τεχνικά άρθρα τα περισσότερα ΔΕΝ εξηγούσαν με απλό τρόπο τι έχει γίνει, πως μας επηρεάζει (ως χρήστες του διαδικτύου), τι επιπτώσεις έχει πάνω μας και πως μπορούμε να προστατευτούμε από παρόμοιες περιπτώσεις.
Θα προσπαθήσω μέσα από αυτό το άρθρο, μη μιλώντας πολύ τεχνικά, να εξηγήσω κάποια πράγματα και να διορθώσω τις λανθασμένες απόψεις μερικών “ειδικών” που όπως φαίνεται δεν γνωρίζουν από απλά μαθηματικά! Ο σκοπός αυτού του άρθρου είναι καθαρά ενημερωτικός κι όχι εκπαιδευτικός
The Story
Θα ξεκινήσουμε από το τι ακριβώς έγινε.
Τι ειπώθηκε: “Δημοσιεύτηκαν οι κρυπτογραφημένοι κωδικοί”
Τι εν τέλη έγινε και γιατί αυτό που ακούσαμε/διαβάσαμε είναι λάθος.
Εάν και υπάρχει πολύ μεγάλη (και θεωρητική) συζήτηση πίσω από αυτό το θέμα, θα αρκεστούμε ότι κρυπτογραφία σημαίνει ότι μπορώ και να κρυπτογραφήσω και να αποκρυπτογραφήσω το περιεχόμενο/αποτέλεσμα ενός αρχείου.
Τα συνθηματικά ΔΕΝ αποθηκεύονται κρυπτογραφημένα, δλδ δεν μπορούν να αποκρυπτογραφηθούν.
Αποθηκεύονται μετασχηματισμένα με βάση κρυπτογραφικών αλγόριθμων.
Οι δύο πιο γνωστοί είναι ο md5 και ο sha1 (και φυσικά οι παραλλαγές τους).
Οι μαθητικοί αλγόριθμοι hash (md5/sha1) έχουν την ιδιότητα ότι για οποιοδήποτε είσοδο (ανεξαρτήτως μέγεθος) παράγουν ένα αποτέλεσμα 32 χαρακτήρων (md5) και 40 χαρακτήρων (sha1) αντίστοιχα.
Από το αποτέλεσμα δεν μπορείς να βρεις την αρχική είσοδο.
Ας κάνουμε ένα παράδειγμα:
$ echo -n test | md5sum
098f6bcd4621d373cade4e832627b4f6
$ echo -n test | sha1sum
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
Αυτά που κυκλοφόρησαν είναι τα παραπάνω hashed των κωδικών.
Λόγω του περιορισμού των χαρακτήρων (32/40 αντίστοιχα) προκύπτει ότι μπορεί να παραχθεί το ίδιο hash από δύο διαφορετικά συνθηματικά (αδυναμία αλγόριθμου).
Hashes
- Οπότε αφού δεν αποθηκεύεται clear text το συνθηματικό μου, είμαι ασφαλής;
- Όχι!
Οι hackers τι κάνουν;
Χρησιμοποιούν λεξικά (όχι μόνο το english.dic αλλά γενικά λεξικά με latin based characters) και με την χρήση των σύγχρονων υπολογιστικών συστημάτων, παράγουν hashes με βάση τα λεξικά. Συγκρίνουν τα hashes με βάση την λέξη εισόδου κι έτσι ανακαλύπτουν τον αρχικό κωδικό. Πλέον αυτά τα προγράμματα έχουν προσαρμοστεί ώστε να παράγουν και τις παραλλαγές των κωδικών αυτών.
Για παράδειγμα, αντικαθιστούν το λατινικό γράμμα l (L) με 1 ή !, ομοίως και το i, κι ούτω καθεξής.
Έτσι για την λέξη: lemon δοκιμάζει και τις παρακάτω παραλλαγές:
lemon
1emon
!emon
l3mon
l#mon
lem0n
lemOn
lem)n
Δυστυχώς δεν έχουμε ακόμα εκπαιδεύσει σωστά τους χρήστες μας, οπότε πιθανά στο site: example.com
τα πιο συνήθη συνθηματικά θα είναι της εξής μορφής:
3x@mpl#
παραλλαγή δλδ του ίδιου domain!
Εμείς θεωρούμε ότι έχουμε ένα δύσκολο (για να θυμόμαστε) κωδικό ενώ αντιθέτως οι hackers έχουν ήδη τον κωδικό στο λεξικό τους! Συγκρίνοντας τα unsalted hashed μπορούν να βρουν τους κωδικούς μας.
Salted Hashes
Αφού διευκρινίσαμε ότι δεν υπάρχει μεγάλη ασφάλεια με τα unsalted hashed (εάν φυσικά διαρρεύσουν), ας προχωρήσουμε με το τι είναι τα salted hashes.
Τα salted hashes είναι τα αλφαριθμητικά που προκύπτουν από την προσθήκη τυχαίων χαρακτήρων στο αρχικό συνθηματικό. Η προσθήκη γίνεται όμως πάντα με τον ίδιο τρόπο (αρχή ή τέλος). Κάθε προγραμματιστής που σέβεται τους χρήστες του, θα πρέπει να ακολουθεί το παραπάνω μηχανισμό. Από την στιγμή που αλλάζει δυναμικά το συνθηματικό, στην βάση αποθηκεύεται πλέον το salted hash κι αυτό δεν έχει καμία σχέση με το αρχικό μας συνθηματικό.
Να το δούμε λίγο πρακτικά με ένα πολύ απλό παράδειγμα.
Εμείς δίνουμε τον κωδικό: test
Προστίθεται το “αλάτι” : “f0c8454f070d1a”
Γίνεται δυναμικά : “test + f0c8454f070d1a”
Τώρα συγκρίνουμε τα hashes:
$ echo -n test | sha256sum -
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 -
$ echo -n testf0c8454f070d1a | sha256sum -
fdcbbbbf0081199f46fa0629c0faa06a6a99cf22a5ff63f17b0ebb88e355c6e5 -
Τώρα εάν διαρρεύσει η βάση με τα συνθηματικά είμαστε πιο ασφαλής, καθώς δεν μπορεί να γνωρίζει κανείς πως έχει προκύψει το salted hash και ποιος είναι ο κωδικός μας.
Security
Άρα είμαστε πλέον ασφαλής.
- Όχι.
Τα salted hashes μας προστατεύουν μονάχα εάν διαρρεύσει η βάση με τους κωδικούς.
Δεν μας προστατεύει από την αδυναμία του ίδιου μας του κωδικού. Δλδ το πόσο εύκολα μπορεί να βρεθεί.
Όπως φαίνεται οι hackers διαθέτουν (τουλάχιστον) μια βάση με 6 εκατομμύρια unsalted hashed κωδικούς. Κι όλα αυτά μονάχα από ένα site! Είναι αυτονόητο, ότι όσο πιο πολλές βάσεις hack-εύουν τόσο πιο εύκολο γίνεται για αυτούς να “μαντέψουν” το δικό μας αρχικό κωδικό.
- Τι επίπτωση έχει σε εμάς, εάν διαρρεύσει ο κωδικός από ένα από τα παραπάνω sites;
Εάν έχω τον λογαριασμό ebal σε ένα site με κωδικό test, τότε σε ένα άλλο site θα έχω (πιθανά) test1 ή όνομα χρήστη: ebal1 κι ούτω καθεξής.
Ορίστε πως περίπου είναι οι περισσότεροι χρήστες:
site: username: password
site1: ebal : test
site2: ebal: test1
site3: ebal: test!
site4: Evaggelos: test!
site5: EvaggelosBalaskas: test1!
site6: ebalaskas _at_ ebalaskas _gr_: t3st1!
Με λίγα λόγια, εάν μας “φάνε” τον κωδικό από ένα site, είναι πολύ εύκολο εν δυνάμει να μας “φάνε” τους λογαριασμούς μας κι από τρίτα sites. Αφού έχουν “εκπαιδεύσει” τα προγράμματά τους με τις νέες παραλλαγές κωδικών.
Strong Passwords
Οι άνθρωποι που ασχολούνται επαγγελματικά με το “σπάσιμο” κωδικών, στις μέρες μας είναι εξοπλισμένοι με την τελευταία τεχνολογικά υπολογιστική δύναμη που κάνει την δουλειά τους αρκετά εύκολη. Ενώ πριν μερικά χρόνια ήθελαν μερικούς μήνες, τώρα αρκούν μερικές ώρες. Κατά μέσο όρο, σε περίπου 6 ώρες ένα unsalted md5 hash σπάει, σε λιγότερο από 3 ώρες εάν είναι βασισμένο σε λεξικό, σε λιγότερο από μια ώρα εάν είναι κάτω από 8 χαρακτήρες, σε 15 λεπτά εάν είναι 6 χαρακτήρες. Σε 1 κλάσμα εάν είναι το 123456.
Επίσης με τόσους κωδικούς, μπορούν να παράγουν κι όλες τις δυνατές παραλλαγές. Οπότε το strong>3x@mpl#</strong θέλει περίπου 1.5λεπτό!
Κατ’ εμέ το βασικότερο πρόβλημα στην παραγωγή κωδικών είναι η δημιουργία μικρών αλλά δύσκολων κωδικών.
Εάν πιστεύεται ότι ο κωδικός σας, είναι δύσκολος, έχει γράμματα, έχει κεφαλαία, έχει αριθμούς, έχει σύμβολα και τον θυμάστε δύσκολα, αλλά είναι 8 με 10 χαρακτήρες, τότε κάνετε ένα μεγάλο ΛΑΘΟΣ!
Έχετε δημιουργήσει έναν πολύ δύσκολο κωδικό για ανθρώπους, αλλά έναν πολύ εύκολο για να σπάσει από κάποιο πρόγραμμα!!!
Η πρόταση μου:
Οι κωδικοί πρέπει να είναι αρκετά μεγάλοι (τουλάχιστον 16χαρακτήρες) και να μην βασίζονται σε λεξικά. Εάν θέλω να φτιάξω έναν κωδικό για το email μου τότε το: ” ένας κωδικός για το email μου ” είναι κάτι που μπορώ να θυμάμαι και το αποτέλεσμα με λατινικούς χαρακτήρες είναι το: “enaskwdikosgiatoemailmou” το οποίο θέλει περίπου: 30.11 trillion centuries
Είναι τόσο απλό, οι πολλοί χαρακτήρες αυξάνουν γεωμετρικά την δυσκολία σε ένα κωδικό.
Το “strong>kWdik0sem@il1</strong” ( παραλλαγή του “κωδικός email 1”) είναι πιο εύκολο να σπάσει από το “enaskwdikosgiatoemailmou” !!!
Αυτονόητο είναι ότι με την προσθήκη κεφαλαίων, αριθμών & συμβόλων η πολυπλοκότητα μεγαλώνει, αλλά το κύριο χαρακτηριστικό είναι το πλήθος των χαρακτήρων. Εάν όμως έχετε λέξη από λεξικό, τότε μειώνεται γεωμετρικά την ασφάλεια του κωδικού σας.
Conclusion
Πολύ μεγάλη προσοχή, ακόμα κι εάν δεν είχατε λογαριασμό στα παραπάνω sites.
Ξεκινήστε να αλλάζετε όλους τους κωδικούς σας, σε όλα τα sites που έχετε.
Δημιουργήστε εύκολους κωδικούς που να μπορείτε να τους θυμάστε, αλλά μεγάλους.
ΜΗΝ χρησιμοποιείτε μέρος του site,
ΜΗΝ χρησιμοποιείτε λέξεις από λεξικό,
ΜΗΝ χρησιμοποιείτε λιγότερο από 16 χαρακτήρες
και
ΚΑΛΗ ΤΥΧΗ
ρίξτε μια ματιά στα εξής sites:
Password Haystacks
Strong Password Generator
Password Strength