VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS28.93%
Net Worth
1.130USD
STEEM
0.001STEEM
SBD
2.171SBD
Effective Power
5.001SP
├── Own SP
1.095SP
└── Incoming DelegationsDeleg
+3.906SP
Detailed Balance
| STEEM | ||
| balance | 0.001STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 1.095SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 3.906SP | SP |
| Effective Power | 5.001SP | SP |
| Reward SP (pending) | 0.000SP | SP |
| SBD | ||
| sbd_balance | 2.171SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.000SBD | SBD |
{
"balance": "0.001 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.000 STEEM",
"vesting_shares": "1782.386181 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "6361.273625 VESTS",
"sbd_balance": "2.171 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.000 SBD",
"conversions": []
}Account Info
| name | npna |
| id | 536213 |
| rank | 740,087 |
| reputation | 8337539880 |
| created | 2017-12-29T00:31:57 |
| recovery_account | steem |
| proxy | None |
| post_count | 87 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2018-04-29T10:21:00 |
| last_root_post | 2018-04-25T12:20:21 |
| last_vote_time | 2018-03-10T00:22:21 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.001 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 2.171 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 1782.386181 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 6361.273625 VESTS |
| reward_vesting_balance | 0.000000 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 2020-05-02T18:00:45 |
| last_account_update | 2020-05-02T18:00:45 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 2018-08-03T10:25:45 |
| savings_sbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"id": 536213,
"name": "npna",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7vyeY6PzJmukEPGR56jm8tTGUnZs99H5x5CGekqMHy38uzV25H",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6BryaonxN5ePuQrXGjAYUsFE6Fg6MTmgvu5rL5HD3Bz4dPL7yY",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6KvCCFTGqv2VHs9ED8den2s2VHt6yvZpkjLfn7q3WC8MZsGHYF",
1
]
]
},
"memo_key": "STM585cVbcj3tEMi1wLPEHyQYn8XGUo8dCzRdYpexehDEirMFFSun",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg\",\"name\":\"Riccardo Giuntoli\",\"about\":\"#unix #security #hacking #cryptography #cryptocurrency\",\"location\":\"NPNA - No Place No address\",\"website\":\"https://www.facebook.com/noplacenoaddress/\",\"cover_image\":\"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95\"}}",
"posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg\",\"name\":\"Riccardo Giuntoli\",\"about\":\"#unix #security #hacking #cryptography #cryptocurrency\",\"location\":\"NPNA - No Place No address\",\"website\":\"https://www.facebook.com/noplacenoaddress/\",\"cover_image\":\"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95\"}}",
"proxy": "",
"last_owner_update": "2020-05-02T18:00:45",
"last_account_update": "2020-05-02T18:00:45",
"created": "2017-12-29T00:31:57",
"mined": false,
"recovery_account": "steem",
"last_account_recovery": "1970-01-01T00:00:00",
"reset_account": "null",
"comment_count": 0,
"lifetime_vote_count": 0,
"post_count": 87,
"can_vote": true,
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779078978
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779078978
},
"voting_power": 0,
"balance": "0.001 STEEM",
"savings_balance": "0.000 STEEM",
"sbd_balance": "2.171 SBD",
"sbd_seconds": "0",
"sbd_seconds_last_update": "2018-08-03T10:25:45",
"sbd_last_interest_payment": "2018-08-03T10:25:45",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"reward_sbd_balance": "0.000 SBD",
"reward_steem_balance": "0.000 STEEM",
"reward_vesting_balance": "0.000000 VESTS",
"reward_vesting_steem": "0.000 STEEM",
"vesting_shares": "1782.386181 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "6361.273625 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"withdrawn": 0,
"to_withdraw": 0,
"withdraw_routes": 0,
"curation_rewards": 1,
"posting_rewards": 730,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"witnesses_voted_for": 0,
"last_post": "2018-04-29T10:21:00",
"last_root_post": "2018-04-25T12:20:21",
"last_vote_time": "2018-03-10T00:22:21",
"post_bandwidth": 0,
"pending_claimed_accounts": 0,
"vesting_balance": "0.000 STEEM",
"reputation": "8337539880",
"transfer_history": [],
"market_history": [],
"post_history": [],
"vote_history": [],
"other_history": [],
"witness_votes": [],
"tags_usage": [],
"guest_bloggers": [],
"rank": 740087
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2026/05/18 04:36:18
2026/05/18 04:36:18
| delegator | steem |
| delegatee | npna |
| vesting shares | 6361.273625 VESTS |
| Transaction Info | Block #106148646/Trx 3af02ddb7ad8939c0c9c2e30bfd8a90790040c02 |
View Raw JSON Data
{
"trx_id": "3af02ddb7ad8939c0c9c2e30bfd8a90790040c02",
"block": 106148646,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-05-18T04:36:18",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "6361.273625 VESTS"
}
]
}2026/05/12 21:29:39
2026/05/12 21:29:39
| delegator | steem |
| delegatee | npna |
| vesting shares | 3649.063220 VESTS |
| Transaction Info | Block #105996848/Trx ecb01c3497c077b1f37b9f1b29239781322ff148 |
View Raw JSON Data
{
"trx_id": "ecb01c3497c077b1f37b9f1b29239781322ff148",
"block": 105996848,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-05-12T21:29:39",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "3649.063220 VESTS"
}
]
}2026/04/26 03:50:30
2026/04/26 03:50:30
| delegator | steem |
| delegatee | npna |
| vesting shares | 6373.789381 VESTS |
| Transaction Info | Block #105516176/Trx edb719312e2446eb2eb6541b37c8e854a6bd9def |
View Raw JSON Data
{
"trx_id": "edb719312e2446eb2eb6541b37c8e854a6bd9def",
"block": 105516176,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-04-26T03:50:30",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "6373.789381 VESTS"
}
]
}2026/01/23 19:29:24
2026/01/23 19:29:24
| delegator | steem |
| delegatee | npna |
| vesting shares | 3690.610039 VESTS |
| Transaction Info | Block #102865813/Trx e9bd2e71c248a63126a47108996b222930298467 |
View Raw JSON Data
{
"trx_id": "e9bd2e71c248a63126a47108996b222930298467",
"block": 102865813,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2026-01-23T19:29:24",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "3690.610039 VESTS"
}
]
}2024/12/17 14:41:03
2024/12/17 14:41:03
| delegator | steem |
| delegatee | npna |
| vesting shares | 3854.829236 VESTS |
| Transaction Info | Block #91312062/Trx f102fc2369b2a39953c757a771d80d64a3a3e971 |
View Raw JSON Data
{
"trx_id": "f102fc2369b2a39953c757a771d80d64a3a3e971",
"block": 91312062,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2024-12-17T14:41:03",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "3854.829236 VESTS"
}
]
}2023/11/14 06:22:12
2023/11/14 06:22:12
| delegator | steem |
| delegatee | npna |
| vesting shares | 4023.962768 VESTS |
| Transaction Info | Block #79866217/Trx 589b2e5bb14740a8ed71a90027c8f7d4cfc7f3f0 |
View Raw JSON Data
{
"trx_id": "589b2e5bb14740a8ed71a90027c8f7d4cfc7f3f0",
"block": 79866217,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-11-14T06:22:12",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "4023.962768 VESTS"
}
]
}2023/09/22 08:23:27
2023/09/22 08:23:27
| delegator | steem |
| delegatee | npna |
| vesting shares | 6960.871554 VESTS |
| Transaction Info | Block #78360474/Trx 2ac86654c251c5f7c80d6e83c9a9c6577f3234e9 |
View Raw JSON Data
{
"trx_id": "2ac86654c251c5f7c80d6e83c9a9c6577f3234e9",
"block": 78360474,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2023-09-22T08:23:27",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "6960.871554 VESTS"
}
]
}2022/11/03 16:07:06
2022/11/03 16:07:06
| delegator | steem |
| delegatee | npna |
| vesting shares | 7182.922992 VESTS |
| Transaction Info | Block #69118534/Trx b0b495ee3f907e6bc0931b0154b82c97a4fc122e |
View Raw JSON Data
{
"trx_id": "b0b495ee3f907e6bc0931b0154b82c97a4fc122e",
"block": 69118534,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-11-03T16:07:06",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "7182.922992 VESTS"
}
]
}2022/01/17 21:28:54
2022/01/17 21:28:54
| delegator | steem |
| delegatee | npna |
| vesting shares | 7403.030593 VESTS |
| Transaction Info | Block #60821977/Trx 8f56850a036886e9f1c47541893aa69d1f0aab35 |
View Raw JSON Data
{
"trx_id": "8f56850a036886e9f1c47541893aa69d1f0aab35",
"block": 60821977,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2022-01-17T21:28:54",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "7403.030593 VESTS"
}
]
}2021/06/14 04:44:06
2021/06/14 04:44:06
| delegator | steem |
| delegatee | npna |
| vesting shares | 7587.224881 VESTS |
| Transaction Info | Block #54612393/Trx c7c824e319da27fd45c45cdd022fb96d8391858a |
View Raw JSON Data
{
"trx_id": "c7c824e319da27fd45c45cdd022fb96d8391858a",
"block": 54612393,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2021-06-14T04:44:06",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "7587.224881 VESTS"
}
]
}2020/12/11 14:57:57
2020/12/11 14:57:57
| delegator | steem |
| delegatee | npna |
| vesting shares | 7774.646855 VESTS |
| Transaction Info | Block #49359706/Trx a24a84c858d8936e1b50f719b29accc259191294 |
View Raw JSON Data
{
"trx_id": "a24a84c858d8936e1b50f719b29accc259191294",
"block": 49359706,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-11T14:57:57",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "7774.646855 VESTS"
}
]
}2020/12/06 08:34:18
2020/12/06 08:34:18
| delegator | steem |
| delegatee | npna |
| vesting shares | 1912.543513 VESTS |
| Transaction Info | Block #49211247/Trx 305916c1d32157eb398eab2cc7db25ed2830f70b |
View Raw JSON Data
{
"trx_id": "305916c1d32157eb398eab2cc7db25ed2830f70b",
"block": 49211247,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-06T08:34:18",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "1912.543513 VESTS"
}
]
}2020/12/05 18:35:42
2020/12/05 18:35:42
| delegator | steem |
| delegatee | npna |
| vesting shares | 7780.854709 VESTS |
| Transaction Info | Block #49194790/Trx 6e1dc48c45b46adb21f991293f3cfb93f2a64b89 |
View Raw JSON Data
{
"trx_id": "6e1dc48c45b46adb21f991293f3cfb93f2a64b89",
"block": 49194790,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-12-05T18:35:42",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "7780.854709 VESTS"
}
]
}2020/11/02 23:38:00
2020/11/02 23:38:00
| delegator | steem |
| delegatee | npna |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #48267215/Trx 9869f85f438b2b8d13d5ba56238629914f0600b3 |
View Raw JSON Data
{
"trx_id": "9869f85f438b2b8d13d5ba56238629914f0600b3",
"block": 48267215,
"trx_in_block": 18,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-11-02T23:38:00",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "1920.017158 VESTS"
}
]
}2020/08/02 04:26:54
2020/08/02 04:26:54
| delegator | steem |
| delegatee | npna |
| vesting shares | 7916.705898 VESTS |
| Transaction Info | Block #45630790/Trx bd3e26669ac591d81f151bba7acf6534dc8d75fb |
View Raw JSON Data
{
"trx_id": "bd3e26669ac591d81f151bba7acf6534dc8d75fb",
"block": 45630790,
"trx_in_block": 9,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-08-02T04:26:54",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "7916.705898 VESTS"
}
]
}2020/07/24 05:54:36
2020/07/24 05:54:36
| delegator | steem |
| delegatee | npna |
| vesting shares | 28228.080062 VESTS |
| Transaction Info | Block #45375490/Trx 57fc2b71c4d2bd5c1a62a463e2e5d04bd2040a05 |
View Raw JSON Data
{
"trx_id": "57fc2b71c4d2bd5c1a62a463e2e5d04bd2040a05",
"block": 45375490,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-07-24T05:54:36",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "28228.080062 VESTS"
}
]
}2020/05/09 09:35:30
2020/05/09 09:35:30
| delegator | steem |
| delegatee | npna |
| vesting shares | 7983.660068 VESTS |
| Transaction Info | Block #43221547/Trx fe09b8db0bbb08e19d232e9957f1556efaafb8e0 |
View Raw JSON Data
{
"trx_id": "fe09b8db0bbb08e19d232e9957f1556efaafb8e0",
"block": 43221547,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-09T09:35:30",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "7983.660068 VESTS"
}
]
}2020/05/08 13:46:27
2020/05/08 13:46:27
| delegator | steem |
| delegatee | npna |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #43198328/Trx 559a8cd1be7cbfbbdaa98419720e70454c8b4fb4 |
View Raw JSON Data
{
"trx_id": "559a8cd1be7cbfbbdaa98419720e70454c8b4fb4",
"block": 43198328,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-08T13:46:27",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "1953.311140 VESTS"
}
]
}npnaupdated their account properties2020/05/02 18:00:45
npnaupdated their account properties
2020/05/02 18:00:45
| account | npna |
| owner | {"weight_threshold":1,"account_auths":[],"key_auths":[["STM7vyeY6PzJmukEPGR56jm8tTGUnZs99H5x5CGekqMHy38uzV25H",1]]} |
| active | {"weight_threshold":1,"account_auths":[],"key_auths":[["STM6BryaonxN5ePuQrXGjAYUsFE6Fg6MTmgvu5rL5HD3Bz4dPL7yY",1]]} |
| posting | {"weight_threshold":1,"account_auths":[],"key_auths":[["STM6KvCCFTGqv2VHs9ED8den2s2VHt6yvZpkjLfn7q3WC8MZsGHYF",1]]} |
| memo key | STM585cVbcj3tEMi1wLPEHyQYn8XGUo8dCzRdYpexehDEirMFFSun |
| json metadata | {"profile":{"profile_image":"https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg","name":"Riccardo Giuntoli","about":"#unix #security #hacking #cryptography #cryptocurrency","location":"NPNA - No Place No address","website":"https://www.facebook.com/noplacenoaddress/","cover_image":"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95"}} |
| Transaction Info | Block #43034692/Trx f46b066356f998fbbd64a07ce2e7603e9e1c3152 |
View Raw JSON Data
{
"trx_id": "f46b066356f998fbbd64a07ce2e7603e9e1c3152",
"block": 43034692,
"trx_in_block": 40,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2020-05-02T18:00:45",
"op": [
"account_update",
{
"account": "npna",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7vyeY6PzJmukEPGR56jm8tTGUnZs99H5x5CGekqMHy38uzV25H",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6BryaonxN5ePuQrXGjAYUsFE6Fg6MTmgvu5rL5HD3Bz4dPL7yY",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6KvCCFTGqv2VHs9ED8den2s2VHt6yvZpkjLfn7q3WC8MZsGHYF",
1
]
]
},
"memo_key": "STM585cVbcj3tEMi1wLPEHyQYn8XGUo8dCzRdYpexehDEirMFFSun",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg\",\"name\":\"Riccardo Giuntoli\",\"about\":\"#unix #security #hacking #cryptography #cryptocurrency\",\"location\":\"NPNA - No Place No address\",\"website\":\"https://www.facebook.com/noplacenoaddress/\",\"cover_image\":\"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95\"}}"
}
]
}2019/12/29 01:32:48
2019/12/29 01:32:48
| parent author | npna |
| parent permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| author | steemitboard |
| permlink | steemitboard-notify-npna-20191229t013247000z |
| title | |
| body | Congratulations @npna! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@npna/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@npna) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=npna)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| Transaction Info | Block #39447932/Trx cbc76633888a67f5114925ab5e99e6845cbb1d38 |
View Raw JSON Data
{
"trx_id": "cbc76633888a67f5114925ab5e99e6845cbb1d38",
"block": 39447932,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-12-29T01:32:48",
"op": [
"comment",
{
"parent_author": "npna",
"parent_permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"author": "steemitboard",
"permlink": "steemitboard-notify-npna-20191229t013247000z",
"title": "",
"body": "Congratulations @npna! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@npna/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@npna) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=npna)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
}
]
}2019/09/18 06:06:12
2019/09/18 06:06:12
| delegator | steem |
| delegatee | npna |
| vesting shares | 8116.274498 VESTS |
| Transaction Info | Block #36521497/Trx f445059ffe6420382f4b80b9cc446975d6a6967c |
View Raw JSON Data
{
"trx_id": "f445059ffe6420382f4b80b9cc446975d6a6967c",
"block": 36521497,
"trx_in_block": 19,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2019-09-18T06:06:12",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "8116.274498 VESTS"
}
]
}2018/12/29 01:23:09
2018/12/29 01:23:09
| parent author | npna |
| parent permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| author | steemitboard |
| permlink | steemitboard-notify-npna-20181229t012308000z |
| title | |
| body | Congratulations @npna! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@npna/birthday1.png</td><td>1 Year on Steemit</td></tr></table> <sub>_[Click here to view your Board](https://steemitboard.com/@npna)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png"></a></td><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues">Christmas Challenge - The party continues</a></td></tr><tr><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png"></a></td><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends">Christmas Challenge - Send a gift to to your friends</a></td></tr></table> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| Transaction Info | Block #28974503/Trx 4171a0b032df532efd48d19d46c6e16d77ecbffd |
View Raw JSON Data
{
"trx_id": "4171a0b032df532efd48d19d46c6e16d77ecbffd",
"block": 28974503,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-12-29T01:23:09",
"op": [
"comment",
{
"parent_author": "npna",
"parent_permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"author": "steemitboard",
"permlink": "steemitboard-notify-npna-20181229t012308000z",
"title": "",
"body": "Congratulations @npna! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@npna/birthday1.png</td><td>1 Year on Steemit</td></tr></table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@npna)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png\"></a></td><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues\">Christmas Challenge - The party continues</a></td></tr><tr><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png\"></a></td><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends\">Christmas Challenge - Send a gift to to your friends</a></td></tr></table>\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
}
]
}jmkengineeringupvoted (100.00%) @npna / openbsd-and-freedos-vs-the-hell-in-earth2018/12/18 14:12:36
jmkengineeringupvoted (100.00%) @npna / openbsd-and-freedos-vs-the-hell-in-earth
2018/12/18 14:12:36
| voter | jmkengineering |
| author | npna |
| permlink | openbsd-and-freedos-vs-the-hell-in-earth |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28673261/Trx 85b853c40f5194b92244c8e64dcff4b530b76ca8 |
View Raw JSON Data
{
"trx_id": "85b853c40f5194b92244c8e64dcff4b530b76ca8",
"block": 28673261,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-12-18T14:12:36",
"op": [
"vote",
{
"voter": "jmkengineering",
"author": "npna",
"permlink": "openbsd-and-freedos-vs-the-hell-in-earth",
"weight": 10000
}
]
}karenielupvoted (100.00%) @npna / openbsd-alpine-and-docker-the-good-the-bad-and-the-hugly2018/12/02 20:09:12
karenielupvoted (100.00%) @npna / openbsd-alpine-and-docker-the-good-the-bad-and-the-hugly
2018/12/02 20:09:12
| voter | kareniel |
| author | npna |
| permlink | openbsd-alpine-and-docker-the-good-the-bad-and-the-hugly |
| weight | 10000 (100.00%) |
| Transaction Info | Block #28219862/Trx f3d8459523f6f65d522a6d2ef654a5994006637f |
View Raw JSON Data
{
"trx_id": "f3d8459523f6f65d522a6d2ef654a5994006637f",
"block": 28219862,
"trx_in_block": 23,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-12-02T20:09:12",
"op": [
"vote",
{
"voter": "kareniel",
"author": "npna",
"permlink": "openbsd-alpine-and-docker-the-good-the-bad-and-the-hugly",
"weight": 10000
}
]
}2018/10/08 18:04:54
2018/10/08 18:04:54
| delegator | steem |
| delegatee | npna |
| vesting shares | 8314.295410 VESTS |
| Transaction Info | Block #26634422/Trx 4e664b1247c8eeec3b04cddc9935ea51130cb498 |
View Raw JSON Data
{
"trx_id": "4e664b1247c8eeec3b04cddc9935ea51130cb498",
"block": 26634422,
"trx_in_block": 35,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-10-08T18:04:54",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "8314.295410 VESTS"
}
]
}2018/08/03 10:25:45
2018/08/03 10:25:45
| from | merlin7 |
| to | npna |
| amount | 0.001 SBD |
| memo | Hi I am lady Merlin...You are awesome.I need your friendship,i am following you, kindly follow me .I can get you FREE UPVOTES JUST FOR FRIENDSHIP..Thank you |
| Transaction Info | Block #24741151/Trx 91e3c906fc0924383b40259e7bf8608f892531d4 |
View Raw JSON Data
{
"trx_id": "91e3c906fc0924383b40259e7bf8608f892531d4",
"block": 24741151,
"trx_in_block": 43,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-08-03T10:25:45",
"op": [
"transfer",
{
"from": "merlin7",
"to": "npna",
"amount": "0.001 SBD",
"memo": "Hi I am lady Merlin...You are awesome.I need your friendship,i am following you, kindly follow me .I can get you FREE UPVOTES JUST FOR FRIENDSHIP..Thank you"
}
]
}cosmicboy123upvoted (100.00%) @npna / openbsd-is-back-now-with-gnupg2018/07/29 03:21:09
cosmicboy123upvoted (100.00%) @npna / openbsd-is-back-now-with-gnupg
2018/07/29 03:21:09
| voter | cosmicboy123 |
| author | npna |
| permlink | openbsd-is-back-now-with-gnupg |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24588725/Trx bf44da53fe847643be5e28fff4f6e7399d9c52f2 |
View Raw JSON Data
{
"trx_id": "bf44da53fe847643be5e28fff4f6e7399d9c52f2",
"block": 24588725,
"trx_in_block": 15,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-29T03:21:09",
"op": [
"vote",
{
"voter": "cosmicboy123",
"author": "npna",
"permlink": "openbsd-is-back-now-with-gnupg",
"weight": 10000
}
]
}2018/07/19 08:02:57
2018/07/19 08:02:57
| voter | psilovybin |
| author | npna |
| permlink | re-psilovybin-redcore-linux-a-gentoo-distro-worth-a-look-20180308t183853269z |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24307005/Trx e0abaecea86dabbc1ca0366a8c8c65d2aa3eae77 |
View Raw JSON Data
{
"trx_id": "e0abaecea86dabbc1ca0366a8c8c65d2aa3eae77",
"block": 24307005,
"trx_in_block": 15,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-19T08:02:57",
"op": [
"vote",
{
"voter": "psilovybin",
"author": "npna",
"permlink": "re-psilovybin-redcore-linux-a-gentoo-distro-worth-a-look-20180308t183853269z",
"weight": 10000
}
]
}npnaupdated their account properties2018/07/09 17:02:21
npnaupdated their account properties
2018/07/09 17:02:21
| account | npna |
| memo key | STM7Ef63M5KJvGYjqmLtDCugDY2WNvae97F9u8bR912UiH1SanTU8 |
| json metadata | {"profile":{"profile_image":"https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg","name":"Riccardo Giuntoli","about":"#unix #security #hacking #cryptography #cryptocurrency","location":"NPNA - No Place No address","website":"https://www.facebook.com/noplacenoaddress/","cover_image":"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95"}} |
| Transaction Info | Block #24029926/Trx 9d6c067833e2144fa43a0ece37c71ae3f03eb0c7 |
View Raw JSON Data
{
"trx_id": "9d6c067833e2144fa43a0ece37c71ae3f03eb0c7",
"block": 24029926,
"trx_in_block": 41,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T17:02:21",
"op": [
"account_update",
{
"account": "npna",
"memo_key": "STM7Ef63M5KJvGYjqmLtDCugDY2WNvae97F9u8bR912UiH1SanTU8",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg\",\"name\":\"Riccardo Giuntoli\",\"about\":\"#unix #security #hacking #cryptography #cryptocurrency\",\"location\":\"NPNA - No Place No address\",\"website\":\"https://www.facebook.com/noplacenoaddress/\",\"cover_image\":\"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95\"}}"
}
]
}npnafollowed @aashishpandey342018/07/09 17:00:48
npnafollowed @aashishpandey34
2018/07/09 17:00:48
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"aashishpandey34","what":["blog"]}] |
| Transaction Info | Block #24029895/Trx 665e6a55e7d0a22b5b33550a34d785ce0a274f49 |
View Raw JSON Data
{
"trx_id": "665e6a55e7d0a22b5b33550a34d785ce0a274f49",
"block": 24029895,
"trx_in_block": 43,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T17:00:48",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"aashishpandey34\",\"what\":[\"blog\"]}]"
}
]
}2018/07/09 17:00:39
2018/07/09 17:00:39
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"f17mous","what":["blog"]}] |
| Transaction Info | Block #24029892/Trx 5d0eca0d9796566a2e9798a60274aa2e33e77dc1 |
View Raw JSON Data
{
"trx_id": "5d0eca0d9796566a2e9798a60274aa2e33e77dc1",
"block": 24029892,
"trx_in_block": 60,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T17:00:39",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"f17mous\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @theshadowbrokers2018/07/09 16:58:39
npnafollowed @theshadowbrokers
2018/07/09 16:58:39
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"theshadowbrokers","what":["blog"]}] |
| Transaction Info | Block #24029852/Trx e511093792676425a2a5a156496d3ddfa9eab13c |
View Raw JSON Data
{
"trx_id": "e511093792676425a2a5a156496d3ddfa9eab13c",
"block": 24029852,
"trx_in_block": 34,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-09T16:58:39",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"theshadowbrokers\",\"what\":[\"blog\"]}]"
}
]
}2018/07/04 16:33:39
2018/07/04 16:33:39
| delegator | steem |
| delegatee | npna |
| vesting shares | 28662.670315 VESTS |
| Transaction Info | Block #23885440/Trx 8583beaff9d02cca22c095a1b49616bafe5ed92c |
View Raw JSON Data
{
"trx_id": "8583beaff9d02cca22c095a1b49616bafe5ed92c",
"block": 23885440,
"trx_in_block": 24,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-07-04T16:33:39",
"op": [
"delegate_vesting_shares",
{
"delegator": "steem",
"delegatee": "npna",
"vesting_shares": "28662.670315 VESTS"
}
]
}npnafollowed @seaofdata2018/06/17 21:26:39
npnafollowed @seaofdata
2018/06/17 21:26:39
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"seaofdata","what":["blog"]}] |
| Transaction Info | Block #23411685/Trx a27feb8caaae114626d8485629798cf72edd7ec8 |
View Raw JSON Data
{
"trx_id": "a27feb8caaae114626d8485629798cf72edd7ec8",
"block": 23411685,
"trx_in_block": 49,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-17T21:26:39",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"seaofdata\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @biblegateway2018/06/16 11:48:12
npnafollowed @biblegateway
2018/06/16 11:48:12
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"biblegateway","what":["blog"]}] |
| Transaction Info | Block #23371322/Trx 9e0b57273efa2babe7dcd93b4f350e6d4e664b9d |
View Raw JSON Data
{
"trx_id": "9e0b57273efa2babe7dcd93b4f350e6d4e664b9d",
"block": 23371322,
"trx_in_block": 34,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-16T11:48:12",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"biblegateway\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @art-of-living2018/06/16 11:37:00
npnafollowed @art-of-living
2018/06/16 11:37:00
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"art-of-living","what":["blog"]}] |
| Transaction Info | Block #23371098/Trx c7626799764e74b119edb07bca90ece0d50baf5b |
View Raw JSON Data
{
"trx_id": "c7626799764e74b119edb07bca90ece0d50baf5b",
"block": 23371098,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-16T11:37:00",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"art-of-living\",\"what\":[\"blog\"]}]"
}
]
}2018/06/16 11:35:57
2018/06/16 11:35:57
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"babey","what":["blog"]}] |
| Transaction Info | Block #23371077/Trx 486754e4275dfb25cd76b98f15af5c9fec7b7ba9 |
View Raw JSON Data
{
"trx_id": "486754e4275dfb25cd76b98f15af5c9fec7b7ba9",
"block": 23371077,
"trx_in_block": 32,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-16T11:35:57",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"babey\",\"what\":[\"blog\"]}]"
}
]
}2018/06/16 11:35:57
2018/06/16 11:35:57
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"ax3","what":["blog"]}] |
| Transaction Info | Block #23371077/Trx 1c0cbb9b74da7b54f11b8d420bc869495e7c92f1 |
View Raw JSON Data
{
"trx_id": "1c0cbb9b74da7b54f11b8d420bc869495e7c92f1",
"block": 23371077,
"trx_in_block": 15,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-16T11:35:57",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"ax3\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @anonwhale2018/06/16 11:29:33
npnafollowed @anonwhale
2018/06/16 11:29:33
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"anonwhale","what":["blog"]}] |
| Transaction Info | Block #23370949/Trx 456d76b7d9b4af206140fa444b510f6d20579bfa |
View Raw JSON Data
{
"trx_id": "456d76b7d9b4af206140fa444b510f6d20579bfa",
"block": 23370949,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-16T11:29:33",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"anonwhale\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @anonvoter2018/06/16 11:29:21
npnafollowed @anonvoter
2018/06/16 11:29:21
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"anonvoter","what":["blog"]}] |
| Transaction Info | Block #23370945/Trx 9f0ad4622cf0c80f1e0ba7f6010dee08bcfe1fc7 |
View Raw JSON Data
{
"trx_id": "9f0ad4622cf0c80f1e0ba7f6010dee08bcfe1fc7",
"block": 23370945,
"trx_in_block": 7,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-16T11:29:21",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"anonvoter\",\"what\":[\"blog\"]}]"
}
]
}2018/06/16 11:29:18
2018/06/16 11:29:18
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"alexaz","what":["blog"]}] |
| Transaction Info | Block #23370944/Trx e3619a4fa26d19d8385738605120198e34503b07 |
View Raw JSON Data
{
"trx_id": "e3619a4fa26d19d8385738605120198e34503b07",
"block": 23370944,
"trx_in_block": 1,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-06-16T11:29:18",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"alexaz\",\"what\":[\"blog\"]}]"
}
]
}2018/05/29 17:45:36
2018/05/29 17:45:36
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"annazir","what":["blog"]}] |
| Transaction Info | Block #22860780/Trx 2dfd6b949570852670e0c17843353973297699bd |
View Raw JSON Data
{
"trx_id": "2dfd6b949570852670e0c17843353973297699bd",
"block": 22860780,
"trx_in_block": 3,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-29T17:45:36",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"annazir\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @andymoonpie2018/05/29 17:45:33
npnafollowed @andymoonpie
2018/05/29 17:45:33
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"andymoonpie","what":["blog"]}] |
| Transaction Info | Block #22860779/Trx 381d2516c02a836123a97b3453cc28966295ba09 |
View Raw JSON Data
{
"trx_id": "381d2516c02a836123a97b3453cc28966295ba09",
"block": 22860779,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-29T17:45:33",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"andymoonpie\",\"what\":[\"blog\"]}]"
}
]
}2018/05/29 17:45:27
2018/05/29 17:45:27
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"abcor","what":["blog"]}] |
| Transaction Info | Block #22860777/Trx cf3b65dbccac7ac16436031e5376a933ffac0563 |
View Raw JSON Data
{
"trx_id": "cf3b65dbccac7ac16436031e5376a933ffac0563",
"block": 22860777,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-29T17:45:27",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"abcor\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @a-0-0-0-0-0-02018/05/29 17:45:24
npnafollowed @a-0-0-0-0-0-0
2018/05/29 17:45:24
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"a-0-0-0-0-0-0","what":["blog"]}] |
| Transaction Info | Block #22860776/Trx 6acd90bbaf4f0d51b6655ba119caa01f111449c0 |
View Raw JSON Data
{
"trx_id": "6acd90bbaf4f0d51b6655ba119caa01f111449c0",
"block": 22860776,
"trx_in_block": 12,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-29T17:45:24",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"a-0-0-0-0-0-0\",\"what\":[\"blog\"]}]"
}
]
}scottcbusinesssent 0.001 SBD to @npna- "Hey @npna! I really appreciate your support and now that I am officially running as a witness, I wanted to share this with you and officially announce it. Thanks you so much :)"2018/05/17 09:30:36
scottcbusinesssent 0.001 SBD to @npna- "Hey @npna! I really appreciate your support and now that I am officially running as a witness, I wanted to share this with you and officially announce it. Thanks you so much :)"
2018/05/17 09:30:36
| from | scottcbusiness |
| to | npna |
| amount | 0.001 SBD |
| memo | Hey @npna! I really appreciate your support and now that I am officially running as a witness, I wanted to share this with you and officially announce it. Thanks you so much :) |
| Transaction Info | Block #22505710/Trx a22993cfa14b66828431facecdef69efa53c617e |
View Raw JSON Data
{
"trx_id": "a22993cfa14b66828431facecdef69efa53c617e",
"block": 22505710,
"trx_in_block": 56,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-17T09:30:36",
"op": [
"transfer",
{
"from": "scottcbusiness",
"to": "npna",
"amount": "0.001 SBD",
"memo": "Hey @npna! I really appreciate your support and now that I am officially running as a witness, I wanted to share this with you and officially announce it. Thanks you so much :)"
}
]
}scottychamssent 0.001 SBD to @npna- "Hey @npna! I wanted to re-thank you for being a supporter and a follower of me and my music! You are awesome :)"2018/05/14 02:02:54
scottychamssent 0.001 SBD to @npna- "Hey @npna! I wanted to re-thank you for being a supporter and a follower of me and my music! You are awesome :)"
2018/05/14 02:02:54
| from | scottychams |
| to | npna |
| amount | 0.001 SBD |
| memo | Hey @npna! I wanted to re-thank you for being a supporter and a follower of me and my music! You are awesome :) |
| Transaction Info | Block #22410369/Trx 2b11bda89c3557604ba41a3bf0987749e51848df |
View Raw JSON Data
{
"trx_id": "2b11bda89c3557604ba41a3bf0987749e51848df",
"block": 22410369,
"trx_in_block": 32,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-14T02:02:54",
"op": [
"transfer",
{
"from": "scottychams",
"to": "npna",
"amount": "0.001 SBD",
"memo": "Hey @npna! I wanted to re-thank you for being a supporter and a follower of me and my music! You are awesome :)"
}
]
}npnafollowed @travelinged2018/05/12 13:42:48
npnafollowed @travelinged
2018/05/12 13:42:48
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"travelinged","what":["blog"]}] |
| Transaction Info | Block #22366770/Trx a8cf1f67567816c5ae84d4bae1f7988b73cd217b |
View Raw JSON Data
{
"trx_id": "a8cf1f67567816c5ae84d4bae1f7988b73cd217b",
"block": 22366770,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-05-12T13:42:48",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"travelinged\",\"what\":[\"blog\"]}]"
}
]
}2018/04/29 10:21:00
2018/04/29 10:21:00
| parent author | mgt48 |
| parent permlink | re-npna-cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware-20180426t142907209z |
| author | npna |
| permlink | re-mgt48-re-npna-cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware-20180429t102015384z |
| title | |
| body | tnx |
| json metadata | {"tags":["gentoo"],"app":"steemit/0.1"} |
| Transaction Info | Block #21988423/Trx 1511a84adc7145f746037cce3949d6ec890feb58 |
View Raw JSON Data
{
"trx_id": "1511a84adc7145f746037cce3949d6ec890feb58",
"block": 21988423,
"trx_in_block": 14,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-29T10:21:00",
"op": [
"comment",
{
"parent_author": "mgt48",
"parent_permlink": "re-npna-cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware-20180426t142907209z",
"author": "npna",
"permlink": "re-mgt48-re-npna-cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware-20180429t102015384z",
"title": "",
"body": "tnx",
"json_metadata": "{\"tags\":[\"gentoo\"],\"app\":\"steemit/0.1\"}"
}
]
}2018/04/26 14:29:09
2018/04/26 14:29:09
| parent author | npna |
| parent permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| author | mgt48 |
| permlink | re-npna-cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware-20180426t142907209z |
| title | |
| body | Great guide, congrats! |
| json metadata | {"tags":["gentoo"],"app":"steemit/0.1"} |
| Transaction Info | Block #21907012/Trx c8eb0e7cacb016756db648bb6dfbd84230ce02c2 |
View Raw JSON Data
{
"trx_id": "c8eb0e7cacb016756db648bb6dfbd84230ce02c2",
"block": 21907012,
"trx_in_block": 13,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-26T14:29:09",
"op": [
"comment",
{
"parent_author": "npna",
"parent_permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"author": "mgt48",
"permlink": "re-npna-cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware-20180426t142907209z",
"title": "",
"body": "Great guide, congrats!",
"json_metadata": "{\"tags\":[\"gentoo\"],\"app\":\"steemit/0.1\"}"
}
]
}npnafollowed @adenijiadeshina2018/04/26 10:04:42
npnafollowed @adenijiadeshina
2018/04/26 10:04:42
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"adenijiadeshina","what":["blog"]}] |
| Transaction Info | Block #21901723/Trx 78aa841b38f1de5c748d75f80b4f2e2a40e77609 |
View Raw JSON Data
{
"trx_id": "78aa841b38f1de5c748d75f80b4f2e2a40e77609",
"block": 21901723,
"trx_in_block": 23,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-26T10:04:42",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"adenijiadeshina\",\"what\":[\"blog\"]}]"
}
]
}2018/04/26 10:04:33
2018/04/26 10:04:33
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"ample","what":["blog"]}] |
| Transaction Info | Block #21901720/Trx aeb68b61f74a36ab3beeaf44264b08a6212ec14a |
View Raw JSON Data
{
"trx_id": "aeb68b61f74a36ab3beeaf44264b08a6212ec14a",
"block": 21901720,
"trx_in_block": 11,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-26T10:04:33",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"ample\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @allresteem2018/04/26 10:04:30
npnafollowed @allresteem
2018/04/26 10:04:30
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"allresteem","what":["blog"]}] |
| Transaction Info | Block #21901719/Trx eb0bdd475d532398c95f06b1e3b200c42eefc3c6 |
View Raw JSON Data
{
"trx_id": "eb0bdd475d532398c95f06b1e3b200c42eefc3c6",
"block": 21901719,
"trx_in_block": 26,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-26T10:04:30",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"allresteem\",\"what\":[\"blog\"]}]"
}
]
}npnafollowed @aaa-resteem2018/04/26 10:04:24
npnafollowed @aaa-resteem
2018/04/26 10:04:24
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"aaa-resteem","what":["blog"]}] |
| Transaction Info | Block #21901717/Trx e201288f48d80ce310a0b70eb1183de7f5d92aa9 |
View Raw JSON Data
{
"trx_id": "e201288f48d80ce310a0b70eb1183de7f5d92aa9",
"block": 21901717,
"trx_in_block": 20,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-26T10:04:24",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"aaa-resteem\",\"what\":[\"blog\"]}]"
}
]
}2018/04/26 10:04:15
2018/04/26 10:04:15
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"a-0-abul","what":["blog"]}] |
| Transaction Info | Block #21901714/Trx 475cc9c386f3ad54b65e414c44ed844032388acf |
View Raw JSON Data
{
"trx_id": "475cc9c386f3ad54b65e414c44ed844032388acf",
"block": 21901714,
"trx_in_block": 31,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-26T10:04:15",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"a-0-abul\",\"what\":[\"blog\"]}]"
}
]
}2018/04/26 10:04:15
2018/04/26 10:04:15
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"adamreb","what":["blog"]}] |
| Transaction Info | Block #21901714/Trx 1655bb84913a42056869842fe24ac1b891649815 |
View Raw JSON Data
{
"trx_id": "1655bb84913a42056869842fe24ac1b891649815",
"block": 21901714,
"trx_in_block": 17,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-26T10:04:15",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"adamreb\",\"what\":[\"blog\"]}]"
}
]
}npnaupdated their account properties2018/04/26 10:03:45
npnaupdated their account properties
2018/04/26 10:03:45
| account | npna |
| memo key | STM7Ef63M5KJvGYjqmLtDCugDY2WNvae97F9u8bR912UiH1SanTU8 |
| json metadata | {"profile":{"profile_image":"https://pbs.twimg.com/profile_images/982638224831950849/FGJQJhHW_400x400.jpg","name":"Riccardo Giuntoli","about":"#unix #security #hacking #cryptography #cryptocurrency","location":"NPNA - No Place No address","website":"https://www.facebook.com/noplacenoaddress/","cover_image":"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95"}} |
| Transaction Info | Block #21901704/Trx ad7b1120aa3d3d0ad82f3df2c9d3b90eabf172a4 |
View Raw JSON Data
{
"trx_id": "ad7b1120aa3d3d0ad82f3df2c9d3b90eabf172a4",
"block": 21901704,
"trx_in_block": 31,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-26T10:03:45",
"op": [
"account_update",
{
"account": "npna",
"memo_key": "STM7Ef63M5KJvGYjqmLtDCugDY2WNvae97F9u8bR912UiH1SanTU8",
"json_metadata": "{\"profile\":{\"profile_image\":\"https://pbs.twimg.com/profile_images/982638224831950849/FGJQJhHW_400x400.jpg\",\"name\":\"Riccardo Giuntoli\",\"about\":\"#unix #security #hacking #cryptography #cryptocurrency\",\"location\":\"NPNA - No Place No address\",\"website\":\"https://www.facebook.com/noplacenoaddress/\",\"cover_image\":\"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95\"}}"
}
]
}maxkilupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 20:49:30
maxkilupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 20:49:30
| voter | maxkil |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21885830/Trx cf02700a2f06cb73bc9c1fd8751ea28ba84fa7e2 |
View Raw JSON Data
{
"trx_id": "cf02700a2f06cb73bc9c1fd8751ea28ba84fa7e2",
"block": 21885830,
"trx_in_block": 50,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T20:49:30",
"op": [
"vote",
{
"voter": "maxkil",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 10000
}
]
}berezkkovaupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 20:49:30
berezkkovaupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 20:49:30
| voter | berezkkova |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21885830/Trx f72954b7dc1a2098e19362792aca6fde5d151565 |
View Raw JSON Data
{
"trx_id": "f72954b7dc1a2098e19362792aca6fde5d151565",
"block": 21885830,
"trx_in_block": 32,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T20:49:30",
"op": [
"vote",
{
"voter": "berezkkova",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 10000
}
]
}tanyakovalupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 20:49:09
tanyakovalupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 20:49:09
| voter | tanyakoval |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21885823/Trx 2403b67c8e8638f22f5ec25a1fd9cd6f27ae904a |
View Raw JSON Data
{
"trx_id": "2403b67c8e8638f22f5ec25a1fd9cd6f27ae904a",
"block": 21885823,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T20:49:09",
"op": [
"vote",
{
"voter": "tanyakoval",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 10000
}
]
}reclennioupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 20:48:54
reclennioupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 20:48:54
| voter | reclennio |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21885818/Trx fe8a4ffe53f9471594771c75db0d8039cb4d7e56 |
View Raw JSON Data
{
"trx_id": "fe8a4ffe53f9471594771c75db0d8039cb4d7e56",
"block": 21885818,
"trx_in_block": 50,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T20:48:54",
"op": [
"vote",
{
"voter": "reclennio",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 10000
}
]
}iritinaupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 20:48:54
iritinaupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 20:48:54
| voter | iritina |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21885818/Trx 100f2de340d00f4633655002c45a05739053c74b |
View Raw JSON Data
{
"trx_id": "100f2de340d00f4633655002c45a05739053c74b",
"block": 21885818,
"trx_in_block": 28,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T20:48:54",
"op": [
"vote",
{
"voter": "iritina",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 10000
}
]
}mytechtrailupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 18:12:51
mytechtrailupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 18:12:51
| voter | mytechtrail |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21882699/Trx 3a9692a0dd90671d5ff6fb567923535d3440424b |
View Raw JSON Data
{
"trx_id": "3a9692a0dd90671d5ff6fb567923535d3440424b",
"block": 21882699,
"trx_in_block": 41,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T18:12:51",
"op": [
"vote",
{
"voter": "mytechtrail",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 10000
}
]
}npnapublished a new post: cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 13:51:18
npnapublished a new post: cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 13:51:18
| parent author | |
| parent permlink | gentoo |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| title | Cross compile in Gentoo to obtain a custom Raspberry Pi 3 firmware. |
| body | @@ -8362,16 +8362,23 @@ rry Pi 3 +%0A------ %0A%0A!%5Ba ra |
| json metadata | {"tags":["gentoo","raspberry","arm","arm64","crosscompile"],"image":["https://images6.alphacoders.com/480/thumb-1920-480025.jpg","https://c402277.ssl.cf1.rackcdn.com/photos/1560/images/story_full_width/HI_292876WHYMatter1.jpg?1345547525","https://www.urbanseedling.com/wp-content/uploads/2015/03/Raspberry-Festival--600x600.jpg","https://raw.GitHubusercontent.com/sakaki-/resources/master/raspberrypi/pi3/demo-screenshot-small-3.jpg"],"links":["https://www.gentoo.org","https://packages.gentoo.org/packages/sys-devel/crossdev","https://wiki.gentoo.org/wiki/Project:Overlays/Overlays_guide","https://wiki.gentoo.org/wiki/Portage","https://en.wikipedia.org/wiki/DEC_Alpha","https://en.wikipedia.org/wiki/PA-RISC","https://en.wikipedia.org/wiki/X86","https://en.wikipedia.org/wiki/MIPS_architecture","https://en.wikipedia.org/wiki/PowerPC","https://en.wikipedia.org/wiki/SPARC","https://en.wikipedia.org/wiki/SuperH","https://en.wikipedia.org/wiki/ARM_architecture","https://en.wikipedia.org/wiki/IA-64","https://en.wikipedia.org/wiki/Motorola_68000_series","https://en.wikipedia.org/wiki/Z/Architecture","https://www.raspberrypi.org/","https://en.wikipedia.org/wiki/Single-board_computer","https://en.wikipedia.org/wiki/Raspberry_Pi_Foundation","https://xfce.org/","https://GitHub.com/raspberrypi/linux","https://en.wikipedia.org/wiki/Das_U-Boot","https://ghostbin.com/paste/cg62q","https://ghostbin.com/paste/damwc","https://simple.wikipedia.org/wiki/MicroSD","https://en.wikipedia.org/wiki/Disk_partitioning","https://en.wikipedia.org/wiki/Extended_file_system","https://wiki.gentoo.org/wiki/System_set_(Portage)","https://www.reddit.com/r/Gentoo/comments/8d415b/errata/","https://events.static.linuxfound.org/sites/events/files/slides/petazzoni-device-tree-dummies","https://ghostbin.com/paste/gn8wj","https://ghostbin.com/paste/okxwe","https://ghostbin.com/paste/yvs2x","https://wiki.gentoo.org/wiki/Project:RelEng#Keys","https://en.wikipedia.org/wiki/Binary_blob","https://www.armbian.com/","https://wireless.wiki.kernel.org/en/developers/documentation/glossary","https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter","https://GitHub.com/RPi-Distro/bluez-firmware/tree/master/broadcom","https://elinux.org/RPiconfig","https://elinux.org/RPi_cmdline.txt"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #21877468/Trx 783d87cbbe6f0efa0bc9b6404a139a9139cb9681 |
View Raw JSON Data
{
"trx_id": "783d87cbbe6f0efa0bc9b6404a139a9139cb9681",
"block": 21877468,
"trx_in_block": 2,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T13:51:18",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "gentoo",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"title": "Cross compile in Gentoo to obtain a custom Raspberry Pi 3 firmware.",
"body": "@@ -8362,16 +8362,23 @@\n rry Pi 3\n+%0A------\n %0A%0A!%5Ba ra\n",
"json_metadata": "{\"tags\":[\"gentoo\",\"raspberry\",\"arm\",\"arm64\",\"crosscompile\"],\"image\":[\"https://images6.alphacoders.com/480/thumb-1920-480025.jpg\",\"https://c402277.ssl.cf1.rackcdn.com/photos/1560/images/story_full_width/HI_292876WHYMatter1.jpg?1345547525\",\"https://www.urbanseedling.com/wp-content/uploads/2015/03/Raspberry-Festival--600x600.jpg\",\"https://raw.GitHubusercontent.com/sakaki-/resources/master/raspberrypi/pi3/demo-screenshot-small-3.jpg\"],\"links\":[\"https://www.gentoo.org\",\"https://packages.gentoo.org/packages/sys-devel/crossdev\",\"https://wiki.gentoo.org/wiki/Project:Overlays/Overlays_guide\",\"https://wiki.gentoo.org/wiki/Portage\",\"https://en.wikipedia.org/wiki/DEC_Alpha\",\"https://en.wikipedia.org/wiki/PA-RISC\",\"https://en.wikipedia.org/wiki/X86\",\"https://en.wikipedia.org/wiki/MIPS_architecture\",\"https://en.wikipedia.org/wiki/PowerPC\",\"https://en.wikipedia.org/wiki/SPARC\",\"https://en.wikipedia.org/wiki/SuperH\",\"https://en.wikipedia.org/wiki/ARM_architecture\",\"https://en.wikipedia.org/wiki/IA-64\",\"https://en.wikipedia.org/wiki/Motorola_68000_series\",\"https://en.wikipedia.org/wiki/Z/Architecture\",\"https://www.raspberrypi.org/\",\"https://en.wikipedia.org/wiki/Single-board_computer\",\"https://en.wikipedia.org/wiki/Raspberry_Pi_Foundation\",\"https://xfce.org/\",\"https://GitHub.com/raspberrypi/linux\",\"https://en.wikipedia.org/wiki/Das_U-Boot\",\"https://ghostbin.com/paste/cg62q\",\"https://ghostbin.com/paste/damwc\",\"https://simple.wikipedia.org/wiki/MicroSD\",\"https://en.wikipedia.org/wiki/Disk_partitioning\",\"https://en.wikipedia.org/wiki/Extended_file_system\",\"https://wiki.gentoo.org/wiki/System_set_(Portage)\",\"https://www.reddit.com/r/Gentoo/comments/8d415b/errata/\",\"https://events.static.linuxfound.org/sites/events/files/slides/petazzoni-device-tree-dummies\",\"https://ghostbin.com/paste/gn8wj\",\"https://ghostbin.com/paste/okxwe\",\"https://ghostbin.com/paste/yvs2x\",\"https://wiki.gentoo.org/wiki/Project:RelEng#Keys\",\"https://en.wikipedia.org/wiki/Binary_blob\",\"https://www.armbian.com/\",\"https://wireless.wiki.kernel.org/en/developers/documentation/glossary\",\"https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter\",\"https://GitHub.com/RPi-Distro/bluez-firmware/tree/master/broadcom\",\"https://elinux.org/RPiconfig\",\"https://elinux.org/RPi_cmdline.txt\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}mgt48upvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 13:23:33
mgt48upvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 13:23:33
| voter | mgt48 |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21876913/Trx 525e76d6a9e81358454b4e9fbc4074d084fbe80a |
View Raw JSON Data
{
"trx_id": "525e76d6a9e81358454b4e9fbc4074d084fbe80a",
"block": 21876913,
"trx_in_block": 41,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T13:23:33",
"op": [
"vote",
{
"voter": "mgt48",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 10000
}
]
}sensationupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 12:54:18
sensationupvoted (100.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 12:54:18
| voter | sensation |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21876328/Trx e8bd5c31a3e937514d4bce6579512c9d304be3a0 |
View Raw JSON Data
{
"trx_id": "e8bd5c31a3e937514d4bce6579512c9d304be3a0",
"block": 21876328,
"trx_in_block": 8,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T12:54:18",
"op": [
"vote",
{
"voter": "sensation",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 10000
}
]
}2018/04/25 12:20:48
2018/04/25 12:20:48
| voter | nanocheeze |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 200 (2.00%) |
| Transaction Info | Block #21875658/Trx 511bb3bdbb4f33777c9c22834a48e6906b1dfbe3 |
View Raw JSON Data
{
"trx_id": "511bb3bdbb4f33777c9c22834a48e6906b1dfbe3",
"block": 21875658,
"trx_in_block": 9,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T12:20:48",
"op": [
"vote",
{
"voter": "nanocheeze",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 200
}
]
}2018/04/25 12:20:48
2018/04/25 12:20:48
| voter | xaunya |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 900 (9.00%) |
| Transaction Info | Block #21875658/Trx 7e8153a036d7db817280e59d4ef3a42aa6c694ed |
View Raw JSON Data
{
"trx_id": "7e8153a036d7db817280e59d4ef3a42aa6c694ed",
"block": 21875658,
"trx_in_block": 6,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T12:20:48",
"op": [
"vote",
{
"voter": "xaunya",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 900
}
]
}2018/04/25 12:20:48
2018/04/25 12:20:48
| voter | cybershrapnel |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 900 (9.00%) |
| Transaction Info | Block #21875658/Trx e1daed450288eb2e5dfa0c011c893630c683c4d6 |
View Raw JSON Data
{
"trx_id": "e1daed450288eb2e5dfa0c011c893630c683c4d6",
"block": 21875658,
"trx_in_block": 5,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T12:20:48",
"op": [
"vote",
{
"voter": "cybershrapnel",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 900
}
]
}2018/04/25 12:20:48
2018/04/25 12:20:48
| voter | xtdevelopment |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 900 (9.00%) |
| Transaction Info | Block #21875658/Trx 1d664823791a74ca0ebc3ab8b6224b0b94543d23 |
View Raw JSON Data
{
"trx_id": "1d664823791a74ca0ebc3ab8b6224b0b94543d23",
"block": 21875658,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T12:20:48",
"op": [
"vote",
{
"voter": "xtdevelopment",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 900
}
]
}ax3upvoted (1.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 12:20:33
ax3upvoted (1.00%) @npna / cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 12:20:33
| voter | ax3 |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| weight | 100 (1.00%) |
| Transaction Info | Block #21875653/Trx 37abb18ac03f4bd475b344bf659f8b7dbb860980 |
View Raw JSON Data
{
"trx_id": "37abb18ac03f4bd475b344bf659f8b7dbb860980",
"block": 21875653,
"trx_in_block": 43,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T12:20:33",
"op": [
"vote",
{
"voter": "ax3",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"weight": 100
}
]
}npnapublished a new post: cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware2018/04/25 12:20:21
npnapublished a new post: cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware
2018/04/25 12:20:21
| parent author | |
| parent permlink | gentoo |
| author | npna |
| permlink | cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware |
| title | Cross compile in Gentoo to obtain a custom Raspberry Pi 3 firmware. |
| body | ## ¿What is a cross compiler? ------  First of all a *compiler* is a computer software that translate one *programming language* to another. To be more exact, it normally translate a **high level** source programming language code to a **low level** one. For example the `gcc` compiler translate `C` source code in `asm` (**assembler**) machine code. A *cross compiler* is a compiler that generete machine code for a different *architecture* respect the one where the compiler is executed. The example that we will explain in this guide is **from x64 intel processor to a quad-core ARM Cortex A53 (ARMv8) cluster, classificated under the arm64 family**. ## Gentoo cross compiling environment ------  [The Gentoo Linux distribution](https://www.gentoo.org) have got a script package that simplify the life of a *system administrator* speaking about the work of preparing the correct *cross compiler environment*. Its name is [**crossdev**](https://packages.gentoo.org/packages/sys-devel/crossdev). These are the steps to obtain a working `arm64` compile environment. First of all we `emerge` the package using the options: - `-a` Before performing the action, display what will take place then ask whether to proceed with the action or abort. Using --ask is more efficient than using --pretend and then exe‐ cuting the same command without --pretend, as dependencies will only need to be calculated once. - `-v` Tell emerge to run in verbose mode. ```sh cyberdream /home/taglio # emerge -av crossdev These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] sys-devel/crossdev-20171230::gentoo 23 KiB Total: 1 package (1 new), Size of downloads: 23 KiB Would you like to merge these packages? [Yes/No] Yes >>> Verifying ebuild manifests >>> Emerging (1 of 1) sys-devel/crossdev-20171230::gentoo >>> Installing (1 of 1) sys-devel/crossdev-20171230::gentoo >>> Recording sys-devel/crossdev in "world" favorites file... >>> Jobs: 1 of 1 complete Load avg: 0.67, 0.55, 0.29 * Messages for package sys-devel/crossdev-20171230: * Package: sys-devel/crossdev-20171230 * Repository: gentoo * Maintainer: [email protected] [email protected] * USE: abi_x86_64 amd64 elibc_glibc kernel_linux userland_GNU * FEATURES: preserve-libs sandbox userpriv usersandbox * Final size of build directory: 196 KiB * Final size of installed tree: 204 KiB >>> Auto-cleaning packages... >>> No outdated packages were found on your system. * GNU info directory index is up-to-date. cyberdream /home/taglio # ``` Next we've got to configure an [**overlay **](https://wiki.gentoo.org/wiki/Project:Overlays/Overlays_guide) to use with `crossdev`. - Make correct tree directories using the [**Gentoo portage**](https://wiki.gentoo.org/wiki/Portage) instructions. ```bash cyberdream /usr/local # mkdir -pv /usr/local/portage-crossdev/{profiles,metadata} mkdir: created directory '/usr/local/portage-crossdev' mkdir: created directory '/usr/local/portage-crossdev/profiles' mkdir: created directory '/usr/local/portage-crossdev/metadata' cyberdream /usr/local # echo 'crossdev' > /usr/local/portage-crossdev/profiles/repo_name cyberdream /usr/local # echo 'masters = gentoo' > /usr/local/portage-crossdev/metadata/layout.conf cyberdream /usr/local # chown -R portage:portage /usr/local/portage-crossdev cyberdream /usr/local # cat << EOF > /etc/portage/repos.conf/crossdev.conf [crossdev] location = /usr/local/portage-crossdev priority = 10 masters = gentoo auto-sync = no EOF cyberdream /usr/local # ``` Now we're going to build the **toolchain** for the `arm64` architecture using the **stable branch** tools. Those are the options used: - `--stable` Use latest stable tools version as default. - `-t` Choose an architecture between: - [alpha](https://en.wikipedia.org/wiki/DEC_Alpha) - [hppa (parisc)](https://en.wikipedia.org/wiki/PA-RISC) - [i386 / i486 / i586 / i686 (x86)](https://en.wikipedia.org/wiki/X86) *32 bit version* - [mips / mipsel / mips64 / mips64el](https://en.wikipedia.org/wiki/MIPS_architecture) - [powerpc (ppc) / powerpc64 (ppc64)](https://en.wikipedia.org/wiki/PowerPC) - [sparc / sparc64](https://en.wikipedia.org/wiki/SPARC) - [sh / sh[1-5] / sh64](https://en.wikipedia.org/wiki/SuperH) - [arm / armeb / aarch64](https://en.wikipedia.org/wiki/ARM_architecture) - [ia64](https://en.wikipedia.org/wiki/IA-64) - [m68k](https://en.wikipedia.org/wiki/Motorola_68000_series) - [s390 / s390x](https://en.wikipedia.org/wiki/Z/Architecture) - [x86_64 (amd64)](https://en.wikipedia.org/wiki/X86) *64 bit version* - `-genv` Specify environment for `gcc` ```sh cyberdream /etc/portage/repos.conf # crossdev --stable -t aarch64-unknown-linux-gnu --genv 'USE="cxx multilib fortran -mudflap nls openmp -sanitize"' - * crossdev version: 20171230 * Host Portage ARCH: amd64 * Target Portage ARCH: arm64 * Target System: aarch64-unknown-linux-gnu * Stage: 4 (C/C++ compiler) * ABIs: arm64 * binutils: binutils-[stable] * gcc: gcc-[stable] * headers: linux-headers-[stable] * libc: glibc-[stable] * CROSSDEV_OVERLAY: /usr/local/portage-crossdev * PORT_LOGDIR: /var/log/portage * PORTAGE_CONFIGROOT: / * Portage flags: * leaving metadata/layout.conf alone in /usr/local/portage-crossdev * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-binutils.log * Emerging cross-binutils ... [ ok ] * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-linux-headers-quick.log * Emerging cross-linux-headers-quick ... [ ok ] * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-glibc-headers.log * Emerging cross-glibc-headers ... [ ok ] * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-gcc-stage1.log * Emerging cross-gcc-stage1 ... [ ok ] * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-linux-headers.log * Emerging cross-linux-headers ... [ ok ] * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-glibc.log * Emerging cross-glibc ... [ ok ] * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-gcc-stage2.log * Emerging cross-gcc-stage2 ... [ ok ] cyberdream /etc/portage/repos.conf # ``` After some time the process will end, and we have the **toolchain** ready to build the code that we want to use. In this case we're going to build the kernel and base system for a [**Rasberry Pi 3**](https://www.raspberrypi.org/). We can check the version of our new tools: ```sh taglio@cyberdream ~ $ aarch64-unknown-linux-gnu-g++ --version aarch64-unknown-linux-gnu-g++ (Gentoo 6.4.0-r1 p1.3) 6.4.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. taglio@cyberdream ~ $ aarch64-unknown-linux-gnu-c++ --version aarch64-unknown-linux-gnu-c++ (Gentoo 6.4.0-r1 p1.3) 6.4.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. taglio@cyberdream ~ $aarch64-unknown-linux-gnu-gcc --version aarch64-unknown-linux-gnu-gcc (Gentoo 6.4.0-r1 p1.3) 6.4.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. taglio@cyberdream ~ $ ``` ## The Raspberry Pi 3  The **Raspberry Pi** is a [*single board computer*](https://en.wikipedia.org/wiki/Single-board_computer) that have sold more than 19 million of devices. It's developed in the United Kindom by the [**Raspberry Pi Foundation**](https://en.wikipedia.org/wiki/Raspberry_Pi_Foundation) that is a charity with the goal to introduce computer science in third world schools. With its third version it's possible to run a lightweight desktop without any problem under Linux. Look at this screenshot of the [**xfce desktop**](https://xfce.org/) environment.  Let's begin with the compile process for this single board device. ### The Kernel First we download the latest stable kernel from the official Raspberry Pi [**GitHub kernel repository**](https://GitHub.com/raspberrypi/linux). At the time of writing is the `rpi-4.14.y`. We use this `git` options: - `clone`: Clones a repository into a newly created directory, creates remote-tracking branches for each branch in the cloned repository (visible using git branch -r), and creates and checks out an initial branch that is forked from the cloned repository’s currently active branch. - `--depth`: Create a shallow clone with a history truncated to the specified number of commits (`1`). - `-b`: Clone a determinated branch. ```sh taglio@cyberdream ~/Sources/Rpi3/kbuild $ git clone --depth 1 https://GitHub.com/raspberrypi/linux.git -b rpi-4.14.y Cloning into 'linux'... remote: Counting objects: 65735, done. remote: Compressing objects: 100% (60168/60168), done. Receiving objects: 100% (65735/65735), 174.15 MiB | 7.88 MiB/s, done. remote: Total 65735 (delta 7072), reused 15358 (delta 4598), pack-reused 0 Resolving deltas: 100% (7072/7072), done. Checking out files: 100% (61808/61808), done. taglio@cyberdream ~/Sources/Rpi3/kbuild $ ``` Next compile the kernel, modules, firmware and [u-boot](https://en.wikipedia.org/wiki/Das_U-Boot) stuff. We set two variables: - `ARCH=arm64` - `CROSS_COMPILE=aarch64-unknown-linux-gnu-` And we start `make` using two different options: - `distclean` : Remove all generated files, config, various backup files and editor backup and patch files - `bcmrpi3_defconfig` : Use prestablished config located in `arch/arm64/configs` ([https://ghostbin.com/paste/cg62q](https://ghostbin.com/paste/cg62q)) ```sh taglio@cyberdream ~/Sources/Rpi3/kbuild/linux $ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- distclean CLEAN . CLEAN arch/arm64/kernel/vdso CLEAN arch/arm64/kernel CLEAN drivers/firmware/efi/libstub CLEAN drivers/tty/vt CLEAN drivers/video/logo CLEAN kernel/debug/kdb CLEAN kernel CLEAN lib/raid6 CLEAN lib CLEAN usr CLEAN arch/arm64/boot CLEAN arch/arm64/boot/dts/broadcom/../overlays CLEAN arch/arm64/boot/dts/broadcom CLEAN .tmp_versions CLEAN scripts/basic CLEAN scripts/dtc CLEAN scripts/genksyms CLEAN scripts/kconfig CLEAN scripts/mod CLEAN scripts CLEAN include/config include/generated arch/arm64/include/generated CLEAN .config .version Module.symvers taglio@cyberdream ~/Sources/Rpi3/kbuild/linux $ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- bcmrpi3_defconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config # taglio@cyberdream ~/Sources/Rpi3/kbuild/linux $ ``` Next we start the real kernel cross compile. We use the command `time` to mesure the real minutes to build our `arm64` kernel. With `-j$(nprocs)` we start many threads like many processor core we have. ```sh taglio@cyberdream ~/Sources/Rpi3/kbuild/linux $ time make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- -j$(nproc) . . . real 5m47.534s user 38m35.320s sys 1m34.610s taglio@cyberdream ~/Sources/Rpi3/kbuild/linux $ ``` You can read about all the output here: [https://ghostbin.com/paste/damwc](https://ghostbin.com/paste/damwc) ### The Firmware Like we've done before lets *shallow clone* [`--depth 1`] the GitHub raspberry firmware repository (after we exec two `ls` to see what we've downloaded): ```sh taglio@cyberdream ~/Sources/Rpi3 $ git clone --depth 1 https://GitHub.com/raspberrypi/firmware Cloning into 'firmware'... remote: Counting objects: 4379, done. remote: Compressing objects: 100% (2676/2676), done. remote: Total 4379 (delta 1498), reused 2183 (delta 1359), pack-reused 0 Receiving objects: 100% (4379/4379), 84.19 MiB | 10.97 MiB/s, done. Resolving deltas: 100% (1498/1498), done. taglio@cyberdream ~/Sources/Rpi3 $ cd firmware/ taglio@cyberdream ~/Sources/Rpi3/firmware $ ls README.md boot documentation extra hardfp modules opt taglio@cyberdream ~/Sources/Rpi3/firmware $ cd boot/ taglio@cyberdream ~/Sources/Rpi3/firmware/boot $ ls -al total 21772 drwxr-xr-x 3 taglio taglio 4096 Apr 17 17:41 . drwxr-xr-x 9 taglio taglio 4096 Apr 17 17:41 .. -rw-r--r-- 1 taglio taglio 18693 Apr 17 17:41 COPYING.linux -rw-r--r-- 1 taglio taglio 1494 Apr 17 17:41 LICENCE.broadcom -rw-r--r-- 1 taglio taglio 22264 Apr 17 17:41 bcm2708-rpi-0-w.dtb -rw-r--r-- 1 taglio taglio 22020 Apr 17 17:41 bcm2708-rpi-b-plus.dtb -rw-r--r-- 1 taglio taglio 21761 Apr 17 17:41 bcm2708-rpi-b.dtb -rw-r--r-- 1 taglio taglio 21474 Apr 17 17:41 bcm2708-rpi-cm.dtb -rw-r--r-- 1 taglio taglio 23044 Apr 17 17:41 bcm2709-rpi-2-b.dtb -rw-r--r-- 1 taglio taglio 24503 Apr 17 17:41 bcm2710-rpi-3-b-plus.dtb -rw-r--r-- 1 taglio taglio 24240 Apr 17 17:41 bcm2710-rpi-3-b.dtb -rw-r--r-- 1 taglio taglio 22952 Apr 17 17:41 bcm2710-rpi-cm3.dtb -rw-r--r-- 1 taglio taglio 52064 Apr 17 17:41 bootcode.bin -rw-r--r-- 1 taglio taglio 6575 Apr 17 17:41 fixup.dat -rw-r--r-- 1 taglio taglio 2599 Apr 17 17:41 fixup_cd.dat -rw-r--r-- 1 taglio taglio 9726 Apr 17 17:41 fixup_db.dat -rw-r--r-- 1 taglio taglio 9730 Apr 17 17:41 fixup_x.dat -rw-r--r-- 1 taglio taglio 4676016 Apr 17 17:41 kernel.img -rw-r--r-- 1 taglio taglio 4922144 Apr 17 17:41 kernel7.img drwxr-xr-x 2 taglio taglio 4096 Apr 17 17:41 overlays -rw-r--r-- 1 taglio taglio 2825124 Apr 17 17:41 start.elf -rw-r--r-- 1 taglio taglio 673444 Apr 17 17:41 start_cd.elf -rw-r--r-- 1 taglio taglio 4968292 Apr 17 17:41 start_db.elf -rw-r--r-- 1 taglio taglio 3912164 Apr 17 17:41 start_x.elf taglio@cyberdream ~/Sources/Rpi3/firmware/boot $ ``` ### The partition table We've to insert the [**microSD card**](https://simple.wikipedia.org/wiki/MicroSD) in our principal Gentoo PC to create the correct partition table for our **Raspberry Pi 3**. The layout have to be: - [partition](https://en.wikipedia.org/wiki/Disk_partitioning) disklabel type (*partitioning scheme*): `DOS` - first primary partition: size `128M`, type `c` (*W95 FAT32 (LBA)*), bootable flag `a` active - second primary partition: size `2G`, type `82` (*Linux swap / Solaris*) - third primary partition: size all, type `83` (*Linux*) Here is the correct commands from the Linux `fdisk` shell: ```sh cyberdream ~ # fdisk /dev/mmcblk0 Welcome to fdisk (util-linux 2.30.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): o Created a new DOS disklabel with disk identifier 0x718393ba. Command (m for help): p Disk /dev/mmcblk0: 29.8 GiB, 32010928128 bytes, 62521344 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 Disklabel type: dos Disk identifier: 0x718393ba Command (m for help): p Disk /dev/mmcblk0: 29.8 GiB, 32010928128 bytes, 62521344 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 Disklabel type: dos Disk identifier: 0x718393ba Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-62521343, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-62521343, default 62521343): +128M Created a new partition 1 of type 'Linux' and of size 128 MiB. Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p Partition number (2-4, default 2): First sector (264192-62521343, default 264192): Last sector, +sectors or +size{K,M,G,T,P} (264192-62521343, default 62521343): +2G Created a new partition 2 of type 'Linux' and of size 2 GiB. Command (m for help): n Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): p Partition number (3,4, default 3): First sector (4458496-62521343, default 4458496): Last sector, +sectors or +size{K,M,G,T,P} (4458496-62521343, default 62521343): Created a new partition 3 of type 'Linux' and of size 27.7 GiB. Command (m for help): p Disk /dev/mmcblk0: 29.8 GiB, 32010928128 bytes, 62521344 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 Disklabel type: dos Disk identifier: 0x718393ba Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 2048 264191 262144 128M 83 Linux /dev/mmcblk0p2 264192 4458495 4194304 2G 83 Linux /dev/mmcblk0p3 4458496 62521343 58062848 27.7G 83 Linux Command (m for help): a Partition number (1-3, default 3): 1 The bootable flag on partition 1 is enabled now. Command (m for help): t Partition number (1-3, default 3): 1 Hex code (type L to list all codes): c Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'. Command (m for help): t Partition number (1-3, default 3): 2 Hex code (type L to list all codes): 82 Changed type of partition 'Linux' to 'Linux swap / Solaris'. Command (m for help): p Disk /dev/mmcblk0: 29.8 GiB, 32010928128 bytes, 62521344 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 Disklabel type: dos Disk identifier: 0x718393ba Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 * 2048 264191 262144 128M c W95 FAT32 (LBA) /dev/mmcblk0p2 264192 4458495 4194304 2G 82 Linux swap / Solaris /dev/mmcblk0p3 4458496 62521343 58062848 27.7G 83 Linux Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. cyberdream ~ # ``` Next we format the three partition with the correct `fs` type, using those commands and options: - `mkfs -t vfat -F 32`: used to create an MS-DOS filesystem under Linux. `-F` Specifies the type of file allocation tables used (*in this case 32 bit*). - `mkswap`: sets up a Linux swap area on a device or in a file. - `mkfs -i 8192 -t ext4`: - `-i`: Specify the bytes/inode ratio. `mke2fs` creates an inode for every bytes-per-inode bytes of space on the disk. The larger the bytes-per-inode ratio, the fewer inodes will be created. - `-t`: choose between [`ext{2,3,4}`](https://en.wikipedia.org/wiki/Extended_file_system) ```sh cyberdream ~ # mkfs -t vfat -F 32 /dev/mmcblk0p1 mkfs.fat 4.0 (2016-05-06) cyberdream ~ # mkswap /dev/mmcblk0p2 Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=0ed9f502-c3a4-4821-b646-91a0cda22dc9 cyberdream ~ # mkfs -i 8192 -t ext4 /dev/mmcblk0p3 mke2fs 1.43.6 (29-Aug-2017) /dev/mmcblk0p3 contains `ISO-8859 text, with very long lines, with no line terminators' data Proceed anyway? (y,N) y Creating filesystem with 7257856 4k blocks and 3630144 inodes Filesystem UUID: fdd18e6c-377b-47e8-9595-46b1f036dd84 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done cyberdream ~ # ``` ### The filesystem Next we have to populate the `/boot` (*1*) and `/` (*3*) partitions. Gentoo use the concept of *stage tarballs*; they are archives containing files that will be used in the installation process. More in deep we're going to download `stage3` `arm64` tarballs that contains what the gentoo crew call [a system set](https://wiki.gentoo.org/wiki/System_set_(Portage)); also we're going to verificate that the archive has not been manipulated during the fetch process: ```sh taglio@cyberdream ~/Sources/Rpi3/stage3 $ wget http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-20180305.tar.bz2{,.CONTENTS,.DIGESTS} --2018-04-18 09:16:19-- http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-20180305.tar.bz2 Resolving distfiles.gentoo.org... 137.226.34.46, 216.165.129.135, 64.50.233.100, ... Connecting to distfiles.gentoo.org|137.226.34.46|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 233168546 (222M) [application/octet-stream] Saving to: ‘stage3-arm64-20180305.tar.bz2’ stage3-arm64-201803 100%[===================>] 222.37M 35.4MB/s in 6.6s 2018-04-18 09:16:26 (33.8 MB/s) - ‘stage3-arm64-20180305.tar.bz2’ saved [233168546/233168546] --2018-04-18 09:16:26-- http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-20180305.tar.bz2.CONTENTS Reusing existing connection to distfiles.gentoo.org:80. HTTP request sent, awaiting response... 200 OK Length: 5281799 (5.0M) [application/octet-stream] Saving to: ‘stage3-arm64-20180305.tar.bz2.CONTENTS’ stage3-arm64-201803 100%[===================>] 5.04M 30.3MB/s in 0.2s 2018-04-18 09:16:26 (30.3 MB/s) - ‘stage3-arm64-20180305.tar.bz2.CONTENTS’ saved [5281799/5281799] --2018-04-18 09:16:26-- http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-20180305.tar.bz2.DIGESTS Reusing existing connection to distfiles.gentoo.org:80. HTTP request sent, awaiting response... 200 OK Length: 712 [application/octet-stream] Saving to: ‘stage3-arm64-20180305.tar.bz2.DIGESTS’ stage3-arm64-201803 100%[===================>] 712 --.-KB/s in 0s 2018-04-18 09:16:26 (298 MB/s) - ‘stage3-arm64-20180305.tar.bz2.DIGESTS’ saved [712/712] FINISHED --2018-04-18 09:16:26-- Total wall clock time: 7.3s Downloaded: 3 files, 227M in 6.7s (33.7 MB/s) taglio@cyberdream ~/Sources/Rpi3/stage3 $ ``` Next we verify the `sha512sum` of the tarball using this options: - With `awk` we print in `stdout` only the line containing the `SHA512` hash. - The `sed` invocation is necessary to probably correct an *error* from the Gentoo team (reported [here](https://www.reddit.com/r/Gentoo/comments/8d415b/errata/)) ```sh taglio@cyberdream ~/Sources/Rpi3/stage3 $ awk '/SHA512 HASH/{getline;print}' stage3-arm64-20180305.tar.bz2.DIGESTS | sed s/2008.0/20180305/g | sha512sum --check stage3-arm64-20180305.tar.bz2: OK stage3-arm64-20180305.tar.bz2.CONTENTS: OK taglio@cyberdream ~/Sources/Rpi3/stage3 $ ``` Let's begin to move our files in the *microSD* partitions. After creating the mountpoint `/mnt/piboot` and `/mnt/piroot`, start with the firmware, the kernel and the kernel modules. Speaking about the `/boot` partiotion note that we delete all the `.dtb` file after copying the entire directory in the microSD card. This is why we want to use the `64 bit` version of the **device tree binary** file. A good reference that i found in the web is: [https://events.static.linuxfound.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf](https://events.static.linuxfound.org/sites/events/files/slides/petazzoni-device-tree-dummies) You can evaluate the output of the command `strings` in a `.dtb` file here: [https://ghostbin.com/paste/gn8wj](https://ghostbin.com/paste/gn8wj) ```sh cyberdream /mnt # mkdir -pv /mnt/pi{boot,root} mkdir: created directory 'piboot' mkdir: created directory 'piroot' cyberdream /mnt # mount -v /dev/mmcblk0p1 /mnt/piboot mount: /dev/mmcblk0p1 mounted on /mnt/piboot. cyberdream /mnt # cyberdream /mnt # mount -v /dev/mmcblk0p3 /mnt/piroot mount: /dev/mmcblk0p3 mounted on /mnt/piroot. cyberdream /mnt # cd /home/taglio/Sources/Rpi3/firmware cyberdream /home/taglio/Sources/Rpi3/firmware # cp -rv boot/* /mnt/piboot/ 'boot/COPYING.linux' -> '/mnt/piboot/COPYING.linux' 'boot/LICENCE.broadcom' -> '/mnt/piboot/LICENCE.broadcom' 'boot/bcm2708-rpi-0-w.dtb' -> '/mnt/piboot/bcm2708-rpi-0-w.dtb' 'boot/bcm2708-rpi-b-plus.dtb' -> '/mnt/piboot/bcm2708-rpi-b-plus.dtb' 'boot/bcm2708-rpi-b.dtb' -> '/mnt/piboot/bcm2708-rpi-b.dtb' 'boot/bcm2708-rpi-cm.dtb' -> '/mnt/piboot/bcm2708-rpi-cm.dtb' 'boot/bcm2709-rpi-2-b.dtb' -> '/mnt/piboot/bcm2709-rpi-2-b.dtb' 'boot/bcm2710-rpi-3-b-plus.dtb' -> '/mnt/piboot/bcm2710-rpi-3-b-plus.dtb' 'boot/bcm2710-rpi-3-b.dtb' -> '/mnt/piboot/bcm2710-rpi-3-b.dtb' 'boot/bcm2710-rpi-cm3.dtb' -> '/mnt/piboot/bcm2710-rpi-cm3.dtb' 'boot/bootcode.bin' -> '/mnt/piboot/bootcode.bin' 'boot/fixup.dat' -> '/mnt/piboot/fixup.dat' 'boot/fixup_cd.dat' -> '/mnt/piboot/fixup_cd.dat' 'boot/fixup_db.dat' -> '/mnt/piboot/fixup_db.dat' 'boot/fixup_x.dat' -> '/mnt/piboot/fixup_x.dat' 'boot/kernel.img' -> '/mnt/piboot/kernel.img' 'boot/kernel7.img' -> '/mnt/piboot/kernel7.img' 'boot/overlays' -> '/mnt/piboot/overlays' 'boot/overlays/README' -> '/mnt/piboot/overlays/README' 'boot/overlays/adau1977-adc.dtbo' -> '/mnt/piboot/overlays/adau1977-adc.dtbo' 'boot/overlays/adau7002-simple.dtbo' -> '/mnt/piboot/overlays/adau7002-simple.dtbo' 'boot/overlays/ads1015.dtbo' -> '/mnt/piboot/overlays/ads1015.dtbo' 'boot/overlays/ads1115.dtbo' -> '/mnt/piboot/overlays/ads1115.dtbo' 'boot/overlays/ads7846.dtbo' -> '/mnt/piboot/overlays/ads7846.dtbo' 'boot/overlays/akkordion-iqdacplus.dtbo' -> '/mnt/piboot/overlays/akkordion-iqdacplus.dtbo' 'boot/overlays/allo-boss-dac-pcm512x-audio.dtbo' -> '/mnt/piboot/overlays/allo-boss-dac-pcm512x-audio.dtbo' 'boot/overlays/allo-digione.dtbo' -> '/mnt/piboot/overlays/allo-digione.dtbo' 'boot/overlays/allo-piano-dac-pcm512x-audio.dtbo' -> '/mnt/piboot/overlays/allo-piano-dac-pcm512x-audio.dtbo' 'boot/overlays/allo-piano-dac-plus-pcm512x-audio.dtbo' -> '/mnt/piboot/overlays/allo-piano-dac-plus-pcm512x-audio.dtbo' 'boot/overlays/applepi-dac.dtbo' -> '/mnt/piboot/overlays/applepi-dac.dtbo' 'boot/overlays/at86rf233.dtbo' -> '/mnt/piboot/overlays/at86rf233.dtbo' 'boot/overlays/audioinjector-addons.dtbo' -> '/mnt/piboot/overlays/audioinjector-addons.dtbo' 'boot/overlays/audioinjector-wm8731-audio.dtbo' -> '/mnt/piboot/overlays/audioinjector-wm8731-audio.dtbo' 'boot/overlays/audremap.dtbo' -> '/mnt/piboot/overlays/audremap.dtbo' 'boot/overlays/bmp085_i2c-sensor.dtbo' -> '/mnt/piboot/overlays/bmp085_i2c-sensor.dtbo' 'boot/overlays/dht11.dtbo' -> '/mnt/piboot/overlays/dht11.dtbo' 'boot/overlays/dionaudio-loco-v2.dtbo' -> '/mnt/piboot/overlays/dionaudio-loco-v2.dtbo' 'boot/overlays/dionaudio-loco.dtbo' -> '/mnt/piboot/overlays/dionaudio-loco.dtbo' 'boot/overlays/dpi18.dtbo' -> '/mnt/piboot/overlays/dpi18.dtbo' 'boot/overlays/dpi24.dtbo' -> '/mnt/piboot/overlays/dpi24.dtbo' 'boot/overlays/dwc-otg.dtbo' -> '/mnt/piboot/overlays/dwc-otg.dtbo' 'boot/overlays/dwc2.dtbo' -> '/mnt/piboot/overlays/dwc2.dtbo' 'boot/overlays/enc28j60-spi2.dtbo' -> '/mnt/piboot/overlays/enc28j60-spi2.dtbo' 'boot/overlays/enc28j60.dtbo' -> '/mnt/piboot/overlays/enc28j60.dtbo' 'boot/overlays/exc3000.dtbo' -> '/mnt/piboot/overlays/exc3000.dtbo' 'boot/overlays/fe-pi-audio.dtbo' -> '/mnt/piboot/overlays/fe-pi-audio.dtbo' 'boot/overlays/goodix.dtbo' -> '/mnt/piboot/overlays/goodix.dtbo' 'boot/overlays/googlevoicehat-soundcard.dtbo' -> '/mnt/piboot/overlays/googlevoicehat-soundcard.dtbo' 'boot/overlays/gpio-ir-tx.dtbo' -> '/mnt/piboot/overlays/gpio-ir-tx.dtbo' 'boot/overlays/gpio-ir.dtbo' -> '/mnt/piboot/overlays/gpio-ir.dtbo' 'boot/overlays/gpio-key.dtbo' -> '/mnt/piboot/overlays/gpio-key.dtbo' 'boot/overlays/gpio-poweroff.dtbo' -> '/mnt/piboot/overlays/gpio-poweroff.dtbo' 'boot/overlays/gpio-shutdown.dtbo' -> '/mnt/piboot/overlays/gpio-shutdown.dtbo' 'boot/overlays/hifiberry-amp.dtbo' -> '/mnt/piboot/overlays/hifiberry-amp.dtbo' 'boot/overlays/hifiberry-dac.dtbo' -> '/mnt/piboot/overlays/hifiberry-dac.dtbo' 'boot/overlays/hifiberry-dacplus.dtbo' -> '/mnt/piboot/overlays/hifiberry-dacplus.dtbo' 'boot/overlays/hifiberry-digi-pro.dtbo' -> '/mnt/piboot/overlays/hifiberry-digi-pro.dtbo' 'boot/overlays/hifiberry-digi.dtbo' -> '/mnt/piboot/overlays/hifiberry-digi.dtbo' 'boot/overlays/hy28a.dtbo' -> '/mnt/piboot/overlays/hy28a.dtbo' 'boot/overlays/hy28b.dtbo' -> '/mnt/piboot/overlays/hy28b.dtbo' 'boot/overlays/i2c-bcm2708.dtbo' -> '/mnt/piboot/overlays/i2c-bcm2708.dtbo' 'boot/overlays/i2c-gpio.dtbo' -> '/mnt/piboot/overlays/i2c-gpio.dtbo' 'boot/overlays/i2c-mux.dtbo' -> '/mnt/piboot/overlays/i2c-mux.dtbo' 'boot/overlays/i2c-pwm-pca9685a.dtbo' -> '/mnt/piboot/overlays/i2c-pwm-pca9685a.dtbo' 'boot/overlays/i2c-rtc-gpio.dtbo' -> '/mnt/piboot/overlays/i2c-rtc-gpio.dtbo' 'boot/overlays/i2c-rtc.dtbo' -> '/mnt/piboot/overlays/i2c-rtc.dtbo' 'boot/overlays/i2c-sensor.dtbo' -> '/mnt/piboot/overlays/i2c-sensor.dtbo' 'boot/overlays/i2c0-bcm2708.dtbo' -> '/mnt/piboot/overlays/i2c0-bcm2708.dtbo' 'boot/overlays/i2c1-bcm2708.dtbo' -> '/mnt/piboot/overlays/i2c1-bcm2708.dtbo' 'boot/overlays/i2s-gpio28-31.dtbo' -> '/mnt/piboot/overlays/i2s-gpio28-31.dtbo' 'boot/overlays/iqaudio-dac.dtbo' -> '/mnt/piboot/overlays/iqaudio-dac.dtbo' 'boot/overlays/iqaudio-dacplus.dtbo' -> '/mnt/piboot/overlays/iqaudio-dacplus.dtbo' 'boot/overlays/iqaudio-digi-wm8804-audio.dtbo' -> '/mnt/piboot/overlays/iqaudio-digi-wm8804-audio.dtbo' 'boot/overlays/jedec-spi-nor.dtbo' -> '/mnt/piboot/overlays/jedec-spi-nor.dtbo' 'boot/overlays/justboom-dac.dtbo' -> '/mnt/piboot/overlays/justboom-dac.dtbo' 'boot/overlays/justboom-digi.dtbo' -> '/mnt/piboot/overlays/justboom-digi.dtbo' 'boot/overlays/lirc-rpi.dtbo' -> '/mnt/piboot/overlays/lirc-rpi.dtbo' 'boot/overlays/mbed-dac.dtbo' -> '/mnt/piboot/overlays/mbed-dac.dtbo' 'boot/overlays/mcp23017.dtbo' -> '/mnt/piboot/overlays/mcp23017.dtbo' 'boot/overlays/mcp23s17.dtbo' -> '/mnt/piboot/overlays/mcp23s17.dtbo' 'boot/overlays/mcp2515-can0.dtbo' -> '/mnt/piboot/overlays/mcp2515-can0.dtbo' 'boot/overlays/mcp2515-can1.dtbo' -> '/mnt/piboot/overlays/mcp2515-can1.dtbo' 'boot/overlays/mcp3008.dtbo' -> '/mnt/piboot/overlays/mcp3008.dtbo' 'boot/overlays/mcp3202.dtbo' -> '/mnt/piboot/overlays/mcp3202.dtbo' 'boot/overlays/media-center.dtbo' -> '/mnt/piboot/overlays/media-center.dtbo' 'boot/overlays/midi-uart0.dtbo' -> '/mnt/piboot/overlays/midi-uart0.dtbo' 'boot/overlays/midi-uart1.dtbo' -> '/mnt/piboot/overlays/midi-uart1.dtbo' 'boot/overlays/mmc.dtbo' -> '/mnt/piboot/overlays/mmc.dtbo' 'boot/overlays/mpu6050.dtbo' -> '/mnt/piboot/overlays/mpu6050.dtbo' 'boot/overlays/mz61581.dtbo' -> '/mnt/piboot/overlays/mz61581.dtbo' 'boot/overlays/papirus.dtbo' -> '/mnt/piboot/overlays/papirus.dtbo' 'boot/overlays/pi3-act-led.dtbo' -> '/mnt/piboot/overlays/pi3-act-led.dtbo' 'boot/overlays/pi3-disable-bt.dtbo' -> '/mnt/piboot/overlays/pi3-disable-bt.dtbo' 'boot/overlays/pi3-disable-wifi.dtbo' -> '/mnt/piboot/overlays/pi3-disable-wifi.dtbo' 'boot/overlays/pi3-miniuart-bt.dtbo' -> '/mnt/piboot/overlays/pi3-miniuart-bt.dtbo' 'boot/overlays/pibell.dtbo' -> '/mnt/piboot/overlays/pibell.dtbo' 'boot/overlays/piscreen.dtbo' -> '/mnt/piboot/overlays/piscreen.dtbo' 'boot/overlays/piscreen2r.dtbo' -> '/mnt/piboot/overlays/piscreen2r.dtbo' 'boot/overlays/pisound.dtbo' -> '/mnt/piboot/overlays/pisound.dtbo' 'boot/overlays/pitft22.dtbo' -> '/mnt/piboot/overlays/pitft22.dtbo' 'boot/overlays/pitft28-capacitive.dtbo' -> '/mnt/piboot/overlays/pitft28-capacitive.dtbo' 'boot/overlays/pitft28-resistive.dtbo' -> '/mnt/piboot/overlays/pitft28-resistive.dtbo' 'boot/overlays/pitft35-resistive.dtbo' -> '/mnt/piboot/overlays/pitft35-resistive.dtbo' 'boot/overlays/pps-gpio.dtbo' -> '/mnt/piboot/overlays/pps-gpio.dtbo' 'boot/overlays/pwm-2chan.dtbo' -> '/mnt/piboot/overlays/pwm-2chan.dtbo' 'boot/overlays/pwm-ir-tx.dtbo' -> '/mnt/piboot/overlays/pwm-ir-tx.dtbo' 'boot/overlays/pwm.dtbo' -> '/mnt/piboot/overlays/pwm.dtbo' 'boot/overlays/qca7000.dtbo' -> '/mnt/piboot/overlays/qca7000.dtbo' 'boot/overlays/rotary-encoder.dtbo' -> '/mnt/piboot/overlays/rotary-encoder.dtbo' 'boot/overlays/rpi-backlight.dtbo' -> '/mnt/piboot/overlays/rpi-backlight.dtbo' 'boot/overlays/rpi-cirrus-wm5102.dtbo' -> '/mnt/piboot/overlays/rpi-cirrus-wm5102.dtbo' 'boot/overlays/rpi-dac.dtbo' -> '/mnt/piboot/overlays/rpi-dac.dtbo' 'boot/overlays/rpi-display.dtbo' -> '/mnt/piboot/overlays/rpi-display.dtbo' 'boot/overlays/rpi-ft5406.dtbo' -> '/mnt/piboot/overlays/rpi-ft5406.dtbo' 'boot/overlays/rpi-proto.dtbo' -> '/mnt/piboot/overlays/rpi-proto.dtbo' 'boot/overlays/rpi-sense.dtbo' -> '/mnt/piboot/overlays/rpi-sense.dtbo' 'boot/overlays/rpi-tv.dtbo' -> '/mnt/piboot/overlays/rpi-tv.dtbo' 'boot/overlays/rra-digidac1-wm8741-audio.dtbo' -> '/mnt/piboot/overlays/rra-digidac1-wm8741-audio.dtbo' 'boot/overlays/sc16is750-i2c.dtbo' -> '/mnt/piboot/overlays/sc16is750-i2c.dtbo' 'boot/overlays/sc16is752-i2c.dtbo' -> '/mnt/piboot/overlays/sc16is752-i2c.dtbo' 'boot/overlays/sc16is752-spi1.dtbo' -> '/mnt/piboot/overlays/sc16is752-spi1.dtbo' 'boot/overlays/sdhost.dtbo' -> '/mnt/piboot/overlays/sdhost.dtbo' 'boot/overlays/sdio-1bit.dtbo' -> '/mnt/piboot/overlays/sdio-1bit.dtbo' 'boot/overlays/sdio.dtbo' -> '/mnt/piboot/overlays/sdio.dtbo' 'boot/overlays/sdtweak.dtbo' -> '/mnt/piboot/overlays/sdtweak.dtbo' 'boot/overlays/smi-dev.dtbo' -> '/mnt/piboot/overlays/smi-dev.dtbo' 'boot/overlays/smi-nand.dtbo' -> '/mnt/piboot/overlays/smi-nand.dtbo' 'boot/overlays/smi.dtbo' -> '/mnt/piboot/overlays/smi.dtbo' 'boot/overlays/spi-gpio35-39.dtbo' -> '/mnt/piboot/overlays/spi-gpio35-39.dtbo' 'boot/overlays/spi-rtc.dtbo' -> '/mnt/piboot/overlays/spi-rtc.dtbo' 'boot/overlays/spi0-cs.dtbo' -> '/mnt/piboot/overlays/spi0-cs.dtbo' 'boot/overlays/spi0-hw-cs.dtbo' -> '/mnt/piboot/overlays/spi0-hw-cs.dtbo' 'boot/overlays/spi1-1cs.dtbo' -> '/mnt/piboot/overlays/spi1-1cs.dtbo' 'boot/overlays/spi1-2cs.dtbo' -> '/mnt/piboot/overlays/spi1-2cs.dtbo' 'boot/overlays/spi1-3cs.dtbo' -> '/mnt/piboot/overlays/spi1-3cs.dtbo' 'boot/overlays/spi2-1cs.dtbo' -> '/mnt/piboot/overlays/spi2-1cs.dtbo' 'boot/overlays/spi2-2cs.dtbo' -> '/mnt/piboot/overlays/spi2-2cs.dtbo' 'boot/overlays/spi2-3cs.dtbo' -> '/mnt/piboot/overlays/spi2-3cs.dtbo' 'boot/overlays/superaudioboard.dtbo' -> '/mnt/piboot/overlays/superaudioboard.dtbo' 'boot/overlays/sx150x.dtbo' -> '/mnt/piboot/overlays/sx150x.dtbo' 'boot/overlays/tinylcd35.dtbo' -> '/mnt/piboot/overlays/tinylcd35.dtbo' 'boot/overlays/uart0.dtbo' -> '/mnt/piboot/overlays/uart0.dtbo' 'boot/overlays/uart1.dtbo' -> '/mnt/piboot/overlays/uart1.dtbo' 'boot/overlays/upstream-aux-interrupt.dtbo' -> '/mnt/piboot/overlays/upstream-aux-interrupt.dtbo' 'boot/overlays/upstream.dtbo' -> '/mnt/piboot/overlays/upstream.dtbo' 'boot/overlays/vc4-fkms-v3d.dtbo' -> '/mnt/piboot/overlays/vc4-fkms-v3d.dtbo' 'boot/overlays/vc4-kms-v3d.dtbo' -> '/mnt/piboot/overlays/vc4-kms-v3d.dtbo' 'boot/overlays/vga666.dtbo' -> '/mnt/piboot/overlays/vga666.dtbo' 'boot/overlays/w1-gpio-pullup.dtbo' -> '/mnt/piboot/overlays/w1-gpio-pullup.dtbo' 'boot/overlays/w1-gpio.dtbo' -> '/mnt/piboot/overlays/w1-gpio.dtbo' 'boot/overlays/wittypi.dtbo' -> '/mnt/piboot/overlays/wittypi.dtbo' 'boot/start.elf' -> '/mnt/piboot/start.elf' 'boot/start_cd.elf' -> '/mnt/piboot/start_cd.elf' 'boot/start_db.elf' -> '/mnt/piboot/start_db.elf' 'boot/start_x.elf' -> '/mnt/piboot/start_x.elf' cyberdream /home/taglio/Sources/Rpi3/firmware # cd ../kbuild/linux/ cyberdream /home/taglio/Sources/Rpi3/kbuild/linux # rm /mnt/piboot/*.dtb cyberdream /home/taglio/Sources/Rpi3/kbuild/linux # cp -v arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb /mnt/piboot/ 'arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb' -> '/mnt/piboot/bcm2710-rpi-3-b-plus.dtb' cyberdream /home/taglio/Sources/Rpi3/kbuild/linux # cp -v arch/arm64/boot/dts/broadcom/bcm{2710,2837}-rpi-3-b.dtb /mnt/piboot/ 'arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb' -> '/mnt/piboot/bcm2710-rpi-3-b.dtb' 'arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dtb' -> '/mnt/piboot/bcm2837-rpi-3-b.dtb' cyberdream /home/taglio/Sources/Rpi3/kbuild/linux # ``` Going ahead with the kernel and its related modules; we can see that we invoque `modules_install` option of `make` declaring three variables: 1. `ARCH=arm64` 2. `CROSS_COMPILE=aarch64-unknown-linux-gnu-` 3. `INSTALL_MOD_PATH="/mnt/piroot"` You can appreciate the output of the entire command here: [https://ghostbin.com/paste/okxwe](https://ghostbin.com/paste/okxwe) ```sh cyberdream /home/taglio/Sources/Rpi3/kbuild/linux # cp -v arch/arm64/boot/Image /mnt/piboot/kernel8.img 'arch/arm64/boot/Image' -> '/mnt/piboot/kernel8.img' cyberdream /home/taglio/Sources/Rpi3/kbuild/linux # make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- modules_install INSTALL_MOD_PATH="/mnt/piroot" . . . DEPMOD 4.14.34-v8+ cyberdream /home/taglio/Sources/Rpi3/kbuild/linux # ``` The result of an `ls` of the `/boot` carpet is: ```sh cyberdream /mnt/piboot # ls -al total 34634 drwxr-xr-x 3 root root 2048 Apr 18 15:13 . drwxr-xr-x 7 root root 4096 Apr 18 09:59 .. -rwxr-xr-x 1 root root 18693 Apr 18 13:47 COPYING.linux -rwxr-xr-x 1 root root 1494 Apr 18 13:47 LICENCE.broadcom -rwxr-xr-x 1 root root 24519 Apr 18 15:13 bcm2710-rpi-3-b-plus.dtb -rwxr-xr-x 1 root root 24256 Apr 18 15:13 bcm2710-rpi-3-b.dtb -rwxr-xr-x 1 root root 17314 Apr 18 15:13 bcm2837-rpi-3-b.dtb -rwxr-xr-x 1 root root 52064 Apr 18 13:47 bootcode.bin -rwxr-xr-x 1 root root 6575 Apr 18 13:47 fixup.dat -rwxr-xr-x 1 root root 2599 Apr 18 13:47 fixup_cd.dat -rwxr-xr-x 1 root root 9726 Apr 18 13:47 fixup_db.dat -rwxr-xr-x 1 root root 9730 Apr 18 13:47 fixup_x.dat -rwxr-xr-x 1 root root 4676016 Apr 18 13:47 kernel.img -rwxr-xr-x 1 root root 4922144 Apr 18 13:47 kernel7.img -rwxr-xr-x 1 root root 13300224 Apr 18 17:46 kernel8.img drwxr-xr-x 2 root root 11264 Apr 18 13:47 overlays -rwxr-xr-x 1 root root 2825124 Apr 18 13:47 start.elf -rwxr-xr-x 1 root root 673444 Apr 18 13:47 start_cd.elf -rwxr-xr-x 1 root root 4968292 Apr 18 13:47 start_db.elf -rwxr-xr-x 1 root root 3912164 Apr 18 13:47 start_x.elf cyberdream /mnt/piboot # ``` Next we're going to extract the `stage3` tarball in the `/` mounted over `/mnt/piroot`. We're going to use `tar` in an advaced mode: - `-x`: Extract files from an archive. - `-v`: Verbosely list files processed. - `-j`: Filter the archive through bzip2. - `-p`: Extract information about file permissions. - `-f`: Use archive file or device ARCHIVE (`stage3-arm64-20180305.tar.bz2`) - `--xattrs-include`: Specify the include PATTERN for xattr keys. (`*.*`) - `--numeric-owner`: Always use numbers for user/group names. Full output here: [https://ghostbin.com/paste/yvs2x](https://ghostbin.com/paste/yvs2x) ```sh cyberdream /mnt/piroot # tar xvjpf /home/taglio/Sources/Rpi3/stage3/stage3-arm64-20180305.tar.bz2 --xattrs-include='*.*' --numeric-owner . . . cyberdream /mnt/piroot # ``` ### The portage latest snapshot The next step is to install a **Portage** snapshot, a set of files updated on a daily basis informing Portage what software is available to install, what profiles are available, and so on. ```sh taglio@cyberdream ~/Sources/Rpi3/portage $ wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2{,.gpgsig,.md5sum} --2018-04-20 10:15:21-- http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2 Resolving distfiles.gentoo.org... 64.50.236.52, 140.211.166.134, 137.226.34.46, ... Connecting to distfiles.gentoo.org|64.50.236.52|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 52621953 (50M) [application/x-bzip2] Saving to: ‘portage-latest.tar.bz2’ portage-latest.tar. 100%[===================>] 50.18M 6.93MB/s in 9.5s 2018-04-20 10:15:31 (5.30 MB/s) - ‘portage-latest.tar.bz2’ saved [52621953/52621953] --2018-04-20 10:15:31-- http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2.gpgsig Reusing existing connection to distfiles.gentoo.org:80. HTTP request sent, awaiting response... 200 OK Length: 963 [application/x-bzip2] Saving to: ‘portage-latest.tar.bz2.gpgsig’ portage-latest.tar. 100%[===================>] 963 --.-KB/s in 0s 2018-04-20 10:15:31 (297 MB/s) - ‘portage-latest.tar.bz2.gpgsig’ saved [963/963] --2018-04-20 10:15:31-- http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2.md5sum Reusing existing connection to distfiles.gentoo.org:80. HTTP request sent, awaiting response... 200 OK Length: 57 [application/x-bzip2] Saving to: ‘portage-latest.tar.bz2.md5sum’ portage-latest.tar. 100%[===================>] 57 --.-KB/s in 0s 2018-04-20 10:15:31 (21.2 MB/s) - ‘portage-latest.tar.bz2.md5sum’ saved [57/57] FINISHED --2018-04-20 10:15:31-- Total wall clock time: 10s Downloaded: 3 files, 50M in 9.5s (5.30 MB/s) taglio@cyberdream ~/Sources/Rpi3/portage $ ``` Next to verify the gpg signature we're going to fetch with `gpg` the latest key from the *Gentoo Portage Snapshot signing Key (Automated signing key)*. We have to find the `Key ID` in the official page de Release Engeneer: [https://wiki.gentoo.org/wiki/Project:RelEng#Keys](https://wiki.gentoo.org/wiki/Project:RelEng#Keys) In our case is `0xDB6B8C1F96D8BF6D`. Various options to launch with `gpg`: - `--search`: search for keys on a keyserver. - `1`: public key imported. - `--edit-key`: Present a menu which enables you to do most of the key management related tasks. - `fpr`: show key fingerprint. - `trust`: change the ownertrust. - `5`: ultimate trust. - `--verify`: Assume that the first argument is a signed file and verify it without generating any output. With no arguments, the signature packet is read from STDIN. If only one argument is given, the specified file is expected to include a complete signature. ```sh taglio@cyberdream ~/Sources/Rpi3/portage $ gpg --search 0xDB6B8C1F96D8BF6D gpg: data source: http://37.191.226.104:11371 (1) Gentoo Portage Snapshot Signing Key (Automated Signing Key) 4096 bit RSA key 0xDB6B8C1F96D8BF6D, created: 2011-11-25, expires: 2019-01-01 Keys 1-1 of 1 for "0xDB6B8C1F96D8BF6D". Enter number(s), N)ext, or Q)uit > 1 gpg: key 0xDB6B8C1F96D8BF6D: 13 signatures not checked due to missing keys gpg: key 0xDB6B8C1F96D8BF6D: public key "Gentoo Portage Snapshot Signing Key (Automated Signing Key)" imported gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 3 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 3u gpg: next trustdb check due at 2019-08-22 gpg: Total number processed: 1 gpg: imported: 1 taglio@cyberdream ~/Sources/Rpi3/portage taglio@cyberdream ~/Sources/Rpi3/portage $ gpg --edit-key 0xDB6B8C1F96D8BF6D gpg (GnuPG) 2.2.6; Copyright (C) 2018 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. pub rsa4096/0xDB6B8C1F96D8BF6D created: 2011-11-25 expires: 2019-01-01 usage: C trust: unknown validity: unknown sub rsa4096/0xEC590EEAC9189250 created: 2011-11-25 expires: 2019-01-01 usage: S [ unknown] (1). Gentoo Portage Snapshot Signing Key (Automated Signing Key) gpg> fpr pub rsa4096/0xDB6B8C1F96D8BF6D 2011-11-25 Gentoo Portage Snapshot Signing Key (Automated Signing Key) Primary key fingerprint: DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D gpg> trust pub rsa4096/0xDB6B8C1F96D8BF6D created: 2011-11-25 expires: 2019-01-01 usage: C trust: unknown validity: unknown sub rsa4096/0xEC590EEAC9189250 created: 2011-11-25 expires: 2019-01-01 usage: S [ unknown] (1). Gentoo Portage Snapshot Signing Key (Automated Signing Key) Please decide how far you trust this user to correctly verify other users' keys (by looking at passports, checking fingerprints from different sources, etc.) 1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately m = back to the main menu Your decision? 5 Do you really want to set this key to ultimate trust? (y/N) y pub rsa4096/0xDB6B8C1F96D8BF6D created: 2011-11-25 expires: 2019-01-01 usage: C trust: ultimate validity: unknown sub rsa4096/0xEC590EEAC9189250 created: 2011-11-25 expires: 2019-01-01 usage: S [unknown] (1). Gentoo Portage Snapshot Signing Key (Automated Signing Key) Please note that the shown key validity is not necessarily correct unless you restart the program. taglio@cyberdream ~/Sources/Rpi3/portage $ mv portage-latest.tar.bz2.gpgsig portage-latest.tar.bz2.sig taglio@cyberdream ~/Sources/Rpi3/portage $ gpg --verify portage-latest.tar.bz2.sig gpg: assuming signed data in 'portage-latest.tar.bz2' gpg: Signature made Fri 20 Apr 2018 02:51:21 CEST gpg: using RSA key E1D6ABB63BFCFB4BA02FDF1CEC590EEAC9189250 gpg: Good signature from "Gentoo Portage Snapshot Signing Key (Automated Signing Key)" [ultimate] Primary key fingerprint: DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D Subkey fingerprint: E1D6 ABB6 3BFC FB4B A02F DF1C EC59 0EEA C918 9250 taglio@cyberdream ~/Sources/Rpi3/portage $ ``` `untar` the tarball following the last `tar` command: ```sh cyberdream /mnt/piroot/usr # tar xvjpf /home/taglio/Sources/Rpi3/portage/portage-latest.tar.bz2 --xattrs-include='*.*' --numeric-owner . . . cyberdream /mnt/piroot/usr # ``` ### Wireless and bluetooth closed source firmware The chipset of the wi-fi interface that come inside the single-board Raspberry Pi 3 is a **Broadcom BRM43430** and needs two files to be present under `/lib/firmware/brcm`. The `.bin` is a [*binary blob*](https://en.wikipedia.org/wiki/Binary_blob) closed source piece of software. We can download it from the GitHub.com repository of the [**armbian**](https://www.armbian.com/) linux distribution. `brcmfmac` is a *Full-mac* driver we can read more about it here: [https://wireless.wiki.kernel.org/en/developers/documentation/glossary](https://wireless.wiki.kernel.org/en/developers/documentation/glossary) ```sh taglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ wget https://raw.GitHubusercontent.com/armbian/firmware/master/brcm/brcmfmac43430-sdio.txt --2018-04-25 02:18:14-- https://raw.GitHubusercontent.com/armbian/firmware/master/brcm/brcmfmac43430-sdio.txt Resolving raw.GitHubusercontent.com... 151.101.36.133 Connecting to raw.GitHubusercontent.com|151.101.36.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 902 [text/plain] Saving to: ‘brcmfmac43430-sdio.txt’ brcmfmac43430-sdio. 100%[===================>] 902 --.-KB/s in 0s 2018-04-25 02:18:15 (309 MB/s) - ‘brcmfmac43430-sdio.txt’ saved [902/902] taglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ wget https://GitHub.com/armbian/firmware/raw/master/brcm/brcmfmac43430-sdio.bin --2018-04-25 02:21:43-- https://GitHub.com/armbian/firmware/raw/master/brcm/brcmfmac43430-sdio.bin Resolving GitHub.com... 192.30.253.112, 192.30.253.113 Connecting to GitHub.com|192.30.253.112|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://raw.GitHubusercontent.com/armbian/firmware/master/brcm/brcmfmac43430-sdio.bin [following] --2018-04-25 02:21:44-- https://raw.GitHubusercontent.com/armbian/firmware/master/brcm/brcmfmac43430-sdio.bin Resolving raw.GitHubusercontent.com... 151.101.36.133 Connecting to raw.GitHubusercontent.com|151.101.36.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 416477 (407K) [application/octet-stream] Saving to: ‘brcmfmac43430-sdio.bin’ brcmfmac43430-sdio. 100%[===================>] 406.72K 1.61MB/s in 0.2s 2018-04-25 02:21:44 (1.61 MB/s) - ‘brcmfmac43430-sdio.bin’ saved [416477/416477] taglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ cyberdream /mnt/piroot/lib # mkdir -pv firmware/brcm mkdir: created directory 'firmware' mkdir: created directory 'firmware/brcm' cyberdream /mnt/piroot/lib # cp -v /home/taglio/Sources/Rpi3/wireless_firmware/brcmfmac43430-sdio.* firmware/brcm/ '/home/taglio/Sources/Rpi3/wireless_firmware/brcmfmac43430-sdio.bin' -> 'firmware/brcm/brcmfmac43430-sdio.bin' '/home/taglio/Sources/Rpi3/wireless_firmware/brcmfmac43430-sdio.txt' -> 'firmware/brcm/brcmfmac43430-sdio.txt' cyberdream /mnt/piroot/lib # ``` Next we have to fetch another *bynary blob* for the bluetooth chip that is a **BCM2837** and it is connected to the [**hardware UART**](https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter). We can do it from the Raspbian [bluez-firmware](https://GitHub.com/RPi-Distro/bluez-firmware/tree/master/broadcom) GitHub repository. ```sh taglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ wget https://raw.githubusercontent.com/RPi-Distro/bluez-firmware/master/broadcom/BCM43430A1.hcd --2018-04-25 02:51:22-- https://raw.githubusercontent.com/RPi-Distro/bluez-firmware/master/broadcom/BCM43430A1.hcd Resolving raw.githubusercontent.com... 151.101.36.133 Connecting to raw.githubusercontent.com|151.101.36.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 36264 (35K) [application/octet-stream] Saving to: ‘BCM43430A1.hcd’ BCM43430A1.hcd 100%[===================>] 35.41K --.-KB/s in 0.06s 2018-04-25 02:51:22 (629 KB/s) - ‘BCM43430A1.hcd’ saved [36264/36264] taglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ cyberdream /mnt/piroot/lib # cp -v /home/taglio/Sources/Rpi3/wireless_firmware/BCM43430A1.hcd firmware/brcm/ '/home/taglio/Sources/Rpi3/wireless_firmware/BCM43430A1.hcd' -> 'firmware/brcm/BCM43430A1.hcd' cyberdream /mnt/piroot/lib # ``` ### Custom config files We've to change some files under `/mnt/piroot` and `/mnt/piboot` to make the *first run* possible. They are: - `etc/fstab`: static information about the filesystems. - `config.txt`: more information at [https://elinux.org/RPiconfig](https://elinux.org/RPiconfig) - `cmdline.txt`: more information at [https://elinux.org/RPi_cmdline.txt](https://elinux.org/RPi_cmdline.txt) - `etc/conf.d/keymaps`: keyboard table descriptions for loadkeys and dumpkeys. - `etc/shadow`: shadowed password file (set `root` passwod to *raspberry*). ```sh cyberdream /mnt/piroot/etc # cat > fstab << EOF > /dev/mmcblk0p1 /boot vfat noauto,noatime 1 2 > /dev/mmcblk0p2 none swap sw 0 0 > /dev/mmcblk0p3 / ext4 noatime 0 1 > EOF cyberdream /mnt/piroot/etc # ``` ```sh cyberdream /mnt/piboot # cat > config.txt << EOF > # have a properly sized image > disable_overscan=1 > > # lets have the VC4 hardware accelerated video > dtoverlay=vc4-fkms-v3d > > # for sound over HDMI > hdmi_drive=2 > > # Enable audio (loads snd_bcm2835) > dtparam=audioon > > # gpu_mem is for closed-source driver only; since we are only using the > # open-source driver here, set low > gpu_mem=16 > EOF cyberdream /mnt/piboot # ``` ```sh cyberdream /mnt/piboot # cat > cmdline.txt << EOF > root=/dev/mmcblk0p3 rootfstype=ext4 rootwait > EOF cyberdream /mnt/piboot # ``` ```sh cyberdream /mnt/piroot/etc/conf.d # cat > keymaps << EOF > # Use keymap to specify the default console keymap. There is a complete tree > # of keymaps in /usr/share/keymaps to choose from. > keymap='es' > > # Should we first load the 'windowkeys' console keymap? Most x86 users will > # say "yes" here. Note that non-x86 users should leave it as "no". > # Loading this keymap will enable VT switching (like ALT+Left/Right) > # using the special windows keys on the linux console. > windowkeys="YES" > > # The maps to load for extended keyboards. Most users will leave this as is. > extended_keymaps="" > #extended_keymaps="backspace keypad euro2" > > # Tell dumpkeys(1) to interpret character action codes to be > # from the specified character set. > # This only matters if you set unicode="yes" in /etc/rc.conf. > # For a list of valid sets, run `dumpkeys --help` > dumpkeys_charset="" > > # Some fonts map AltGr-E to the currency symbol instead of the Euro. > # To fix this, set to "yes" > fix_euro="NO" > EOF cyberdream /mnt/piroot/etc/conf.d # ``` ```sh cyberdream /mnt/piroot/etc # cat > shadow << EOF > root:/Td5iP$/7Asdgq0ux2sgNkklnndcG4g3493kUYfrrdenBXjxBxEsoLneJpDAwOyX/kkpFB4pU5dlhHEyN0SK4eh/WpmO0:10770:0::::: > halt:*:9797:0::::: > operator:*:9797:0::::: > shutdown:*:9797:0::::: > sync:*:9797:0::::: > bin:*:9797:0::::: > daemon:*:9797:0::::: > adm:*:9797:0::::: > lp:*:9797:0::::: > news:*:9797:0::::: > uucp:*:9797:0::::: > portage:*:9797:0::::: > nobody:*:9797:0::::: > man:!:17595:::::: > sshd:!:17595:::::: > EOF cyberdream /mnt/piroot/etc # ``` ### First boot `umount` and `sync` the *microSD* partition and insert it in the **Raspberry pi 3** slot. ```sh cyberdream ~ # umount -v /mnt/piroot/ umount: /mnt/piroot/ unmounted cyberdream ~ # umount -v /mnt/piboot/ umount: /mnt/piboot/ unmounted cyberdream ~ # sync cyberdream ~ # ``` Connect an *HDMI* cable to a monitor and a *USB* mouse and keyboard to the **Raspberry pi 3** ports. |
| json metadata | {"tags":["gentoo","raspberry","arm","arm64","crosscompile"],"image":["https://images6.alphacoders.com/480/thumb-1920-480025.jpg","https://c402277.ssl.cf1.rackcdn.com/photos/1560/images/story_full_width/HI_292876WHYMatter1.jpg?1345547525","https://www.urbanseedling.com/wp-content/uploads/2015/03/Raspberry-Festival--600x600.jpg","https://raw.GitHubusercontent.com/sakaki-/resources/master/raspberrypi/pi3/demo-screenshot-small-3.jpg"],"links":["https://www.gentoo.org","https://packages.gentoo.org/packages/sys-devel/crossdev","https://wiki.gentoo.org/wiki/Project:Overlays/Overlays_guide","https://wiki.gentoo.org/wiki/Portage","https://en.wikipedia.org/wiki/DEC_Alpha","https://en.wikipedia.org/wiki/PA-RISC","https://en.wikipedia.org/wiki/X86","https://en.wikipedia.org/wiki/MIPS_architecture","https://en.wikipedia.org/wiki/PowerPC","https://en.wikipedia.org/wiki/SPARC","https://en.wikipedia.org/wiki/SuperH","https://en.wikipedia.org/wiki/ARM_architecture","https://en.wikipedia.org/wiki/IA-64","https://en.wikipedia.org/wiki/Motorola_68000_series","https://en.wikipedia.org/wiki/Z/Architecture","https://www.raspberrypi.org/","https://en.wikipedia.org/wiki/Single-board_computer","https://en.wikipedia.org/wiki/Raspberry_Pi_Foundation","https://xfce.org/","https://GitHub.com/raspberrypi/linux","https://en.wikipedia.org/wiki/Das_U-Boot","https://ghostbin.com/paste/cg62q","https://ghostbin.com/paste/damwc","https://simple.wikipedia.org/wiki/MicroSD","https://en.wikipedia.org/wiki/Disk_partitioning","https://en.wikipedia.org/wiki/Extended_file_system","https://wiki.gentoo.org/wiki/System_set_(Portage)","https://www.reddit.com/r/Gentoo/comments/8d415b/errata/","https://events.static.linuxfound.org/sites/events/files/slides/petazzoni-device-tree-dummies","https://ghostbin.com/paste/gn8wj","https://ghostbin.com/paste/okxwe","https://ghostbin.com/paste/yvs2x","https://wiki.gentoo.org/wiki/Project:RelEng#Keys","https://en.wikipedia.org/wiki/Binary_blob","https://www.armbian.com/","https://wireless.wiki.kernel.org/en/developers/documentation/glossary","https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter","https://GitHub.com/RPi-Distro/bluez-firmware/tree/master/broadcom","https://elinux.org/RPiconfig","https://elinux.org/RPi_cmdline.txt"],"app":"steemit/0.1","format":"markdown"} |
| Transaction Info | Block #21875649/Trx b14a964b85f771c79a699ba9e550a03c5ad5f1b6 |
View Raw JSON Data
{
"trx_id": "b14a964b85f771c79a699ba9e550a03c5ad5f1b6",
"block": 21875649,
"trx_in_block": 0,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-25T12:20:21",
"op": [
"comment",
{
"parent_author": "",
"parent_permlink": "gentoo",
"author": "npna",
"permlink": "cross-compile-in-gentoo-to-obtain-a-custom-raspberry-pi-3-firmware",
"title": "Cross compile in Gentoo to obtain a custom Raspberry Pi 3 firmware.",
"body": "## ¿What is a cross compiler?\n------\n\n\n\nFirst of all a *compiler* is a computer software that translate one *programming language* to another. To be more exact, it normally translate a **high level** source programming language code to a **low level** one. For example the `gcc` compiler translate `C` source code in `asm` (**assembler**) machine code. \n\nA *cross compiler* is a compiler that generete machine code for a different *architecture* respect the one where the compiler is executed. The example that we will explain in this guide is **from x64 intel processor to a quad-core ARM Cortex A53 (ARMv8) cluster, classificated under the arm64 family**.\n\n## Gentoo cross compiling environment\n------\n\n\n\n[The Gentoo Linux distribution](https://www.gentoo.org) have got a script package that simplify the life of a *system administrator* speaking about the work of preparing the correct *cross compiler environment*. Its name is [**crossdev**](https://packages.gentoo.org/packages/sys-devel/crossdev). These are the steps to obtain a working `arm64` compile environment. \n\nFirst of all we `emerge` the package using the options:\n\n- `-a` Before performing the action, display what will take place\n then ask whether to proceed with the action or abort.\n Using --ask is more efficient than using --pretend and then exe‐\n cuting the same command without --pretend, as dependencies will\n only need to be calculated once.\n- `-v` Tell emerge to run in verbose mode.\n\n```sh\ncyberdream /home/taglio # emerge -av crossdev\n\nThese are the packages that would be merged, in order:\n\nCalculating dependencies... done!\n[ebuild N ] sys-devel/crossdev-20171230::gentoo 23 KiB\n\nTotal: 1 package (1 new), Size of downloads: 23 KiB\n\nWould you like to merge these packages? [Yes/No] Yes\n>>> Verifying ebuild manifests\n>>> Emerging (1 of 1) sys-devel/crossdev-20171230::gentoo\n>>> Installing (1 of 1) sys-devel/crossdev-20171230::gentoo\n>>> Recording sys-devel/crossdev in \"world\" favorites file...\n>>> Jobs: 1 of 1 complete Load avg: 0.67, 0.55, 0.29\n\n * Messages for package sys-devel/crossdev-20171230:\n\n * Package: sys-devel/crossdev-20171230\n * Repository: gentoo\n * Maintainer: [email protected] [email protected]\n * USE: abi_x86_64 amd64 elibc_glibc kernel_linux userland_GNU\n * FEATURES: preserve-libs sandbox userpriv usersandbox\n * Final size of build directory: 196 KiB\n * Final size of installed tree: 204 KiB\n >>> Auto-cleaning packages...\n\n>>> No outdated packages were found on your system.\n\n * GNU info directory index is up-to-date.\n \ncyberdream /home/taglio #\n```\n\n Next we've got to configure an [**overlay **](https://wiki.gentoo.org/wiki/Project:Overlays/Overlays_guide) to use with `crossdev`.\n\n- Make correct tree directories using the [**Gentoo portage**](https://wiki.gentoo.org/wiki/Portage) instructions.\n\n```bash\ncyberdream /usr/local # mkdir -pv /usr/local/portage-crossdev/{profiles,metadata}\nmkdir: created directory '/usr/local/portage-crossdev'\nmkdir: created directory '/usr/local/portage-crossdev/profiles'\nmkdir: created directory '/usr/local/portage-crossdev/metadata'\ncyberdream /usr/local # echo 'crossdev' > /usr/local/portage-crossdev/profiles/repo_name\ncyberdream /usr/local # echo 'masters = gentoo' > /usr/local/portage-crossdev/metadata/layout.conf\ncyberdream /usr/local # chown -R portage:portage /usr/local/portage-crossdev\ncyberdream /usr/local # cat << EOF > /etc/portage/repos.conf/crossdev.conf\n[crossdev]\n\nlocation = /usr/local/portage-crossdev\npriority = 10\nmasters = gentoo\nauto-sync = no\nEOF\ncyberdream /usr/local #\n\n```\n\nNow we're going to build the **toolchain** for the `arm64` architecture using the **stable branch** tools. Those are the options used:\n\n- `--stable` Use latest stable tools version as default.\n- `-t` Choose an architecture between:\n - [alpha](https://en.wikipedia.org/wiki/DEC_Alpha)\n - [hppa (parisc)](https://en.wikipedia.org/wiki/PA-RISC)\n - [i386 / i486 / i586 / i686 (x86)](https://en.wikipedia.org/wiki/X86) *32 bit version*\n - [mips / mipsel / mips64 / mips64el](https://en.wikipedia.org/wiki/MIPS_architecture)\n - [powerpc (ppc) / powerpc64 (ppc64)](https://en.wikipedia.org/wiki/PowerPC)\n - [sparc / sparc64](https://en.wikipedia.org/wiki/SPARC)\n - [sh / sh[1-5] / sh64](https://en.wikipedia.org/wiki/SuperH)\n - [arm / armeb / aarch64](https://en.wikipedia.org/wiki/ARM_architecture)\n - [ia64](https://en.wikipedia.org/wiki/IA-64)\n - [m68k](https://en.wikipedia.org/wiki/Motorola_68000_series)\n - [s390 / s390x](https://en.wikipedia.org/wiki/Z/Architecture)\n - [x86_64 (amd64)](https://en.wikipedia.org/wiki/X86) *64 bit version*\n- `-genv` Specify environment for `gcc`\n\n```sh\ncyberdream /etc/portage/repos.conf # crossdev --stable -t aarch64-unknown-linux-gnu --genv 'USE=\"cxx multilib fortran -mudflap nls openmp -sanitize\"'\n- \n * crossdev version: 20171230\n * Host Portage ARCH: amd64\n * Target Portage ARCH: arm64\n * Target System: aarch64-unknown-linux-gnu\n * Stage: 4 (C/C++ compiler)\n * ABIs: arm64\n\n * binutils: binutils-[stable]\n * gcc: gcc-[stable]\n * headers: linux-headers-[stable]\n * libc: glibc-[stable]\n\n * CROSSDEV_OVERLAY: /usr/local/portage-crossdev\n * PORT_LOGDIR: /var/log/portage\n * PORTAGE_CONFIGROOT: /\n * Portage flags: \n \n * leaving metadata/layout.conf alone in /usr/local/portage-crossdev\n \n * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-binutils.log\n * Emerging cross-binutils ... [ ok ]\n * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-linux-headers-quick.log\n * Emerging cross-linux-headers-quick ... [ ok ]\n * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-glibc-headers.log\n * Emerging cross-glibc-headers ... [ ok ]\n * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-gcc-stage1.log\n * Emerging cross-gcc-stage1 ... [ ok ]\n * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-linux-headers.log\n * Emerging cross-linux-headers ... [ ok ]\n * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-glibc.log\n * Emerging cross-glibc ... [ ok ]\n * Log: /var/log/portage/cross-aarch64-unknown-linux-gnu-gcc-stage2.log\n * Emerging cross-gcc-stage2 ... [ ok ]\ncyberdream /etc/portage/repos.conf # \n```\n\nAfter some time the process will end, and we have the **toolchain** ready to build the code that we want to use. In this case we're going to build the kernel and base system for a [**Rasberry Pi 3**](https://www.raspberrypi.org/).\n\nWe can check the version of our new tools:\n\n```sh\ntaglio@cyberdream ~ $ aarch64-unknown-linux-gnu-g++ --version\naarch64-unknown-linux-gnu-g++ (Gentoo 6.4.0-r1 p1.3) 6.4.0\nCopyright (C) 2017 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ntaglio@cyberdream ~ $ aarch64-unknown-linux-gnu-c++ --version\naarch64-unknown-linux-gnu-c++ (Gentoo 6.4.0-r1 p1.3) 6.4.0\nCopyright (C) 2017 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ntaglio@cyberdream ~ $aarch64-unknown-linux-gnu-gcc --version\naarch64-unknown-linux-gnu-gcc (Gentoo 6.4.0-r1 p1.3) 6.4.0\nCopyright (C) 2017 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ntaglio@cyberdream ~ $\n\n```\n\n## The Raspberry Pi 3\n\n\n\nThe **Raspberry Pi** is a [*single board computer*](https://en.wikipedia.org/wiki/Single-board_computer) that have sold more than 19 million of devices. It's developed in the United Kindom by the [**Raspberry Pi Foundation**](https://en.wikipedia.org/wiki/Raspberry_Pi_Foundation) that is a charity with the goal to introduce computer science in third world schools.\n\nWith its third version it's possible to run a lightweight desktop without any problem under Linux. Look at this screenshot of the [**xfce desktop**](https://xfce.org/) environment.\n\n\n\nLet's begin with the compile process for this single board device.\n\n### The Kernel\n\nFirst we download the latest stable kernel from the official Raspberry Pi [**GitHub kernel repository**](https://GitHub.com/raspberrypi/linux). At the time of writing is the `rpi-4.14.y`. We use this `git` options:\n\n- `clone`: Clones a repository into a newly created directory, creates remote-tracking branches for each branch in the cloned repository (visible using git branch -r), and creates and checks out an initial branch that is forked from the cloned repository’s currently active branch.\n- `--depth`: Create a shallow clone with a history truncated to the specified number of commits (`1`).\n- `-b`: Clone a determinated branch.\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/kbuild $ git clone --depth 1 https://GitHub.com/raspberrypi/linux.git -b rpi-4.14.y\nCloning into 'linux'...\nremote: Counting objects: 65735, done.\nremote: Compressing objects: 100% (60168/60168), done.\nReceiving objects: 100% (65735/65735), 174.15 MiB | 7.88 MiB/s, done.\nremote: Total 65735 (delta 7072), reused 15358 (delta 4598), pack-reused 0\nResolving deltas: 100% (7072/7072), done.\nChecking out files: 100% (61808/61808), done.\ntaglio@cyberdream ~/Sources/Rpi3/kbuild $\n```\n\nNext compile the kernel, modules, firmware and [u-boot](https://en.wikipedia.org/wiki/Das_U-Boot) stuff.\n\nWe set two variables:\n\n- `ARCH=arm64`\n- `CROSS_COMPILE=aarch64-unknown-linux-gnu-`\n\nAnd we start `make` using two different options:\n\n- `distclean` : Remove all generated files, config, various backup files and editor backup and patch files\n - `bcmrpi3_defconfig` : Use prestablished config located in `arch/arm64/configs` ([https://ghostbin.com/paste/cg62q](https://ghostbin.com/paste/cg62q))\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/kbuild/linux $ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- distclean\n CLEAN .\n CLEAN arch/arm64/kernel/vdso\n CLEAN arch/arm64/kernel\n CLEAN drivers/firmware/efi/libstub\n CLEAN drivers/tty/vt\n CLEAN drivers/video/logo\n CLEAN kernel/debug/kdb\n CLEAN kernel\n CLEAN lib/raid6\n CLEAN lib\n CLEAN usr\n CLEAN arch/arm64/boot\n CLEAN arch/arm64/boot/dts/broadcom/../overlays\n CLEAN arch/arm64/boot/dts/broadcom\n CLEAN .tmp_versions\n CLEAN scripts/basic\n CLEAN scripts/dtc\n CLEAN scripts/genksyms\n CLEAN scripts/kconfig\n CLEAN scripts/mod\n CLEAN scripts\n CLEAN include/config include/generated arch/arm64/include/generated\n CLEAN .config .version Module.symvers\ntaglio@cyberdream ~/Sources/Rpi3/kbuild/linux $ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- bcmrpi3_defconfig\n HOSTCC scripts/basic/fixdep\n HOSTCC scripts/kconfig/conf.o\n SHIPPED scripts/kconfig/zconf.tab.c\n SHIPPED scripts/kconfig/zconf.lex.c\n HOSTCC scripts/kconfig/zconf.tab.o\n HOSTLD scripts/kconfig/conf\n#\n# configuration written to .config\n#\ntaglio@cyberdream ~/Sources/Rpi3/kbuild/linux $\n```\n\nNext we start the real kernel cross compile. We use the command `time` to mesure the real minutes to build our `arm64` kernel. With `-j$(nprocs)` we start many threads like many processor core we have.\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/kbuild/linux $ time make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- -j$(nproc)\n.\n.\n.\nreal\t5m47.534s\nuser\t38m35.320s\nsys\t1m34.610s\ntaglio@cyberdream ~/Sources/Rpi3/kbuild/linux $\n```\n\nYou can read about all the output here:\n\n[https://ghostbin.com/paste/damwc](https://ghostbin.com/paste/damwc)\n\n### The Firmware\n\nLike we've done before lets *shallow clone* [`--depth 1`] the GitHub raspberry firmware repository (after we exec two `ls` to see what we've downloaded):\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3 $ git clone --depth 1 https://GitHub.com/raspberrypi/firmware\nCloning into 'firmware'...\nremote: Counting objects: 4379, done.\nremote: Compressing objects: 100% (2676/2676), done.\nremote: Total 4379 (delta 1498), reused 2183 (delta 1359), pack-reused 0\nReceiving objects: 100% (4379/4379), 84.19 MiB | 10.97 MiB/s, done.\nResolving deltas: 100% (1498/1498), done.\ntaglio@cyberdream ~/Sources/Rpi3 $ cd firmware/\ntaglio@cyberdream ~/Sources/Rpi3/firmware $ ls\nREADME.md boot documentation extra hardfp modules opt\ntaglio@cyberdream ~/Sources/Rpi3/firmware $ cd boot/\ntaglio@cyberdream ~/Sources/Rpi3/firmware/boot $ ls -al\ntotal 21772\ndrwxr-xr-x 3 taglio taglio 4096 Apr 17 17:41 .\ndrwxr-xr-x 9 taglio taglio 4096 Apr 17 17:41 ..\n-rw-r--r-- 1 taglio taglio 18693 Apr 17 17:41 COPYING.linux\n-rw-r--r-- 1 taglio taglio 1494 Apr 17 17:41 LICENCE.broadcom\n-rw-r--r-- 1 taglio taglio 22264 Apr 17 17:41 bcm2708-rpi-0-w.dtb\n-rw-r--r-- 1 taglio taglio 22020 Apr 17 17:41 bcm2708-rpi-b-plus.dtb\n-rw-r--r-- 1 taglio taglio 21761 Apr 17 17:41 bcm2708-rpi-b.dtb\n-rw-r--r-- 1 taglio taglio 21474 Apr 17 17:41 bcm2708-rpi-cm.dtb\n-rw-r--r-- 1 taglio taglio 23044 Apr 17 17:41 bcm2709-rpi-2-b.dtb\n-rw-r--r-- 1 taglio taglio 24503 Apr 17 17:41 bcm2710-rpi-3-b-plus.dtb\n-rw-r--r-- 1 taglio taglio 24240 Apr 17 17:41 bcm2710-rpi-3-b.dtb\n-rw-r--r-- 1 taglio taglio 22952 Apr 17 17:41 bcm2710-rpi-cm3.dtb\n-rw-r--r-- 1 taglio taglio 52064 Apr 17 17:41 bootcode.bin\n-rw-r--r-- 1 taglio taglio 6575 Apr 17 17:41 fixup.dat\n-rw-r--r-- 1 taglio taglio 2599 Apr 17 17:41 fixup_cd.dat\n-rw-r--r-- 1 taglio taglio 9726 Apr 17 17:41 fixup_db.dat\n-rw-r--r-- 1 taglio taglio 9730 Apr 17 17:41 fixup_x.dat\n-rw-r--r-- 1 taglio taglio 4676016 Apr 17 17:41 kernel.img\n-rw-r--r-- 1 taglio taglio 4922144 Apr 17 17:41 kernel7.img\ndrwxr-xr-x 2 taglio taglio 4096 Apr 17 17:41 overlays\n-rw-r--r-- 1 taglio taglio 2825124 Apr 17 17:41 start.elf\n-rw-r--r-- 1 taglio taglio 673444 Apr 17 17:41 start_cd.elf\n-rw-r--r-- 1 taglio taglio 4968292 Apr 17 17:41 start_db.elf\n-rw-r--r-- 1 taglio taglio 3912164 Apr 17 17:41 start_x.elf\ntaglio@cyberdream ~/Sources/Rpi3/firmware/boot $\n```\n\n### The partition table\n\nWe've to insert the [**microSD card**](https://simple.wikipedia.org/wiki/MicroSD) in our principal Gentoo PC to create the correct partition table for our **Raspberry Pi 3**. The layout have to be:\n\n- [partition](https://en.wikipedia.org/wiki/Disk_partitioning) disklabel type (*partitioning scheme*): `DOS`\n- first primary partition: size `128M`, type `c` (*W95 FAT32 (LBA)*), bootable flag `a` active\n- second primary partition: size `2G`, type `82` (*Linux swap / Solaris*)\n- third primary partition: size all, type `83` (*Linux*) \n\nHere is the correct commands from the Linux `fdisk` shell:\n\n```sh\ncyberdream ~ # fdisk /dev/mmcblk0\n\nWelcome to fdisk (util-linux 2.30.2).\nChanges will remain in memory only, until you decide to write them.\nBe careful before using the write command.\n\nCommand (m for help): o\nCreated a new DOS disklabel with disk identifier 0x718393ba.\n\nCommand (m for help): p\nDisk /dev/mmcblk0: 29.8 GiB, 32010928128 bytes, 62521344 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\nDisklabel type: dos\nDisk identifier: 0x718393ba\n\nCommand (m for help): p\nDisk /dev/mmcblk0: 29.8 GiB, 32010928128 bytes, 62521344 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\nDisklabel type: dos\nDisk identifier: 0x718393ba\n\nCommand (m for help): n\nPartition type\n p primary (0 primary, 0 extended, 4 free)\n e extended (container for logical partitions)\nSelect (default p): p\nPartition number (1-4, default 1): 1\nFirst sector (2048-62521343, default 2048): \nLast sector, +sectors or +size{K,M,G,T,P} (2048-62521343, default 62521343): +128M\n\nCreated a new partition 1 of type 'Linux' and of size 128 MiB.\n\nCommand (m for help): n\nPartition type\n p primary (1 primary, 0 extended, 3 free)\n e extended (container for logical partitions)\nSelect (default p): p\nPartition number (2-4, default 2): \nFirst sector (264192-62521343, default 264192): \nLast sector, +sectors or +size{K,M,G,T,P} (264192-62521343, default 62521343): +2G\n\nCreated a new partition 2 of type 'Linux' and of size 2 GiB.\n\nCommand (m for help): n\nPartition type\n p primary (2 primary, 0 extended, 2 free)\n e extended (container for logical partitions)\nSelect (default p): p\nPartition number (3,4, default 3): \nFirst sector (4458496-62521343, default 4458496): \nLast sector, +sectors or +size{K,M,G,T,P} (4458496-62521343, default 62521343): \n \nCreated a new partition 3 of type 'Linux' and of size 27.7 GiB.\n\nCommand (m for help): p\nDisk /dev/mmcblk0: 29.8 GiB, 32010928128 bytes, 62521344 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\nDisklabel type: dos\nDisk identifier: 0x718393ba\n\nDevice Boot Start End Sectors Size Id Type\n/dev/mmcblk0p1 2048 264191 262144 128M 83 Linux\n/dev/mmcblk0p2 264192 4458495 4194304 2G 83 Linux\n/dev/mmcblk0p3 4458496 62521343 58062848 27.7G 83 Linux\n\nCommand (m for help): a\nPartition number (1-3, default 3): 1\n\nThe bootable flag on partition 1 is enabled now.\n\nCommand (m for help): t\nPartition number (1-3, default 3): 1\nHex code (type L to list all codes): c\n\nChanged type of partition 'Linux' to 'W95 FAT32 (LBA)'.\n\nCommand (m for help): t\nPartition number (1-3, default 3): 2\nHex code (type L to list all codes): 82\n\nChanged type of partition 'Linux' to 'Linux swap / Solaris'.\n\nCommand (m for help): p\nDisk /dev/mmcblk0: 29.8 GiB, 32010928128 bytes, 62521344 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\nDisklabel type: dos\nDisk identifier: 0x718393ba\n\nDevice Boot Start End Sectors Size Id Type\n/dev/mmcblk0p1 * 2048 264191 262144 128M c W95 FAT32 (LBA)\n/dev/mmcblk0p2 264192 4458495 4194304 2G 82 Linux swap / Solaris\n/dev/mmcblk0p3 4458496 62521343 58062848 27.7G 83 Linux\n\nCommand (m for help): w\nThe partition table has been altered.\nCalling ioctl() to re-read partition table.\nSyncing disks.\n\ncyberdream ~ # \n```\n\n Next we format the three partition with the correct `fs` type, using those commands and options:\n\n- `mkfs -t vfat -F 32`: used to create an MS-DOS filesystem under Linux. `-F` Specifies the type of file allocation tables used (*in this case 32 bit*).\n- `mkswap`: sets up a Linux swap area on a device or in a file.\n- `mkfs -i 8192 -t ext4`: \n - `-i`: Specify the bytes/inode ratio. `mke2fs` creates an inode for\n every bytes-per-inode bytes of space on the disk. The larger\n the bytes-per-inode ratio, the fewer inodes will be created.\n - `-t`: choose between [`ext{2,3,4}`](https://en.wikipedia.org/wiki/Extended_file_system)\n\n```sh\ncyberdream ~ # mkfs -t vfat -F 32 /dev/mmcblk0p1 \nmkfs.fat 4.0 (2016-05-06)\ncyberdream ~ # mkswap /dev/mmcblk0p2 \nSetting up swapspace version 1, size = 2 GiB (2147479552 bytes)\nno label, UUID=0ed9f502-c3a4-4821-b646-91a0cda22dc9\ncyberdream ~ # mkfs -i 8192 -t ext4 /dev/mmcblk0p3 \nmke2fs 1.43.6 (29-Aug-2017)\n/dev/mmcblk0p3 contains `ISO-8859 text, with very long lines, with no line terminators' data\nProceed anyway? (y,N) y\nCreating filesystem with 7257856 4k blocks and 3630144 inodes\nFilesystem UUID: fdd18e6c-377b-47e8-9595-46b1f036dd84\nSuperblock backups stored on blocks: \n\t32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, \n\t4096000\n\nAllocating group tables: done \nWriting inode tables: done \nCreating journal (32768 blocks): done\nWriting superblocks and filesystem accounting information: done \n\ncyberdream ~ #\n```\n\n### The filesystem\n\nNext we have to populate the `/boot` (*1*) and `/` (*3*) partitions. \n\nGentoo use the concept of *stage tarballs*; they are archives containing files that will be used in the installation process. More in deep we're going to download `stage3` `arm64` tarballs that contains what the gentoo crew call [a system set](https://wiki.gentoo.org/wiki/System_set_(Portage)); also we're going to verificate that the archive has not been manipulated during the fetch process:\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/stage3 $ wget http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-20180305.tar.bz2{,.CONTENTS,.DIGESTS}\n--2018-04-18 09:16:19-- http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-20180305.tar.bz2\nResolving distfiles.gentoo.org... 137.226.34.46, 216.165.129.135, 64.50.233.100, ...\nConnecting to distfiles.gentoo.org|137.226.34.46|:80... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 233168546 (222M) [application/octet-stream]\nSaving to: ‘stage3-arm64-20180305.tar.bz2’\n\nstage3-arm64-201803 100%[===================>] 222.37M 35.4MB/s in 6.6s \n\n2018-04-18 09:16:26 (33.8 MB/s) - ‘stage3-arm64-20180305.tar.bz2’ saved [233168546/233168546]\n\n--2018-04-18 09:16:26-- http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-20180305.tar.bz2.CONTENTS\nReusing existing connection to distfiles.gentoo.org:80.\nHTTP request sent, awaiting response... 200 OK\nLength: 5281799 (5.0M) [application/octet-stream]\nSaving to: ‘stage3-arm64-20180305.tar.bz2.CONTENTS’\n\nstage3-arm64-201803 100%[===================>] 5.04M 30.3MB/s in 0.2s \n\n2018-04-18 09:16:26 (30.3 MB/s) - ‘stage3-arm64-20180305.tar.bz2.CONTENTS’ saved [5281799/5281799]\n\n--2018-04-18 09:16:26-- http://distfiles.gentoo.org/experimental/arm64/stage3-arm64-20180305.tar.bz2.DIGESTS\nReusing existing connection to distfiles.gentoo.org:80.\nHTTP request sent, awaiting response... 200 OK\nLength: 712 [application/octet-stream]\nSaving to: ‘stage3-arm64-20180305.tar.bz2.DIGESTS’\n\nstage3-arm64-201803 100%[===================>] 712 --.-KB/s in 0s \n\n2018-04-18 09:16:26 (298 MB/s) - ‘stage3-arm64-20180305.tar.bz2.DIGESTS’ saved [712/712]\n\nFINISHED --2018-04-18 09:16:26--\nTotal wall clock time: 7.3s\nDownloaded: 3 files, 227M in 6.7s (33.7 MB/s)\ntaglio@cyberdream ~/Sources/Rpi3/stage3 $\n```\n\nNext we verify the `sha512sum` of the tarball using this options:\n\n- With `awk` we print in `stdout` only the line containing the `SHA512` hash.\n- The `sed` invocation is necessary to probably correct an *error* from the Gentoo team (reported [here](https://www.reddit.com/r/Gentoo/comments/8d415b/errata/))\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/stage3 $ awk '/SHA512 HASH/{getline;print}' stage3-arm64-20180305.tar.bz2.DIGESTS | sed s/2008.0/20180305/g | sha512sum --check\nstage3-arm64-20180305.tar.bz2: OK\nstage3-arm64-20180305.tar.bz2.CONTENTS: OK\ntaglio@cyberdream ~/Sources/Rpi3/stage3 $\n```\n\nLet's begin to move our files in the *microSD* partitions. After creating the mountpoint `/mnt/piboot` and `/mnt/piroot`, start with the firmware, the kernel and the kernel modules.\n\nSpeaking about the `/boot` partiotion note that we delete all the `.dtb` file after copying the entire directory in the microSD card. This is why we want to use the `64 bit` version of the **device tree binary** file. A good reference that i found in the web is:\n\n[https://events.static.linuxfound.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf](https://events.static.linuxfound.org/sites/events/files/slides/petazzoni-device-tree-dummies) \n\nYou can evaluate the output of the command `strings` in a `.dtb` file here:\n\n[https://ghostbin.com/paste/gn8wj](https://ghostbin.com/paste/gn8wj)\n\n```sh\ncyberdream /mnt # mkdir -pv /mnt/pi{boot,root}\nmkdir: created directory 'piboot'\nmkdir: created directory 'piroot'\ncyberdream /mnt # mount -v /dev/mmcblk0p1 /mnt/piboot\nmount: /dev/mmcblk0p1 mounted on /mnt/piboot.\ncyberdream /mnt # \ncyberdream /mnt # mount -v /dev/mmcblk0p3 /mnt/piroot\nmount: /dev/mmcblk0p3 mounted on /mnt/piroot.\ncyberdream /mnt # cd /home/taglio/Sources/Rpi3/firmware\ncyberdream /home/taglio/Sources/Rpi3/firmware # cp -rv boot/* /mnt/piboot/\n'boot/COPYING.linux' -> '/mnt/piboot/COPYING.linux'\n'boot/LICENCE.broadcom' -> '/mnt/piboot/LICENCE.broadcom'\n'boot/bcm2708-rpi-0-w.dtb' -> '/mnt/piboot/bcm2708-rpi-0-w.dtb'\n'boot/bcm2708-rpi-b-plus.dtb' -> '/mnt/piboot/bcm2708-rpi-b-plus.dtb'\n'boot/bcm2708-rpi-b.dtb' -> '/mnt/piboot/bcm2708-rpi-b.dtb'\n'boot/bcm2708-rpi-cm.dtb' -> '/mnt/piboot/bcm2708-rpi-cm.dtb'\n'boot/bcm2709-rpi-2-b.dtb' -> '/mnt/piboot/bcm2709-rpi-2-b.dtb'\n'boot/bcm2710-rpi-3-b-plus.dtb' -> '/mnt/piboot/bcm2710-rpi-3-b-plus.dtb'\n'boot/bcm2710-rpi-3-b.dtb' -> '/mnt/piboot/bcm2710-rpi-3-b.dtb'\n'boot/bcm2710-rpi-cm3.dtb' -> '/mnt/piboot/bcm2710-rpi-cm3.dtb'\n'boot/bootcode.bin' -> '/mnt/piboot/bootcode.bin'\n'boot/fixup.dat' -> '/mnt/piboot/fixup.dat'\n'boot/fixup_cd.dat' -> '/mnt/piboot/fixup_cd.dat'\n'boot/fixup_db.dat' -> '/mnt/piboot/fixup_db.dat'\n'boot/fixup_x.dat' -> '/mnt/piboot/fixup_x.dat'\n'boot/kernel.img' -> '/mnt/piboot/kernel.img'\n'boot/kernel7.img' -> '/mnt/piboot/kernel7.img'\n'boot/overlays' -> '/mnt/piboot/overlays'\n'boot/overlays/README' -> '/mnt/piboot/overlays/README'\n'boot/overlays/adau1977-adc.dtbo' -> '/mnt/piboot/overlays/adau1977-adc.dtbo'\n'boot/overlays/adau7002-simple.dtbo' -> '/mnt/piboot/overlays/adau7002-simple.dtbo'\n'boot/overlays/ads1015.dtbo' -> '/mnt/piboot/overlays/ads1015.dtbo'\n'boot/overlays/ads1115.dtbo' -> '/mnt/piboot/overlays/ads1115.dtbo'\n'boot/overlays/ads7846.dtbo' -> '/mnt/piboot/overlays/ads7846.dtbo'\n'boot/overlays/akkordion-iqdacplus.dtbo' -> '/mnt/piboot/overlays/akkordion-iqdacplus.dtbo'\n'boot/overlays/allo-boss-dac-pcm512x-audio.dtbo' -> '/mnt/piboot/overlays/allo-boss-dac-pcm512x-audio.dtbo'\n'boot/overlays/allo-digione.dtbo' -> '/mnt/piboot/overlays/allo-digione.dtbo'\n'boot/overlays/allo-piano-dac-pcm512x-audio.dtbo' -> '/mnt/piboot/overlays/allo-piano-dac-pcm512x-audio.dtbo'\n'boot/overlays/allo-piano-dac-plus-pcm512x-audio.dtbo' -> '/mnt/piboot/overlays/allo-piano-dac-plus-pcm512x-audio.dtbo'\n'boot/overlays/applepi-dac.dtbo' -> '/mnt/piboot/overlays/applepi-dac.dtbo'\n'boot/overlays/at86rf233.dtbo' -> '/mnt/piboot/overlays/at86rf233.dtbo'\n'boot/overlays/audioinjector-addons.dtbo' -> '/mnt/piboot/overlays/audioinjector-addons.dtbo'\n'boot/overlays/audioinjector-wm8731-audio.dtbo' -> '/mnt/piboot/overlays/audioinjector-wm8731-audio.dtbo'\n'boot/overlays/audremap.dtbo' -> '/mnt/piboot/overlays/audremap.dtbo'\n'boot/overlays/bmp085_i2c-sensor.dtbo' -> '/mnt/piboot/overlays/bmp085_i2c-sensor.dtbo'\n'boot/overlays/dht11.dtbo' -> '/mnt/piboot/overlays/dht11.dtbo'\n'boot/overlays/dionaudio-loco-v2.dtbo' -> '/mnt/piboot/overlays/dionaudio-loco-v2.dtbo'\n'boot/overlays/dionaudio-loco.dtbo' -> '/mnt/piboot/overlays/dionaudio-loco.dtbo'\n'boot/overlays/dpi18.dtbo' -> '/mnt/piboot/overlays/dpi18.dtbo'\n'boot/overlays/dpi24.dtbo' -> '/mnt/piboot/overlays/dpi24.dtbo'\n'boot/overlays/dwc-otg.dtbo' -> '/mnt/piboot/overlays/dwc-otg.dtbo'\n'boot/overlays/dwc2.dtbo' -> '/mnt/piboot/overlays/dwc2.dtbo'\n'boot/overlays/enc28j60-spi2.dtbo' -> '/mnt/piboot/overlays/enc28j60-spi2.dtbo'\n'boot/overlays/enc28j60.dtbo' -> '/mnt/piboot/overlays/enc28j60.dtbo'\n'boot/overlays/exc3000.dtbo' -> '/mnt/piboot/overlays/exc3000.dtbo'\n'boot/overlays/fe-pi-audio.dtbo' -> '/mnt/piboot/overlays/fe-pi-audio.dtbo'\n'boot/overlays/goodix.dtbo' -> '/mnt/piboot/overlays/goodix.dtbo'\n'boot/overlays/googlevoicehat-soundcard.dtbo' -> '/mnt/piboot/overlays/googlevoicehat-soundcard.dtbo'\n'boot/overlays/gpio-ir-tx.dtbo' -> '/mnt/piboot/overlays/gpio-ir-tx.dtbo'\n'boot/overlays/gpio-ir.dtbo' -> '/mnt/piboot/overlays/gpio-ir.dtbo'\n'boot/overlays/gpio-key.dtbo' -> '/mnt/piboot/overlays/gpio-key.dtbo'\n'boot/overlays/gpio-poweroff.dtbo' -> '/mnt/piboot/overlays/gpio-poweroff.dtbo'\n'boot/overlays/gpio-shutdown.dtbo' -> '/mnt/piboot/overlays/gpio-shutdown.dtbo'\n'boot/overlays/hifiberry-amp.dtbo' -> '/mnt/piboot/overlays/hifiberry-amp.dtbo'\n'boot/overlays/hifiberry-dac.dtbo' -> '/mnt/piboot/overlays/hifiberry-dac.dtbo'\n'boot/overlays/hifiberry-dacplus.dtbo' -> '/mnt/piboot/overlays/hifiberry-dacplus.dtbo'\n'boot/overlays/hifiberry-digi-pro.dtbo' -> '/mnt/piboot/overlays/hifiberry-digi-pro.dtbo'\n'boot/overlays/hifiberry-digi.dtbo' -> '/mnt/piboot/overlays/hifiberry-digi.dtbo'\n'boot/overlays/hy28a.dtbo' -> '/mnt/piboot/overlays/hy28a.dtbo'\n'boot/overlays/hy28b.dtbo' -> '/mnt/piboot/overlays/hy28b.dtbo'\n'boot/overlays/i2c-bcm2708.dtbo' -> '/mnt/piboot/overlays/i2c-bcm2708.dtbo'\n'boot/overlays/i2c-gpio.dtbo' -> '/mnt/piboot/overlays/i2c-gpio.dtbo'\n'boot/overlays/i2c-mux.dtbo' -> '/mnt/piboot/overlays/i2c-mux.dtbo'\n'boot/overlays/i2c-pwm-pca9685a.dtbo' -> '/mnt/piboot/overlays/i2c-pwm-pca9685a.dtbo'\n'boot/overlays/i2c-rtc-gpio.dtbo' -> '/mnt/piboot/overlays/i2c-rtc-gpio.dtbo'\n'boot/overlays/i2c-rtc.dtbo' -> '/mnt/piboot/overlays/i2c-rtc.dtbo'\n'boot/overlays/i2c-sensor.dtbo' -> '/mnt/piboot/overlays/i2c-sensor.dtbo'\n'boot/overlays/i2c0-bcm2708.dtbo' -> '/mnt/piboot/overlays/i2c0-bcm2708.dtbo'\n'boot/overlays/i2c1-bcm2708.dtbo' -> '/mnt/piboot/overlays/i2c1-bcm2708.dtbo'\n'boot/overlays/i2s-gpio28-31.dtbo' -> '/mnt/piboot/overlays/i2s-gpio28-31.dtbo'\n'boot/overlays/iqaudio-dac.dtbo' -> '/mnt/piboot/overlays/iqaudio-dac.dtbo'\n'boot/overlays/iqaudio-dacplus.dtbo' -> '/mnt/piboot/overlays/iqaudio-dacplus.dtbo'\n'boot/overlays/iqaudio-digi-wm8804-audio.dtbo' -> '/mnt/piboot/overlays/iqaudio-digi-wm8804-audio.dtbo'\n'boot/overlays/jedec-spi-nor.dtbo' -> '/mnt/piboot/overlays/jedec-spi-nor.dtbo'\n'boot/overlays/justboom-dac.dtbo' -> '/mnt/piboot/overlays/justboom-dac.dtbo'\n'boot/overlays/justboom-digi.dtbo' -> '/mnt/piboot/overlays/justboom-digi.dtbo'\n'boot/overlays/lirc-rpi.dtbo' -> '/mnt/piboot/overlays/lirc-rpi.dtbo'\n'boot/overlays/mbed-dac.dtbo' -> '/mnt/piboot/overlays/mbed-dac.dtbo'\n'boot/overlays/mcp23017.dtbo' -> '/mnt/piboot/overlays/mcp23017.dtbo'\n'boot/overlays/mcp23s17.dtbo' -> '/mnt/piboot/overlays/mcp23s17.dtbo'\n'boot/overlays/mcp2515-can0.dtbo' -> '/mnt/piboot/overlays/mcp2515-can0.dtbo'\n'boot/overlays/mcp2515-can1.dtbo' -> '/mnt/piboot/overlays/mcp2515-can1.dtbo'\n'boot/overlays/mcp3008.dtbo' -> '/mnt/piboot/overlays/mcp3008.dtbo'\n'boot/overlays/mcp3202.dtbo' -> '/mnt/piboot/overlays/mcp3202.dtbo'\n'boot/overlays/media-center.dtbo' -> '/mnt/piboot/overlays/media-center.dtbo'\n'boot/overlays/midi-uart0.dtbo' -> '/mnt/piboot/overlays/midi-uart0.dtbo'\n'boot/overlays/midi-uart1.dtbo' -> '/mnt/piboot/overlays/midi-uart1.dtbo'\n'boot/overlays/mmc.dtbo' -> '/mnt/piboot/overlays/mmc.dtbo'\n'boot/overlays/mpu6050.dtbo' -> '/mnt/piboot/overlays/mpu6050.dtbo'\n'boot/overlays/mz61581.dtbo' -> '/mnt/piboot/overlays/mz61581.dtbo'\n'boot/overlays/papirus.dtbo' -> '/mnt/piboot/overlays/papirus.dtbo'\n'boot/overlays/pi3-act-led.dtbo' -> '/mnt/piboot/overlays/pi3-act-led.dtbo'\n'boot/overlays/pi3-disable-bt.dtbo' -> '/mnt/piboot/overlays/pi3-disable-bt.dtbo'\n'boot/overlays/pi3-disable-wifi.dtbo' -> '/mnt/piboot/overlays/pi3-disable-wifi.dtbo'\n'boot/overlays/pi3-miniuart-bt.dtbo' -> '/mnt/piboot/overlays/pi3-miniuart-bt.dtbo'\n'boot/overlays/pibell.dtbo' -> '/mnt/piboot/overlays/pibell.dtbo'\n'boot/overlays/piscreen.dtbo' -> '/mnt/piboot/overlays/piscreen.dtbo'\n'boot/overlays/piscreen2r.dtbo' -> '/mnt/piboot/overlays/piscreen2r.dtbo'\n'boot/overlays/pisound.dtbo' -> '/mnt/piboot/overlays/pisound.dtbo'\n'boot/overlays/pitft22.dtbo' -> '/mnt/piboot/overlays/pitft22.dtbo'\n'boot/overlays/pitft28-capacitive.dtbo' -> '/mnt/piboot/overlays/pitft28-capacitive.dtbo'\n'boot/overlays/pitft28-resistive.dtbo' -> '/mnt/piboot/overlays/pitft28-resistive.dtbo'\n'boot/overlays/pitft35-resistive.dtbo' -> '/mnt/piboot/overlays/pitft35-resistive.dtbo'\n'boot/overlays/pps-gpio.dtbo' -> '/mnt/piboot/overlays/pps-gpio.dtbo'\n'boot/overlays/pwm-2chan.dtbo' -> '/mnt/piboot/overlays/pwm-2chan.dtbo'\n'boot/overlays/pwm-ir-tx.dtbo' -> '/mnt/piboot/overlays/pwm-ir-tx.dtbo'\n'boot/overlays/pwm.dtbo' -> '/mnt/piboot/overlays/pwm.dtbo'\n'boot/overlays/qca7000.dtbo' -> '/mnt/piboot/overlays/qca7000.dtbo'\n'boot/overlays/rotary-encoder.dtbo' -> '/mnt/piboot/overlays/rotary-encoder.dtbo'\n'boot/overlays/rpi-backlight.dtbo' -> '/mnt/piboot/overlays/rpi-backlight.dtbo'\n'boot/overlays/rpi-cirrus-wm5102.dtbo' -> '/mnt/piboot/overlays/rpi-cirrus-wm5102.dtbo'\n'boot/overlays/rpi-dac.dtbo' -> '/mnt/piboot/overlays/rpi-dac.dtbo'\n'boot/overlays/rpi-display.dtbo' -> '/mnt/piboot/overlays/rpi-display.dtbo'\n'boot/overlays/rpi-ft5406.dtbo' -> '/mnt/piboot/overlays/rpi-ft5406.dtbo'\n'boot/overlays/rpi-proto.dtbo' -> '/mnt/piboot/overlays/rpi-proto.dtbo'\n'boot/overlays/rpi-sense.dtbo' -> '/mnt/piboot/overlays/rpi-sense.dtbo'\n'boot/overlays/rpi-tv.dtbo' -> '/mnt/piboot/overlays/rpi-tv.dtbo'\n'boot/overlays/rra-digidac1-wm8741-audio.dtbo' -> '/mnt/piboot/overlays/rra-digidac1-wm8741-audio.dtbo'\n'boot/overlays/sc16is750-i2c.dtbo' -> '/mnt/piboot/overlays/sc16is750-i2c.dtbo'\n'boot/overlays/sc16is752-i2c.dtbo' -> '/mnt/piboot/overlays/sc16is752-i2c.dtbo'\n'boot/overlays/sc16is752-spi1.dtbo' -> '/mnt/piboot/overlays/sc16is752-spi1.dtbo'\n'boot/overlays/sdhost.dtbo' -> '/mnt/piboot/overlays/sdhost.dtbo'\n'boot/overlays/sdio-1bit.dtbo' -> '/mnt/piboot/overlays/sdio-1bit.dtbo'\n'boot/overlays/sdio.dtbo' -> '/mnt/piboot/overlays/sdio.dtbo'\n'boot/overlays/sdtweak.dtbo' -> '/mnt/piboot/overlays/sdtweak.dtbo'\n'boot/overlays/smi-dev.dtbo' -> '/mnt/piboot/overlays/smi-dev.dtbo'\n'boot/overlays/smi-nand.dtbo' -> '/mnt/piboot/overlays/smi-nand.dtbo'\n'boot/overlays/smi.dtbo' -> '/mnt/piboot/overlays/smi.dtbo'\n'boot/overlays/spi-gpio35-39.dtbo' -> '/mnt/piboot/overlays/spi-gpio35-39.dtbo'\n'boot/overlays/spi-rtc.dtbo' -> '/mnt/piboot/overlays/spi-rtc.dtbo'\n'boot/overlays/spi0-cs.dtbo' -> '/mnt/piboot/overlays/spi0-cs.dtbo'\n'boot/overlays/spi0-hw-cs.dtbo' -> '/mnt/piboot/overlays/spi0-hw-cs.dtbo'\n'boot/overlays/spi1-1cs.dtbo' -> '/mnt/piboot/overlays/spi1-1cs.dtbo'\n'boot/overlays/spi1-2cs.dtbo' -> '/mnt/piboot/overlays/spi1-2cs.dtbo'\n'boot/overlays/spi1-3cs.dtbo' -> '/mnt/piboot/overlays/spi1-3cs.dtbo'\n'boot/overlays/spi2-1cs.dtbo' -> '/mnt/piboot/overlays/spi2-1cs.dtbo'\n'boot/overlays/spi2-2cs.dtbo' -> '/mnt/piboot/overlays/spi2-2cs.dtbo'\n'boot/overlays/spi2-3cs.dtbo' -> '/mnt/piboot/overlays/spi2-3cs.dtbo'\n'boot/overlays/superaudioboard.dtbo' -> '/mnt/piboot/overlays/superaudioboard.dtbo'\n'boot/overlays/sx150x.dtbo' -> '/mnt/piboot/overlays/sx150x.dtbo'\n'boot/overlays/tinylcd35.dtbo' -> '/mnt/piboot/overlays/tinylcd35.dtbo'\n'boot/overlays/uart0.dtbo' -> '/mnt/piboot/overlays/uart0.dtbo'\n'boot/overlays/uart1.dtbo' -> '/mnt/piboot/overlays/uart1.dtbo'\n'boot/overlays/upstream-aux-interrupt.dtbo' -> '/mnt/piboot/overlays/upstream-aux-interrupt.dtbo'\n'boot/overlays/upstream.dtbo' -> '/mnt/piboot/overlays/upstream.dtbo'\n'boot/overlays/vc4-fkms-v3d.dtbo' -> '/mnt/piboot/overlays/vc4-fkms-v3d.dtbo'\n'boot/overlays/vc4-kms-v3d.dtbo' -> '/mnt/piboot/overlays/vc4-kms-v3d.dtbo'\n'boot/overlays/vga666.dtbo' -> '/mnt/piboot/overlays/vga666.dtbo'\n'boot/overlays/w1-gpio-pullup.dtbo' -> '/mnt/piboot/overlays/w1-gpio-pullup.dtbo'\n'boot/overlays/w1-gpio.dtbo' -> '/mnt/piboot/overlays/w1-gpio.dtbo'\n'boot/overlays/wittypi.dtbo' -> '/mnt/piboot/overlays/wittypi.dtbo'\n'boot/start.elf' -> '/mnt/piboot/start.elf'\n'boot/start_cd.elf' -> '/mnt/piboot/start_cd.elf'\n'boot/start_db.elf' -> '/mnt/piboot/start_db.elf'\n'boot/start_x.elf' -> '/mnt/piboot/start_x.elf'\ncyberdream /home/taglio/Sources/Rpi3/firmware # cd ../kbuild/linux/\ncyberdream /home/taglio/Sources/Rpi3/kbuild/linux # rm /mnt/piboot/*.dtb\ncyberdream /home/taglio/Sources/Rpi3/kbuild/linux # cp -v arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb /mnt/piboot/\n'arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dtb' -> '/mnt/piboot/bcm2710-rpi-3-b-plus.dtb'\ncyberdream /home/taglio/Sources/Rpi3/kbuild/linux # cp -v arch/arm64/boot/dts/broadcom/bcm{2710,2837}-rpi-3-b.dtb /mnt/piboot/\n'arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb' -> '/mnt/piboot/bcm2710-rpi-3-b.dtb'\n'arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dtb' -> '/mnt/piboot/bcm2837-rpi-3-b.dtb'\ncyberdream /home/taglio/Sources/Rpi3/kbuild/linux #\t\n```\n\nGoing ahead with the kernel and its related modules; we can see that we invoque `modules_install` option of `make` declaring three variables:\n\n1. `ARCH=arm64`\n2. `CROSS_COMPILE=aarch64-unknown-linux-gnu-`\n3. `INSTALL_MOD_PATH=\"/mnt/piroot\"`\n\nYou can appreciate the output of the entire command here:\n\n[https://ghostbin.com/paste/okxwe](https://ghostbin.com/paste/okxwe)\n\n```sh\ncyberdream /home/taglio/Sources/Rpi3/kbuild/linux # cp -v arch/arm64/boot/Image /mnt/piboot/kernel8.img\n'arch/arm64/boot/Image' -> '/mnt/piboot/kernel8.img'\ncyberdream /home/taglio/Sources/Rpi3/kbuild/linux # make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- modules_install INSTALL_MOD_PATH=\"/mnt/piroot\"\n.\n.\n.\nDEPMOD 4.14.34-v8+\ncyberdream /home/taglio/Sources/Rpi3/kbuild/linux #\n```\n\nThe result of an `ls` of the `/boot` carpet is:\n\n```sh\ncyberdream /mnt/piboot # ls -al\ntotal 34634\ndrwxr-xr-x 3 root root 2048 Apr 18 15:13 .\ndrwxr-xr-x 7 root root 4096 Apr 18 09:59 ..\n-rwxr-xr-x 1 root root 18693 Apr 18 13:47 COPYING.linux\n-rwxr-xr-x 1 root root 1494 Apr 18 13:47 LICENCE.broadcom\n-rwxr-xr-x 1 root root 24519 Apr 18 15:13 bcm2710-rpi-3-b-plus.dtb\n-rwxr-xr-x 1 root root 24256 Apr 18 15:13 bcm2710-rpi-3-b.dtb\n-rwxr-xr-x 1 root root 17314 Apr 18 15:13 bcm2837-rpi-3-b.dtb\n-rwxr-xr-x 1 root root 52064 Apr 18 13:47 bootcode.bin\n-rwxr-xr-x 1 root root 6575 Apr 18 13:47 fixup.dat\n-rwxr-xr-x 1 root root 2599 Apr 18 13:47 fixup_cd.dat\n-rwxr-xr-x 1 root root 9726 Apr 18 13:47 fixup_db.dat\n-rwxr-xr-x 1 root root 9730 Apr 18 13:47 fixup_x.dat\n-rwxr-xr-x 1 root root 4676016 Apr 18 13:47 kernel.img\n-rwxr-xr-x 1 root root 4922144 Apr 18 13:47 kernel7.img\n-rwxr-xr-x 1 root root 13300224 Apr 18 17:46 kernel8.img\ndrwxr-xr-x 2 root root 11264 Apr 18 13:47 overlays\n-rwxr-xr-x 1 root root 2825124 Apr 18 13:47 start.elf\n-rwxr-xr-x 1 root root 673444 Apr 18 13:47 start_cd.elf\n-rwxr-xr-x 1 root root 4968292 Apr 18 13:47 start_db.elf\n-rwxr-xr-x 1 root root 3912164 Apr 18 13:47 start_x.elf\ncyberdream /mnt/piboot #\n```\n\nNext we're going to extract the `stage3` tarball in the `/` mounted over `/mnt/piroot`.\n\nWe're going to use `tar` in an advaced mode:\n\n- `-x`: Extract files from an archive.\n- `-v`: Verbosely list files processed.\n- `-j`: Filter the archive through bzip2.\n- `-p`: Extract information about file permissions.\n- `-f`: Use archive file or device ARCHIVE (`stage3-arm64-20180305.tar.bz2`)\n- `--xattrs-include`: Specify the include PATTERN for xattr keys. (`*.*`)\n- `--numeric-owner`: Always use numbers for user/group names.\n\nFull output here:\n\n[https://ghostbin.com/paste/yvs2x](https://ghostbin.com/paste/yvs2x)\n\n```sh\ncyberdream /mnt/piroot # tar xvjpf /home/taglio/Sources/Rpi3/stage3/stage3-arm64-20180305.tar.bz2 --xattrs-include='*.*' --numeric-owner\n.\n.\n.\ncyberdream /mnt/piroot #\n```\n\n### The portage latest snapshot\n\nThe next step is to install a **Portage** snapshot, a set of files updated on a daily basis informing Portage what software is available to install, what profiles are available, and so on.\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/portage $ wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2{,.gpgsig,.md5sum}\n--2018-04-20 10:15:21-- http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2\nResolving distfiles.gentoo.org... 64.50.236.52, 140.211.166.134, 137.226.34.46, ...\nConnecting to distfiles.gentoo.org|64.50.236.52|:80... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 52621953 (50M) [application/x-bzip2]\nSaving to: ‘portage-latest.tar.bz2’\n\nportage-latest.tar. 100%[===================>] 50.18M 6.93MB/s in 9.5s \n\n2018-04-20 10:15:31 (5.30 MB/s) - ‘portage-latest.tar.bz2’ saved [52621953/52621953]\n\n--2018-04-20 10:15:31-- http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2.gpgsig\nReusing existing connection to distfiles.gentoo.org:80.\nHTTP request sent, awaiting response... 200 OK\nLength: 963 [application/x-bzip2]\nSaving to: ‘portage-latest.tar.bz2.gpgsig’\n\nportage-latest.tar. 100%[===================>] 963 --.-KB/s in 0s \n\n2018-04-20 10:15:31 (297 MB/s) - ‘portage-latest.tar.bz2.gpgsig’ saved [963/963]\n\n--2018-04-20 10:15:31-- http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2.md5sum\nReusing existing connection to distfiles.gentoo.org:80.\nHTTP request sent, awaiting response... 200 OK\nLength: 57 [application/x-bzip2]\nSaving to: ‘portage-latest.tar.bz2.md5sum’\n\nportage-latest.tar. 100%[===================>] 57 --.-KB/s in 0s \n\n2018-04-20 10:15:31 (21.2 MB/s) - ‘portage-latest.tar.bz2.md5sum’ saved [57/57]\n\nFINISHED --2018-04-20 10:15:31--\nTotal wall clock time: 10s\nDownloaded: 3 files, 50M in 9.5s (5.30 MB/s)\ntaglio@cyberdream ~/Sources/Rpi3/portage $ \n```\n\nNext to verify the gpg signature we're going to fetch with `gpg` the latest key from the *Gentoo Portage Snapshot signing Key (Automated signing key)*. We have to find the `Key ID` in the official page de Release Engeneer:\n\n[https://wiki.gentoo.org/wiki/Project:RelEng#Keys](https://wiki.gentoo.org/wiki/Project:RelEng#Keys)\n\nIn our case is `0xDB6B8C1F96D8BF6D`. \n\nVarious options to launch with `gpg`:\n\n- `--search`: search for keys on a keyserver.\n- `1`: public key imported.\n- `--edit-key`: Present a menu which enables you to do most of the key management related tasks. \n- `fpr`: show key fingerprint.\n- `trust`: change the ownertrust.\n- `5`: ultimate trust.\n- `--verify`: Assume that the first argument is a signed file and verify it\n without generating any output. With no arguments, the signature\n packet is read from STDIN. If only one argument is given, the\n specified file is expected to include a complete signature.\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/portage $ gpg --search 0xDB6B8C1F96D8BF6D\ngpg: data source: http://37.191.226.104:11371\n(1)\tGentoo Portage Snapshot Signing Key (Automated Signing Key)\n\t 4096 bit RSA key 0xDB6B8C1F96D8BF6D, created: 2011-11-25, expires: 2019-01-01\nKeys 1-1 of 1 for \"0xDB6B8C1F96D8BF6D\". Enter number(s), N)ext, or Q)uit > 1\ngpg: key 0xDB6B8C1F96D8BF6D: 13 signatures not checked due to missing keys\ngpg: key 0xDB6B8C1F96D8BF6D: public key \"Gentoo Portage Snapshot Signing Key (Automated Signing Key)\" imported\ngpg: marginals needed: 3 completes needed: 1 trust model: pgp\ngpg: depth: 0 valid: 3 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 3u\ngpg: next trustdb check due at 2019-08-22\ngpg: Total number processed: 1\ngpg: imported: 1\ntaglio@cyberdream ~/Sources/Rpi3/portage \ntaglio@cyberdream ~/Sources/Rpi3/portage $ gpg --edit-key 0xDB6B8C1F96D8BF6D\ngpg (GnuPG) 2.2.6; Copyright (C) 2018 Free Software Foundation, Inc.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\n\npub rsa4096/0xDB6B8C1F96D8BF6D\n created: 2011-11-25 expires: 2019-01-01 usage: C \n trust: unknown validity: unknown\nsub rsa4096/0xEC590EEAC9189250\n created: 2011-11-25 expires: 2019-01-01 usage: S \n[ unknown] (1). Gentoo Portage Snapshot Signing Key (Automated Signing Key)\ngpg> fpr\npub rsa4096/0xDB6B8C1F96D8BF6D 2011-11-25 Gentoo Portage Snapshot Signing Key (Automated Signing Key)\n Primary key fingerprint: DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D\n\ngpg> trust\npub rsa4096/0xDB6B8C1F96D8BF6D\n created: 2011-11-25 expires: 2019-01-01 usage: C \n trust: unknown validity: unknown\nsub rsa4096/0xEC590EEAC9189250\n created: 2011-11-25 expires: 2019-01-01 usage: S \n[ unknown] (1). Gentoo Portage Snapshot Signing Key (Automated Signing Key)\n\nPlease decide how far you trust this user to correctly verify other users' keys\n(by looking at passports, checking fingerprints from different sources, etc.)\n\n 1 = I don't know or won't say\n 2 = I do NOT trust\n 3 = I trust marginally\n 4 = I trust fully\n 5 = I trust ultimately\n m = back to the main menu\n\nYour decision? 5\nDo you really want to set this key to ultimate trust? (y/N) y\n\npub rsa4096/0xDB6B8C1F96D8BF6D\n created: 2011-11-25 expires: 2019-01-01 usage: C \n trust: ultimate validity: unknown\nsub rsa4096/0xEC590EEAC9189250\n created: 2011-11-25 expires: 2019-01-01 usage: S \n[unknown] (1). Gentoo Portage Snapshot Signing Key (Automated Signing Key)\nPlease note that the shown key validity is not necessarily correct\nunless you restart the program.\ntaglio@cyberdream ~/Sources/Rpi3/portage $ mv portage-latest.tar.bz2.gpgsig portage-latest.tar.bz2.sig\ntaglio@cyberdream ~/Sources/Rpi3/portage $ gpg --verify portage-latest.tar.bz2.sig\ngpg: assuming signed data in 'portage-latest.tar.bz2'\ngpg: Signature made Fri 20 Apr 2018 02:51:21 CEST\ngpg: using RSA key E1D6ABB63BFCFB4BA02FDF1CEC590EEAC9189250\ngpg: Good signature from \"Gentoo Portage Snapshot Signing Key (Automated Signing Key)\" [ultimate]\nPrimary key fingerprint: DCD0 5B71 EAB9 4199 527F 44AC DB6B 8C1F 96D8 BF6D\n Subkey fingerprint: E1D6 ABB6 3BFC FB4B A02F DF1C EC59 0EEA C918 9250\ntaglio@cyberdream ~/Sources/Rpi3/portage $ \n\n```\n\n`untar` the tarball following the last `tar` command: \n\n```sh\ncyberdream /mnt/piroot/usr # tar xvjpf /home/taglio/Sources/Rpi3/portage/portage-latest.tar.bz2 --xattrs-include='*.*' --numeric-owner\n.\n.\n.\ncyberdream /mnt/piroot/usr #\n```\n\n### Wireless and bluetooth closed source firmware\n\nThe chipset of the wi-fi interface that come inside the single-board Raspberry Pi 3 is a **Broadcom BRM43430** and needs two files to be present under `/lib/firmware/brcm`. \n\nThe `.bin` is a [*binary blob*](https://en.wikipedia.org/wiki/Binary_blob) closed source piece of software. We can download it from the GitHub.com repository of the [**armbian**](https://www.armbian.com/) linux distribution. `brcmfmac` is a *Full-mac* driver we can read more about it here:\n\n[https://wireless.wiki.kernel.org/en/developers/documentation/glossary](https://wireless.wiki.kernel.org/en/developers/documentation/glossary)\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ wget https://raw.GitHubusercontent.com/armbian/firmware/master/brcm/brcmfmac43430-sdio.txt\n--2018-04-25 02:18:14-- https://raw.GitHubusercontent.com/armbian/firmware/master/brcm/brcmfmac43430-sdio.txt\nResolving raw.GitHubusercontent.com... 151.101.36.133\nConnecting to raw.GitHubusercontent.com|151.101.36.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 902 [text/plain]\nSaving to: ‘brcmfmac43430-sdio.txt’\n\nbrcmfmac43430-sdio. 100%[===================>] 902 --.-KB/s in 0s \n\n2018-04-25 02:18:15 (309 MB/s) - ‘brcmfmac43430-sdio.txt’ saved [902/902]\n\ntaglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ wget https://GitHub.com/armbian/firmware/raw/master/brcm/brcmfmac43430-sdio.bin\n--2018-04-25 02:21:43-- https://GitHub.com/armbian/firmware/raw/master/brcm/brcmfmac43430-sdio.bin\nResolving GitHub.com... 192.30.253.112, 192.30.253.113\nConnecting to GitHub.com|192.30.253.112|:443... connected.\nHTTP request sent, awaiting response... 302 Found\nLocation: https://raw.GitHubusercontent.com/armbian/firmware/master/brcm/brcmfmac43430-sdio.bin [following]\n--2018-04-25 02:21:44-- https://raw.GitHubusercontent.com/armbian/firmware/master/brcm/brcmfmac43430-sdio.bin\nResolving raw.GitHubusercontent.com... 151.101.36.133\nConnecting to raw.GitHubusercontent.com|151.101.36.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 416477 (407K) [application/octet-stream]\nSaving to: ‘brcmfmac43430-sdio.bin’\n\nbrcmfmac43430-sdio. 100%[===================>] 406.72K 1.61MB/s in 0.2s \n\n2018-04-25 02:21:44 (1.61 MB/s) - ‘brcmfmac43430-sdio.bin’ saved [416477/416477]\n\ntaglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ \ncyberdream /mnt/piroot/lib # mkdir -pv firmware/brcm\nmkdir: created directory 'firmware'\nmkdir: created directory 'firmware/brcm'\ncyberdream /mnt/piroot/lib # cp -v /home/taglio/Sources/Rpi3/wireless_firmware/brcmfmac43430-sdio.* firmware/brcm/\n'/home/taglio/Sources/Rpi3/wireless_firmware/brcmfmac43430-sdio.bin' -> 'firmware/brcm/brcmfmac43430-sdio.bin'\n'/home/taglio/Sources/Rpi3/wireless_firmware/brcmfmac43430-sdio.txt' -> 'firmware/brcm/brcmfmac43430-sdio.txt'\ncyberdream /mnt/piroot/lib # \n```\n\nNext we have to fetch another *bynary blob* for the bluetooth chip that is a **BCM2837** and it is connected to the [**hardware UART**](https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter). We can do it from the Raspbian [bluez-firmware](https://GitHub.com/RPi-Distro/bluez-firmware/tree/master/broadcom) GitHub repository.\n\n```sh\ntaglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ wget https://raw.githubusercontent.com/RPi-Distro/bluez-firmware/master/broadcom/BCM43430A1.hcd\n--2018-04-25 02:51:22-- https://raw.githubusercontent.com/RPi-Distro/bluez-firmware/master/broadcom/BCM43430A1.hcd\nResolving raw.githubusercontent.com... 151.101.36.133\nConnecting to raw.githubusercontent.com|151.101.36.133|:443... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 36264 (35K) [application/octet-stream]\nSaving to: ‘BCM43430A1.hcd’\n\nBCM43430A1.hcd 100%[===================>] 35.41K --.-KB/s in 0.06s \n\n2018-04-25 02:51:22 (629 KB/s) - ‘BCM43430A1.hcd’ saved [36264/36264]\n\ntaglio@cyberdream ~/Sources/Rpi3/wireless_firmware $ \ncyberdream /mnt/piroot/lib # cp -v /home/taglio/Sources/Rpi3/wireless_firmware/BCM43430A1.hcd firmware/brcm/\n'/home/taglio/Sources/Rpi3/wireless_firmware/BCM43430A1.hcd' -> 'firmware/brcm/BCM43430A1.hcd'\ncyberdream /mnt/piroot/lib #\n```\n\n### Custom config files\n\nWe've to change some files under `/mnt/piroot` and `/mnt/piboot` to make the *first run* possible. They are:\n\n- `etc/fstab`: static information about the filesystems.\n- `config.txt`: more information at [https://elinux.org/RPiconfig](https://elinux.org/RPiconfig)\n- `cmdline.txt`: more information at [https://elinux.org/RPi_cmdline.txt](https://elinux.org/RPi_cmdline.txt)\n- `etc/conf.d/keymaps`: keyboard table descriptions for loadkeys and dumpkeys.\n- `etc/shadow`: shadowed password file (set `root` passwod to *raspberry*).\n\n```sh\ncyberdream /mnt/piroot/etc # cat > fstab << EOF\n> /dev/mmcblk0p1 /boot vfat noauto,noatime 1 2\n> /dev/mmcblk0p2 none swap sw 0 0\n> /dev/mmcblk0p3 / ext4 noatime 0 1\n> EOF\ncyberdream /mnt/piroot/etc # \n```\n\n```sh\ncyberdream /mnt/piboot # cat > config.txt << EOF\n> # have a properly sized image\n> disable_overscan=1\n> \n> # lets have the VC4 hardware accelerated video\n> dtoverlay=vc4-fkms-v3d\n> \n> # for sound over HDMI\n> hdmi_drive=2\n> \n> # Enable audio (loads snd_bcm2835)\n> dtparam=audioon\n> \n> # gpu_mem is for closed-source driver only; since we are only using the\n> # open-source driver here, set low\n> gpu_mem=16\n> EOF\ncyberdream /mnt/piboot # \n```\n\n```sh\ncyberdream /mnt/piboot # cat > cmdline.txt << EOF\n> root=/dev/mmcblk0p3 rootfstype=ext4 rootwait\n> EOF\ncyberdream /mnt/piboot #\n```\n\n```sh\ncyberdream /mnt/piroot/etc/conf.d # cat > keymaps << EOF\n> # Use keymap to specify the default console keymap. There is a complete tree\n> # of keymaps in /usr/share/keymaps to choose from.\n> keymap='es'\n> \n> # Should we first load the 'windowkeys' console keymap? Most x86 users will\n> # say \"yes\" here. Note that non-x86 users should leave it as \"no\".\n> # Loading this keymap will enable VT switching (like ALT+Left/Right)\n> # using the special windows keys on the linux console.\n> windowkeys=\"YES\"\n> \n> # The maps to load for extended keyboards. Most users will leave this as is.\n> extended_keymaps=\"\"\n> #extended_keymaps=\"backspace keypad euro2\"\n> \n> # Tell dumpkeys(1) to interpret character action codes to be\n> # from the specified character set.\n> # This only matters if you set unicode=\"yes\" in /etc/rc.conf.\n> # For a list of valid sets, run `dumpkeys --help`\n> dumpkeys_charset=\"\"\n> \n> # Some fonts map AltGr-E to the currency symbol instead of the Euro.\n> # To fix this, set to \"yes\"\n> fix_euro=\"NO\"\n> EOF\ncyberdream /mnt/piroot/etc/conf.d #\n```\n\n```sh\ncyberdream /mnt/piroot/etc # cat > shadow << EOF\n>\nroot:/Td5iP$/7Asdgq0ux2sgNkklnndcG4g3493kUYfrrdenBXjxBxEsoLneJpDAwOyX/kkpFB4pU5dlhHEyN0SK4eh/WpmO0:10770:0:::::\n> halt:*:9797:0:::::\n> operator:*:9797:0:::::\n> shutdown:*:9797:0:::::\n> sync:*:9797:0:::::\n> bin:*:9797:0:::::\n> daemon:*:9797:0:::::\n> adm:*:9797:0:::::\n> lp:*:9797:0:::::\n> news:*:9797:0:::::\n> uucp:*:9797:0:::::\n> portage:*:9797:0:::::\n> nobody:*:9797:0:::::\n> man:!:17595::::::\n> sshd:!:17595::::::\n> EOF\ncyberdream /mnt/piroot/etc #\n```\n\n### First boot\n\n`umount` and `sync` the *microSD* partition and insert it in the **Raspberry pi 3** slot.\n\n```sh\ncyberdream ~ # umount -v /mnt/piroot/\numount: /mnt/piroot/ unmounted\ncyberdream ~ # umount -v /mnt/piboot/\numount: /mnt/piboot/ unmounted\ncyberdream ~ # sync\ncyberdream ~ # \n```\n\nConnect an *HDMI* cable to a monitor and a *USB* mouse and keyboard to the **Raspberry pi 3** ports.",
"json_metadata": "{\"tags\":[\"gentoo\",\"raspberry\",\"arm\",\"arm64\",\"crosscompile\"],\"image\":[\"https://images6.alphacoders.com/480/thumb-1920-480025.jpg\",\"https://c402277.ssl.cf1.rackcdn.com/photos/1560/images/story_full_width/HI_292876WHYMatter1.jpg?1345547525\",\"https://www.urbanseedling.com/wp-content/uploads/2015/03/Raspberry-Festival--600x600.jpg\",\"https://raw.GitHubusercontent.com/sakaki-/resources/master/raspberrypi/pi3/demo-screenshot-small-3.jpg\"],\"links\":[\"https://www.gentoo.org\",\"https://packages.gentoo.org/packages/sys-devel/crossdev\",\"https://wiki.gentoo.org/wiki/Project:Overlays/Overlays_guide\",\"https://wiki.gentoo.org/wiki/Portage\",\"https://en.wikipedia.org/wiki/DEC_Alpha\",\"https://en.wikipedia.org/wiki/PA-RISC\",\"https://en.wikipedia.org/wiki/X86\",\"https://en.wikipedia.org/wiki/MIPS_architecture\",\"https://en.wikipedia.org/wiki/PowerPC\",\"https://en.wikipedia.org/wiki/SPARC\",\"https://en.wikipedia.org/wiki/SuperH\",\"https://en.wikipedia.org/wiki/ARM_architecture\",\"https://en.wikipedia.org/wiki/IA-64\",\"https://en.wikipedia.org/wiki/Motorola_68000_series\",\"https://en.wikipedia.org/wiki/Z/Architecture\",\"https://www.raspberrypi.org/\",\"https://en.wikipedia.org/wiki/Single-board_computer\",\"https://en.wikipedia.org/wiki/Raspberry_Pi_Foundation\",\"https://xfce.org/\",\"https://GitHub.com/raspberrypi/linux\",\"https://en.wikipedia.org/wiki/Das_U-Boot\",\"https://ghostbin.com/paste/cg62q\",\"https://ghostbin.com/paste/damwc\",\"https://simple.wikipedia.org/wiki/MicroSD\",\"https://en.wikipedia.org/wiki/Disk_partitioning\",\"https://en.wikipedia.org/wiki/Extended_file_system\",\"https://wiki.gentoo.org/wiki/System_set_(Portage)\",\"https://www.reddit.com/r/Gentoo/comments/8d415b/errata/\",\"https://events.static.linuxfound.org/sites/events/files/slides/petazzoni-device-tree-dummies\",\"https://ghostbin.com/paste/gn8wj\",\"https://ghostbin.com/paste/okxwe\",\"https://ghostbin.com/paste/yvs2x\",\"https://wiki.gentoo.org/wiki/Project:RelEng#Keys\",\"https://en.wikipedia.org/wiki/Binary_blob\",\"https://www.armbian.com/\",\"https://wireless.wiki.kernel.org/en/developers/documentation/glossary\",\"https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter\",\"https://GitHub.com/RPi-Distro/bluez-firmware/tree/master/broadcom\",\"https://elinux.org/RPiconfig\",\"https://elinux.org/RPi_cmdline.txt\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
}
]
}scottcbusinesssent 0.001 SBD to @npna- "Hey @npna! You rock! I appreciate you :)"2018/04/08 08:37:27
scottcbusinesssent 0.001 SBD to @npna- "Hey @npna! You rock! I appreciate you :)"
2018/04/08 08:37:27
| from | scottcbusiness |
| to | npna |
| amount | 0.001 SBD |
| memo | Hey @npna! You rock! I appreciate you :) |
| Transaction Info | Block #21382297/Trx b35e1d8e40ccd0dc0fee63f40da0a09399a09122 |
View Raw JSON Data
{
"trx_id": "b35e1d8e40ccd0dc0fee63f40da0a09399a09122",
"block": 21382297,
"trx_in_block": 4,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-08T08:37:27",
"op": [
"transfer",
{
"from": "scottcbusiness",
"to": "npna",
"amount": "0.001 SBD",
"memo": "Hey @npna! You rock! I appreciate you :)"
}
]
}scottychamssent 0.001 SBD to @npna- "Hey @npna! You are awesome, special, and unique! :)"2018/04/08 08:35:57
scottychamssent 0.001 SBD to @npna- "Hey @npna! You are awesome, special, and unique! :)"
2018/04/08 08:35:57
| from | scottychams |
| to | npna |
| amount | 0.001 SBD |
| memo | Hey @npna! You are awesome, special, and unique! :) |
| Transaction Info | Block #21382267/Trx 4be48ebfd3df2d83a80fa17b63a009c1f601dcf6 |
View Raw JSON Data
{
"trx_id": "4be48ebfd3df2d83a80fa17b63a009c1f601dcf6",
"block": 21382267,
"trx_in_block": 9,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-08T08:35:57",
"op": [
"transfer",
{
"from": "scottychams",
"to": "npna",
"amount": "0.001 SBD",
"memo": "Hey @npna! You are awesome, special, and unique! :)"
}
]
}npnafollowed @abrockman2018/04/08 02:46:54
npnafollowed @abrockman
2018/04/08 02:46:54
| required auths | [] |
| required posting auths | ["npna"] |
| id | follow |
| json | ["follow",{"follower":"npna","following":"abrockman","what":["blog"]}] |
| Transaction Info | Block #21375287/Trx ea5ea2a68bc638b59956aff083b14a4d816fdf35 |
View Raw JSON Data
{
"trx_id": "ea5ea2a68bc638b59956aff083b14a4d816fdf35",
"block": 21375287,
"trx_in_block": 25,
"op_in_trx": 0,
"virtual_op": 0,
"timestamp": "2018-04-08T02:46:54",
"op": [
"custom_json",
{
"required_auths": [],
"required_posting_auths": [
"npna"
],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"npna\",\"following\":\"abrockman\",\"what\":[\"blog\"]}]"
}
]
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress28.93%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779078978
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779078978
},
"rc_account": {
"account": "npna",
"rc_manabar": {
"current_mana": "10164408779",
"last_update_time": 1779078978
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "10164408779"
}
}Account Metadata
| POSTING JSON METADATA | |
| profile | {"profile_image":"https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg","name":"Riccardo Giuntoli","about":"#unix #security #hacking #cryptography #cryptocurrency","location":"NPNA - No Place No address","website":"https://www.facebook.com/noplacenoaddress/","cover_image":"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95"} |
| JSON METADATA | |
| profile | {"profile_image":"https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg","name":"Riccardo Giuntoli","about":"#unix #security #hacking #cryptography #cryptocurrency","location":"NPNA - No Place No address","website":"https://www.facebook.com/noplacenoaddress/","cover_image":"https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95"} |
{
"posting_json_metadata": {
"profile": {
"profile_image": "https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg",
"name": "Riccardo Giuntoli",
"about": "#unix #security #hacking #cryptography #cryptocurrency",
"location": "NPNA - No Place No address",
"website": "https://www.facebook.com/noplacenoaddress/",
"cover_image": "https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95"
}
},
"json_metadata": {
"profile": {
"profile_image": "https://cdn.steemitimages.com/DQmf8Qobxw8Jc48R4vFq711Fz8qgtxVVjYD7sNuXskn7yQT/35525685_1111753545641609_482309331098796032_n.jpg",
"name": "Riccardo Giuntoli",
"about": "#unix #security #hacking #cryptography #cryptocurrency",
"location": "NPNA - No Place No address",
"website": "https://www.facebook.com/noplacenoaddress/",
"cover_image": "https://scontent.fmad3-5.fna.fbcdn.net/v/t31.0-8/26114446_10215399147954469_5308668765899852978_o.jpg?oh=da7cbcacaba7b8dd7a8a01293a0fe355&oe=5B4B3E95"
}
}
}Auth Keys
Owner
Single Signature
Public Keys
STM7vyeY6PzJmukEPGR56jm8tTGUnZs99H5x5CGekqMHy38uzV25H1/1
Active
Single Signature
Public Keys
STM6BryaonxN5ePuQrXGjAYUsFE6Fg6MTmgvu5rL5HD3Bz4dPL7yY1/1
Posting
Single Signature
Public Keys
STM6KvCCFTGqv2VHs9ED8den2s2VHt6yvZpkjLfn7q3WC8MZsGHYF1/1
Memo
STM585cVbcj3tEMi1wLPEHyQYn8XGUo8dCzRdYpexehDEirMFFSun
{
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7vyeY6PzJmukEPGR56jm8tTGUnZs99H5x5CGekqMHy38uzV25H",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6BryaonxN5ePuQrXGjAYUsFE6Fg6MTmgvu5rL5HD3Bz4dPL7yY",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6KvCCFTGqv2VHs9ED8den2s2VHt6yvZpkjLfn7q3WC8MZsGHYF",
1
]
]
},
"memo": "STM585cVbcj3tEMi1wLPEHyQYn8XGUo8dCzRdYpexehDEirMFFSun"
}Witness Votes
0 / 30
No active witness votes.
[]